FMLLR - FMLLR

v zpracování signálu, Prostor funkce Maximální pravděpodobnost lineární regrese (fMLLR) je transformace globálních funkcí, které se obvykle používají adaptivním způsobem řečníka, kde fMLLR transformuje akustické funkce na funkce přizpůsobené reproduktoru pomocí operace násobení s transformační maticí. V některé literatuře fMLLR je také známý jako Omezená maximální pravděpodobnost lineární regrese (cMLLR).

fMLLR transformace jsou trénovány ve smyslu maximální pravděpodobnosti na adaptačních datech. Tyto transformace lze odhadnout mnoha způsoby, ale v odhadu se uvažuje pouze odhad maximální pravděpodobnosti (ML) fMLLR. The fMLLR transformace je trénována na konkrétní sadě adaptačních dat, takže maximalizuje pravděpodobnost těchto adaptačních dat vzhledem k aktuální sadě modelů.

Tato technika je široce používaným přístupem k adaptaci reproduktorů v HMM -na základě rozpoznávání řeči,[1][2]

pozdější výzkum[3] to také ukazuje fMLLR je vynikající akustická vlastnost pro DNN / HMM[4] hybridní modely rozpoznávání řeči.

Výhodou fMLLR je:

  • adaptační proces lze provést ve fázi předzpracování a je nezávislý na ASR proces školení a dekódování.
  • tento typ přizpůsobené funkce lze použít hluboké neuronové sítě (DNN) nahradit tradičně používané mel-spektrogram v modelech rozpoznávání řeči typu end-to-end.
  • Proces adaptace reproduktorů fMLLR vede k výraznému zvýšení výkonu pro ASR modely, a proto překonávají jiné transformace nebo funkce jako MFCC (Mel-Frequency Cepstral Coefficients) a FBANKY Koeficienty (banka filtrů).
  • Funkce fMLLR lze efektivně realizovat pomocí sad nástrojů pro řeč Kaldi.

Hlavní problém a nevýhoda fMLLR:

  • když je omezeno množství adaptačních dat, transformační matice mají tendenci snadno overfit dané údaje.

Výpočet transformace fMLLR

Transformaci funkcí fMLLR lze snadno vypočítat pomocí nástroje řeči s otevřeným zdrojovým kódem Kaldi, Kaldiho skript používá standardní schéma odhadu popsané v příloze B původního článku,[1] zejména část Příloha B.1 „Přímá metoda přes řádky“.

Ve formulaci Kaldi je fMLLR transformací afinní funkce formy , které lze zapsat do formuláře → Ž, kde = je akustická funkce s připojenou 1. Všimněte si, že se to liší od některé literatury, kde 1 je první jako =.

Dostatečně uložené statistiky jsou:

kde je inverzní matice variance.

A pro kde je dimenze prvku:

Podrobný přehled, který vysvětluje fMLLR a běžně používané techniky odhadu, najdete v původním článku „Lineární transformace maximální pravděpodobnosti pro rozpoznávání řeči založené na HMM[1] ".

Všimněte si, že skript Kaldi, který provádí transformace funkcí fMLLR, se liší [1] pomocí sloupce inverze místo řádku kofaktoru. Jinými slovy, faktor determinantu je ignorován, protože nemá vliv na výsledek transformace a může způsobit potenciální nebezpečí číselného podtečení nebo přetečení.

Porovnání s jinými funkcemi nebo transformacemi

Výsledek experimentu ukazuje, že použitím funkce fMLLR v rozpoznávání řeči se dosáhne neustálého zlepšování oproti jiným akustickým vlastnostem v různých běžně používaných srovnávacích datových sadách (TIMIT, LibriSpeech, atd).

Funkce fMLLR zejména překonává MFCC a FBANKY koeficienty, což je způsobeno zejména procesem adaptace reproduktorů, který provádí fMLLR.[3]

V,[3] chybovost fonémů (PER,%) je hlášena pro testovací sadu TIMIT s různými neurálními architekturami:

