mirror of
https://github.com/kuhyx/praca_magisterska.git
synced 2026-07-04 13:43:05 +02:00
222 lines
8.6 KiB
Markdown
222 lines
8.6 KiB
Markdown
# 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
|
||
|
||
1. **HMM:** Stany ukryte, GMM emisje, Viterbi dekodowanie
|
||
2. **DNN-HMM Hybrid:** DNN zastępuje GMM, HMM dla czasu
|
||
3. **End-to-End:** CTC lub Attention, bez HMM
|
||
4. **Trend:** Większe modele, więcej danych, mniej inżynierii cech
|
||
|
||
---
|
||
|
||
## 📖 Źródła
|
||
|
||
1. Rabiner - "A Tutorial on HMM"
|
||
2. Hinton et al. - "Deep Neural Networks for Acoustic Modeling" (2012)
|
||
3. Graves et al. - "CTC" (2006)
|
||
4. Chan et al. - "LAS" (2016)
|