praca_magisterska/pytania/odpowiedzi/19-mfcc-lpc-parametryzacja.md

7.2 KiB
Raw Blame History

Pytanie 19: MFCC i LPC - parametryzacja sygnału mowy

Pytanie

"Przedstawić metody wyznaczania cech (parametryzacji) sygnału mowy: MFCC (cechy mel-cepstralne) i LPC (cechy według liniowej predykcji)."

Przedmiot: EASAR (Elementy Automatycznego Sterowania i Rozpoznawania)


📚 Odpowiedź główna

1. Cel parametryzacji mowy

  • Redukcja wymiarowości: 16kHz × 16bit → ~13-40 cech/ramkę
  • Ekstrakcja informacji fonetycznej
  • Usunięcie informacji mówcy (częściowo)
  • Reprezentacja kompaktowa dla modeli (HMM, DNN)

2. MFCC (Mel-Frequency Cepstral Coefficients)

Pipeline MFCC

┌─────────────────────────────────────────────────────────────────┐
│  Sygnał mowy                                                    │
│      ↓                                                          │
│  [Pre-emphasis] ──→ y[n] = x[n] - α·x[n-1], α ≈ 0.97           │
│      ↓                                                          │
│  [Ramkowanie] ──→ 20-30ms ramki, 10ms przesunięcie             │
│      ↓                                                          │
│  [Okienkowanie] ──→ Hamming: w[n] = 0.54 - 0.46cos(2πn/N)      │
│      ↓                                                          │
│  [FFT] ──→ Widmo mocy |X(k)|²                                  │
│      ↓                                                          │
│  [Filtracja Mel] ──→ Bank filtrów trójkątnych (26-40)          │
│      ↓                                                          │
│  [Log] ──→ log(energia w pasmach)                              │
│      ↓                                                          │
│  [DCT] ──→ Discrete Cosine Transform                           │
│      ↓                                                          │
│  MFCC (12-13 współczynników)                                   │
└─────────────────────────────────────────────────────────────────┘

Skala Mel

Percepcja częstotliwości przez człowieka jest nieliniowa:

mel(f) = 2595 · log₁₀(1 + f/700)

Hz:    0    500   1000  2000  4000  8000
Mel:   0    607   1000  1500  2146  2840

      Bank filtrów Mel:
      ╱╲   ╱╲   ╱╲   ╱╲   ╱╲   ╱╲
                             ╲
   ──────────────────────────────────→ f
   0                              8000 Hz
   
   Filtry gęściej w niskich częstotliwościach

Cechy dynamiczne (Delta, Delta-Delta)

Δ MFCC (velocity):
Δc[t] = Σ_{n=1}^{N} n·(c[t+n] - c[t-n]) / (2·Σ n²)

ΔΔ MFCC (acceleration):
ΔΔc[t] = Δ(Δc[t])

Typowy wektor: 13 MFCC + 13 Δ + 13 ΔΔ = 39 cech

3. LPC (Linear Predictive Coding)

Idea

Model mowy jako filtr pobudzany:

  • Dźwięczne: pobudzenie okresowe (struny głosowe)
  • Bezdźwięczne: pobudzenie szumowe
┌─────────────────────────────────────────────────────────────────┐
│                                                                 │
│   Pobudzenie e[n]     Filtr H(z)        Sygnał mowy s[n]       │
│        ┌───┐         ┌─────────┐                               │
│   ──→  │ G │ ──────→ │ 1/A(z)  │ ──────→                       │
│        └───┘         └─────────┘                               │
│                                                                 │
│   gdzie A(z) = 1 - Σ_{k=1}^{p} a_k z^{-k}                      │
│                                                                 │
│   Predykcja: ŝ[n] = Σ_{k=1}^{p} a_k s[n-k]                     │
│   Błąd:      e[n] = s[n] - ŝ[n]                                │
└─────────────────────────────────────────────────────────────────┘

Wyznaczanie współczynników LPC

Metoda autokorelacji (Levinson-Durbin):

1. Oblicz autokorelację: R[k] = Σ s[n]·s[n+k]

2. Algorytm Levinsona-Durbina:
   E₀ = R[0]
   for i = 1 to p:
       k_i = (R[i] - Σ_{j=1}^{i-1} a_{i-1,j}·R[i-j]) / E_{i-1}
       a_{i,i} = k_i
       for j = 1 to i-1:
           a_{i,j} = a_{i-1,j} - k_i·a_{i-1,i-j}
       E_i = (1 - k_i²)·E_{i-1}

3. Wynik: współczynniki a₁, a₂, ..., a_p

Typowo: p = 10-16 dla mowy (8kHz), p = 16-20 (16kHz)

Parametry pochodne LPC

Parametr Opis
Współczynniki LPC a₁, ..., a_p
PARCOR (k) Współczynniki odbicia
LSF/LSP Line Spectral Frequencies
Cepstrum LPC Transformacja współczynników

4. Porównanie MFCC vs LPC

Cecha MFCC LPC
Podstawa Percepcja słuchowa Model produkcji mowy
Filtracja Bank filtrów Mel Model all-pole
Wymiarowość 12-13 + delty 10-20
Zastosowanie Rozpoznawanie mowy Kodowanie, synteza
Korelacja Niska (DCT dekoreluje) Wysoka
Interpolacja Trudna Łatwa (LSF)

5. Rozszerzenia

PLP (Perceptual Linear Prediction)

Łączy LPC z percepcją słuchową:

  • Filtracja w skali Bark
  • Krzywa równej głośności
  • Kompresja intensity-loudness

Filter Banks (dla DNN)

Nowoczesne podejście:

  • Log Mel filterbanks (bez DCT)
  • 40-80 filtrów
  • DNN uczy się własnych cech

🧠 Mnemoniki

"MFCC = Mel + FFT + Cepstrum":

Skala Mel → FFT → Log → DCT

"LPC = Linear Prediction Coefficients":

Przewiduj próbkę z p poprzednich

"39 = 13 + 13 + 13":

MFCC + Delta + Delta-Delta


Pytania dodatkowe

Q1: "Dlaczego używamy skali Mel?"

Odpowiedź: Percepcja częstotliwości przez człowieka jest logarytmiczna. Różnica 100-200Hz jest bardziej słyszalna niż 4000-4100Hz. Mel modeluje tę nieliniowość.

Q2: "Co to jest cepstrum?"

Odpowiedź: "Widmo widma" - IFFT(log(|FFT(x)|)). Rozdziela pobudzenie (pitch) od filtra (formantów). MFCC używa DCT zamiast IFFT dla lepszych właściwości.

Q3: "Dlaczego LPC jest używane w kodowaniu mowy (CELP)?"

Odpowiedź: Kompaktowa reprezentacja (~10 współczynników). Łatwa interpolacja (LSF). Efektywna synteza (filtr IIR). Standard w GSM, VoIP.


🎯 Kluczowe punkty

  1. MFCC: Pre-emphasis → Ramki → FFT → Mel → Log → DCT
  2. LPC: Model all-pole, predykcja liniowa, Levinson-Durbin
  3. Wymiary: MFCC ~39, LPC ~10-20
  4. MFCC dla rozpoznawania, LPC dla kodowania/syntezy

📖 Źródła

  1. Rabiner, Schafer - "Digital Processing of Speech Signals"
  2. Huang et al. - "Spoken Language Processing"
  3. HTK Book - Feature extraction