8.6 KiB
Pytanie 20: Rozpoznawanie mowy - HMM vs Deep Learning
Pytanie
"Przedstawić klasyczną metodę rozpoznawania mowy opartą o HMM (Ukryte Modele Markowa). Porównać ją z metodami korzystającymi z głębokich sieci neuronowych."
Przedmiot: EASAR (Elementy Automatycznego Sterowania i Rozpoznawania)
📚 Odpowiedź główna
1. System rozpoznawania mowy - architektura
┌─────────────────────────────────────────────────────────────────┐
│ Sygnał audio │
│ ↓ │
│ [Ekstrakcja cech] ──→ MFCC/Filterbanks │
│ ↓ │
│ [Model akustyczny] ──→ HMM / DNN / Hybrid │
│ ↓ │
│ [Model językowy] ──→ N-gram / RNN-LM │
│ ↓ │
│ [Dekoder] ──→ Wyszukiwanie najlepszej hipotezy │
│ ↓ │
│ Tekst │
└─────────────────────────────────────────────────────────────────┘
2. HMM (Hidden Markov Model) - klasyczne podejście
Struktura HMM dla fonemu
a₁₂ a₂₃ a₃₄
┌────────→ ┌────────→ ┌────────→
│ │ │
┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌───┐
│ 1 │ │ 2 │ │ 3 │ │ 4 │
│ │ │ │ │ │ │END│
└─┬─┘ └─┬─┘ └─┬─┘ └───┘
│ │ │
└──────────┴──────────┘
a₁₁ a₂₂ a₃₃ (self-loops)
Każdy stan emituje obserwacje (MFCC) według rozkładu GMM:
b_j(o) = Σ_m c_{jm} N(o; μ_{jm}, Σ_{jm})
Parametry HMM
| Symbol | Opis |
|---|---|
| A | Macierz przejść (a_ij) |
| B | Rozkłady emisji (GMM) |
| π | Rozkład początkowy |
Trzy problemy HMM
| Problem | Algorytm | Zastosowanie |
|---|---|---|
| Ewaluacja: P(O|λ) | Forward-Backward | Scoring |
| Dekodowanie: argmax P(Q|O) | Viterbi | Rozpoznawanie |
| Uczenie: argmax P(O|λ) | Baum-Welch (EM) | Trening |
Algorytm Viterbi
Znajdź najbardziej prawdopodobną sekwencję stanów:
α_t(j) = max_{i} [α_{t-1}(i) · a_{ij}] · b_j(o_t)
Backtrace: ψ_t(j) = argmax_{i} [α_{t-1}(i) · a_{ij}]
t=1 t=2 t=3 t=4
s=1 ●──────●──────●──────●
│╲ │╲ │╲ │
s=2 ●──────●──────●──────●
│╲ │╲ │╲ │
s=3 ●──────●──────●──────●
Viterbi trellis
3. Deep Learning w rozpoznawaniu mowy
DNN-HMM Hybrid (2012+)
┌─────────────────────────────────────────────────────────────────┐
│ Klasyczne GMM-HMM: │
│ Cechy MFCC → GMM → P(o|stan) → HMM → dekodowanie │
│ │
│ Hybrid DNN-HMM: │
│ Cechy → DNN → P(stan|o) → P(o|stan) = P(stan|o)/P(stan) │
│ ↓ │
│ HMM → dekodowanie │
│ │
│ DNN zastępuje GMM jako model emisji! │
└─────────────────────────────────────────────────────────────────┘
End-to-End Models (2014+)
CTC (Connectionist Temporal Classification):
┌──────────────────────────────────────────────────────────────┐
│ Audio → [LSTM/Transformer] → P(y_t|x) → CTC Loss → Tekst │
│ │
│ CTC pozwala na różne wyrównania: │
│ "h-e-l-l-o" = "hh-ee-ll-lo" = "-h-e-l-l-o-" │
│ (blank = '-') │
└──────────────────────────────────────────────────────────────┘
Attention-based (Seq2Seq):
┌──────────────────────────────────────────────────────────────┐
│ Audio → [Encoder] → [Attention] → [Decoder] → Tekst │
│ ↓ │
│ Wyrównanie uczone │
│ │
│ Modele: LAS (Listen Attend Spell), Transformer ASR │
└──────────────────────────────────────────────────────────────┘
Transformer ASR (2020+)
Whisper, Wav2Vec 2.0, Conformer:
Audio waveform
↓
[CNN Feature Encoder]
↓
[Transformer Encoder] × N
↓
[CTC / Attention Decoder]
↓
Tekst
Pre-training: Self-supervised na dużych danych
Fine-tuning: Supervised na labeled data
4. Porównanie HMM vs DNN
| Aspekt | GMM-HMM | DNN-HMM | End-to-End |
|---|---|---|---|
| Model akustyczny | GMM | DNN | DNN |
| Model czasowy | HMM | HMM | CTC/Attention |
| Wyrównanie | Viterbi | Viterbi | Uczone/CTC |
| Trening | EM (Baum-Welch) | Backprop | Backprop |
| Interpretowalność | Wysoka | Średnia | Niska |
| Dane treningowe | Małe | Średnie | Duże |
| WER (Word Error Rate) | ~15-20% | ~8-12% | ~3-5% |
| Latencja | Niska | Średnia | Zmienna |
5. Ewolucja wydajności
WER na Switchboard (telefon):
Rok Model WER
2010 GMM-HMM ~18%
2012 DNN-HMM ~12%
2015 LSTM-HMM ~8%
2017 LAS (Seq2Seq) ~6%
2020 Conformer ~4%
2023 Whisper Large ~3%
Poziom ludzki ~4%
🧠 Mnemoniki
"HMM = Hidden states + Markov + Model":
Ukryte stany, przejścia markowskie, emisje obserwacji
"Viterbi = Find best path":
Dynamiczne programowanie dla najlepszej ścieżki
"CTC = Collapse The Characters":
Usuwa powtórzenia i blanki → tekst
❓ Pytania dodatkowe
Q1: "Co to jest forced alignment?"
Odpowiedź: Viterbi z ograniczeniem do znanej transkrypcji. Wyznacza granice czasowe fonemów/słów. Używane do tworzenia danych treningowych i TTS.
Q2: "Dlaczego DNN jest lepszy od GMM?"
Odpowiedź: DNN może modelować złożone, nieliniowe zależności. GMM zakłada mieszaninę Gaussianów (często niewystarczające). DNN korzysta z kontekstu (wiele ramek na wejściu).
Q3: "Co to jest language model fusion?"
Odpowiedź: Łączenie modelu akustycznego z językowym: P(W|O) ∝ P(O|W)·P(W)^α. Shallow fusion (podczas dekodowania) lub deep fusion (wspólny trening).
🎯 Kluczowe punkty
- HMM: Stany ukryte, GMM emisje, Viterbi dekodowanie
- DNN-HMM Hybrid: DNN zastępuje GMM, HMM dla czasu
- End-to-End: CTC lub Attention, bez HMM
- Trend: Większe modele, więcej danych, mniej inżynierii cech
📖 Źródła
- Rabiner - "A Tutorial on HMM"
- Hinton et al. - "Deep Neural Networks for Acoustic Modeling" (2012)
- Graves et al. - "CTC" (2006)
- Chan et al. - "LAS" (2016)