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

205 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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