Opracowałem system sprawdzania koncepcji rozpoznawania dźwięku za pomocą modeli mfcc i ukrytych marek. Daje obiecujące wyniki, gdy testuję system na znanych dźwiękach. Chociaż system, gdy wprowadzany jest nieznany dźwięk, zwraca wynik z najbliższym dopasowaniem, a wynik nie jest tak wyraźny, aby go wymyślić, jest to dźwięk nieznany, np .:
Wytrenowałem 3 ukryte modele Markowa: jeden do mowy, jeden do wody wydobywającej się z kranu i jeden do pukania na biurko. Następnie testuję je na niewidzialnych danych i otrzymuję następujące wyniki:
input: speech
HMM\knocking: -1213.8911146444477
HMM\speech: -617.8735676792728
HMM\watertap: -1504.4735097322673
So highest score speech which is correct
input: watertap
HMM\knocking: -3715.7246152783955
HMM\speech: -4302.67960438553
HMM\watertap: -1965.6149147201534
So highest score watertap which is correct
input: knocking
HMM\filler -806.7248912250212
HMM\knocking: -756.4428782636676
HMM\speech: -1201.686687761133
HMM\watertap: -3025.181144273698
So highest score knocking which is correct
input: unknown
HMM\knocking: -4369.1702184688975
HMM\speech: -5090.37122832872
HMM\watertap: -7717.501505674925
Here the input is an unknown sound but it still returns the closest match as there is no system for thresholding/garbage filtering.
Wiem, że w wykrywaniu słów kluczowych dźwięk OOV (poza słownictwem) można odfiltrować za pomocą modelu śmieci lub wypełniacza, ale mówi on, że jest trenowany przy użyciu skończonego zestawu nieznanych słów, których nie można zastosować do mojego systemu, gdy don nie znam wszystkich dźwięków, które system może nagrać.
Jak podobny problem rozwiązuje się w systemie rozpoznawania mowy? Jak mogę rozwiązać problem, aby uniknąć fałszywych trafień?