mirror of
https://github.com/kuhyx/praca_magisterska.git
synced 2026-11-10 19:27:09 +01:00
205 lines
7.2 KiB
Markdown
205 lines
7.2 KiB
Markdown
# 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
|