Výsledky PER získané od Pytorch-Kaldiho[3]
Modely / funkceMFCCFBANKfMLLR
MLP18.218.716.7
RNN17.717.215.9
LSTM15.114.314.5
GRU16.015.214.9
Li-GRU15.314.914.2

Jak se dalo očekávat, funkce fMLLR překonávají MFCC a FBANKY koeficienty navzdory použití jiné modelové architektury.

Kde MLP (vícevrstvý perceptron) naopak slouží jako jednoduchá základní linie RNN, LSTM, a GRU jsou všechny dobře známé opakující se modely.

Li-GRU[5] architektura je založena na jedné bráně a šetří tak 33% výpočtů oproti standardnímu modelu GRU, Li-GRU tak účinně řeší problém mizejícího přechodu opakujících se modelů.

Výsledkem je nejlepší výkon s modelem Li-GRU na funkcích fMLLR.

Extrahujte funkce fMLLR s Kaldi

fMLLR lze extrahovat, jak je uvedeno v receptu s5 Kaldiho.

Skripty Kaldi mohou určitě extrahovat funkce fMLLR na různé datové sady, níže jsou základní ukázkové kroky k extrakci funkcí fMLLR z řečových korpusů otevřeného zdroje Librispeech.

Níže uvedené pokyny platí pro podmnožiny train-clean-100,train-clean-360,dev-clean, a otestovat,

ale lze je snadno rozšířit, aby podporovaly ostatní sady dev-ostatní, test-ostatní, a vlak-ostatní-500.

  1. Tyto pokyny vycházejí z kódů uvedených v tomto dokumentu Úložiště GitHub, který obsahuje recepty Kaldi na korpusech LibriSpeech k provedení procesu extrakce funkcí fMLLR, nahraďte soubory pod $ KALDI_ROOT / egs / librispeech / s5 / se soubory v úložišti.
  2. Nainstalujte Kaldi.
  3. Nainstalujte Kaldiio.
  4. Pokud běžíte na jednom počítači, změňte následující řádky v $ KALDI_ROOT / egs / librispeech / s5 / cmd.sh nahradit fronta.pl na run.pl:
    1 vývozní vlak_cmd=„run.pl --mem 2G“2 vývozní dekódovat_cmd=„run.pl --mem 4G“3 vývozní mkgraph_cmd=„run.pl --mem 8G“
  5. Změň data cesta dovnitř run.sh do vaší datové cesty LibriSpeech, do adresáře LibriSpeech / by měla být pod touto cestou. Například:
    data=/ media / user / SSD # příklad cesty
  6. Nainstalujte flac s: sudo apt-get install flac
  7. Spusťte recept Kaldi run.sh pro LibriSpeech minimálně do 13. fáze (v ceně), pro jednoduchost můžete použít upravený run.sh.
  8. kopírovat exp / tri4b / trans. * soubory do exp / tri4b / decode_tgsmall_train_clean _ * / s následujícím příkazem:
    mkdir exp / tri4b / decode_tgsmall_train_clean_100 && cp exp / tri4b / trans. * exp / tri4b / decode_tgsmall_train_clean_100 /
  9. Spočítejte funkce fMLLR spuštěním následujícího skriptu, skript lze také stáhnout tady:
     1 #! / bin / bash 2  3 . ./cmd.sh ## Budete chtít změnit soubor cmd.sh na něco, co bude fungovat ve vašem systému. 4 . ./path.sh ## Zdroj nástrojů / nástrojů (import queue.pl) 5  6 gmmdir=exp / tri4b 7  8 pro část v dev_clean test_clean train_clean_100 train_clean_360 ; dělat 9     dir=fmllr /$ kus10     steps / nnet / make_fmllr_feats.sh --nj 10 --cmd "$ train_cmd" \11         --transformovat $ gmmdir/ decode_tgsmall_$ kus \12             $ dir data/$ kus $ gmmdir $ dir/ log $ dir/data || výstup 113 14     compute-cmvn-stats --spk2utt=archa: data /$ kus/ spk2utt scp: fmllr /$ kus/feats.scp archa:$ dir/data/cmvn_speaker.ark15 Hotovo
  10. Vypočítat zarovnání pomocí:
    1 # zarovnání na dev_clean a test_clean2 steps / align_fmllr.sh --nj 10 data / dev_clean data / lang exp / tri4b exp / tri4b_ali_dev_clean3 steps / align_fmllr.sh --nj 10 data / test_clean data / lang exp / tri4b exp / tri4b_ali_test_clean4 steps / align_fmllr.sh --nj 30 data / train_clean_100 data / lang exp / tri4b exp / tri4b_ali_clean_1005 steps / align_fmllr.sh --nj 30 data / train_clean_360 data / lang exp / tri4b exp / tri4b_ali_clean_360
  11. Aplikovat CMVN a vypsat funkce fMLLR do nových souborů .ark, skript lze také stáhnout tady:
     1 #! / bin / bash 2  3 data=/ user / kaldi / egs / librispeech / s5 ## Budete chtít změnit tuto cestu na něco, co bude fungovat ve vašem systému. 4  5 rm -rf $ data/ fmllr_cmvn / 6 mkdir $ data/ fmllr_cmvn / 7  8 pro část dev_clean test_clean train_clean_100 train_clean_360; dělat 9   mkdir $ data/ fmllr_cmvn /$ část/10   apply-cmvn --utt2spk=archa:$ data/ fmllr /$ část/ utt2spk archa:$ data/ fmllr /$ část/data/cmvn_speaker.ark scp:$ data/ fmllr /$ část/feats.scp archa: - | add-deltas --delta-order=0 archa: - archa:$ data/ fmllr_cmvn /$ část/fmllr_cmvn.ark11 Hotovo12 13 du -sh $ data/ fmllr_cmvn / *14 echo "Hotovo!"
  12. Pomocí skriptu Python můžete převést funkce .ark generované Kaldi na .npy pro vlastní datový zavaděč, například Skript v Pythonu je poskytován:
    python ark2libri.py

