B2M31ZRE cvičení
Verifikace mluvčího na bázi GMM
DOMÁCÍ ÚKOL: (5 bodů)
- Zobrazení kepstrálního prostoru dvou různých mluvčího
- Vytvořte trénovací data pro mluvčího SPK1 (optimálně pro váš hlas), tj. použijte promluvy S0-S9 nahrané
na 1. cvičení vypočítejte matici MFCC kepstrálních koeficientů pro
všechny krátkodobé segmenty s řečovou aktivitou (e.g. "T20xxxS0.CS0 - T20xxxS9.CS0").
- Použijte signály nahrané na 1. cvičení:
- Nahrané signály převzorkované na 16 kHz (soubory *.CS0) jsou na ČVUT FEL k disposici k přímému
použití v adresáři "K:\Vyuka\ZRE\data\zreratdb".
- Pro práci mimo síť FEL je možné stáhnout pouze následující archiv
zrerat_block200_2025_cs0.zip,
který obsahuje nahrávky od více mluvčích (včetně vašich osobních) převzorkované na 16 kHz.
- Pro výpočet použijte funkci vmfcc.m
(i další volané funkce
, melbf.m, mel.m, melinv.m), přičemž nastavte následující parametry krátkodobé analýzy a výpočtu jednotlivých typů kepstra:
- před výpočtem kepstra aplikujte preefmázový filtr s koeficientem
0.97,
- délka segmentu 25 ms, posuv okna 5 ms, Hammingovo
váhovací okénko (implicitní nastavení),
- počet pásem banky filtrů M=30, fmin=100Hz, fmax=6500Hz,
- počet kepstrálních koeficientů cp=12 (tj. 12 + 1).
- použijte VAD na bázi výkonu v dB s prahováním na úrovni
okolo 50% dynamiky (výkon signálu v jednotlivých segmentech
počítejte z původního signálu bez aplikace preemfáze; lze
použít fce speechpwr.m a thr_fixed.m) - .
- Napočítaná kepstra bez koeficientu c[0] uložte do
matice cspk1_train a sledujte rozložení kepstra v prostoru
kepstrálních koeficientů pro
c[1] - c[8].
- Opakujte se stejným nastavením pro promluvy Z0-Z9 (tj. "T2ExxxZ0.CS0 - T2ExxxZ9.CS0") a výsledek uložte do matice cspk1_test a sledujte rozložení kepstra pro
c[1] - c[8].
- Nakonec vypočtě kepstra pro promluvy Z0-Z9 jiného řečníka SPK2 (tj. "T2EyyyZ0.CS0 - T2EyyyZ9.CS0") a výsledek uložte do
matice cspk2_test a op2t sledujte rozložení kepstra pro c[1] - c[8].
- Výsledek: Napočítané výsledky vykreslete v následujících 3 obrázcích:
- Figure 1: závislosti c[1]-c[2], c[3]-c[4], c[5]-c[6], c[7]-c[8] pro matici cspk1_train, tj. rozložení MFCC pro promluvy S0 - S9 mluvčího SPK1.
- Figure 2: závislosti c[1]-c[2], c[3]-c[4], c[5]-c[6], c[7]-c[8] pro matici cspk1_test, tj. rozložení MFCC pro promluvy Z0 - Z9 mluvčího SPK1.
- Figure 3: závislosti c[1]-c[2], c[3]-c[4], c[5]-c[6], c[7]-c[8] pro matici cspk2_test, tj. rozložení MFCC pro promluvy Z0 - Z9 mluvčího SPK2.
- Požadované řešení odevzdejte přes WEBové rozhraní v Moodle FEL, viz Verifikace řečníka na bázi GMM - domácí příprava. Termín odevzdání je do Pátku 2.5.2025, 9:00 AM.
ÚKOLY k vypracování NA CVIČENÍ:
- Verifikace řečníka na bázi GMM
- Výpočtěte GMM modely pro řečníka SPK1 s využitím trénovacích datcspk1_train. Použijte funkci fitgmdist a volte GMM se 6 směsmi a úplnou kovarianční maticí (parametry 'CovType','Full').
- Vypočtěte emitované logaritmické pravděpodobnosti pro GMM model analyzované 2 mluvčí, tj. v použité funkci pdf volte matice realizací cspk1_test a cspk2_test.
- Výsledek : Zobrazte:
- všechny krátkodobé hodnoty emitované logaritmické pravděpodobnosti pro všechny testovací promluvy řečníka SPK1, tj. správného řečníka,
- do stejného obrázku přidejte krátkodobé hodnoty emitované logaritmické pravděpodobnosti druhého řečníka SPK2, tj. nesprávného řečníka,
- vypočtěte skóre na bázi průměrné emitované pravděpodobnosti pro obam luvčí SPK1 a SPK2.
- Definujte empiricky verifikační práh pro přijetí správného mluvčího a zamítnutí nesprávného mluvčího.
- Ve volném čase opakujte verifikaci pro jiné řečníky
ON-LINE (OFF-LINE) verifikace řečníka na bázi GMM
- Realizujte verifikaci pro on-line nahranou promluvu.
- Požadovaný výstup: PŘIJMUTÍ/ZAMÍTNUTÍ identity + napočítané skóre + verifikační práh.