Viz také

Reference

  1. ^ A b C d M.J.F. Gales (1998). "Lineární transformace maximální pravděpodobnosti pro rozpoznávání řeči založené na HMM". Počítačová řeč a jazyk. 12 (2): 75–98. CiteSeerX  10.1.1.37.8252. doi:10.1006 / csla.1998.0043.
  2. ^ Jing Huang; E Marcheret; K Visweswariah (2005). Rychlá adaptace prostorových reproduktorů pro víceproudové rozpoznávání audiovizuální řeči na bázi HMM. IEEE International Conference on Multimedia and Expo (ICME). IEEE. 338–341. doi:10.1109 / ICME.2005.1521429.
  3. ^ A b C d Ravanelli, Mirco; Parcollet, Titouan; Bengio, Yoshua (2018-11-18). „Sada nástrojů pro rozpoznávání řeči PyTorch-Kaldi“. arXiv:1811.07453 [eess.AS ].
  4. ^ Li, Longfei; Zhao, Yong; Jiang, Dongmei; Zhang, Yanning; Wang, Fengna; Gonzalez, Isabel; Valentin, Enescu; Sahli, Hichem (září 2013). „Hybrid Deep Neural Network - Hidden Markov Model (DNN-HMM) Based Speech Emotion Recognition“. Konference asociace Humaine 2013 o afektivních výpočtech a inteligentních interakcích. IEEE: 312–317. doi:10.1109 / acii.2013.58. ISBN  978-0-7695-5048-0.
  5. ^ Ravanelli, Mirco; Brakel, Philemon; Omologo, Maurizio; Bengio, Yoshua (2017-08-20). Msgstr "Zlepšení rozpoznávání řeči revizí rekurzivních rekurentních jednotek". Interspeech 2017. ISCA: ISCA: 1308–1312. arXiv:1710.00641. Bibcode:2017arXiv171000641R. doi:10.21437 / interspeech.2017-775.