2010-11-04 10 views
5

Pracuję nad oprogramowaniem dla dzieci i szukam możliwości, aby oprogramowanie reagowało na wiele dźwięków niemówiących. Na przykład: klaskanie, szczekanie, gwizdy, odgłosy pierdnięć itp.Hałas lub oprogramowanie do rozpoznawania mowy?

Używam CMU Sphinx i Windows Speech API w przeszłości, jednak, o ile mogę powiedzieć, żadne z nich nie mają wsparcia dla odgłosy mowy i faktycznie uważam, że aktywnie je odfiltrowuję.

Generalnie szukam „Jak mogę dostać tej funkcji”, ale podejrzewam, że to może pomóc, jeśli rozbicie go na trzy pytania, które są moje domysły o co szukać dalej:

  1. Czy istnieje sposób wykorzystania jednego z głównych mechanizmów rozpoznawania mowy do rozpoznawania dźwięków innych niż słowa przez zmianę modelu akustycznego lub leksykonu wymowy?
  2. (lub) Czy istnieje już biblioteka do rozpoznawania szumów innych niż Word?
  3. (lub) Mam trochę znajomości z ukrytymi modelami Markova i podstawową techniką rozpoznawania głosu w college'u, ale nie ma dobrych szacunków na temat tego, jak trudno byłoby stworzyć bardzo mały oddźwięk/dźwięk od zera (załóżmy, że < 20 hałasów do rozpoznania). Jeśli 1) i 2) zawiodą, to czy oszacujesz, ile czasu zajmie mi wyrzucenie własnego?

Dzięki

+1

[Moja odpowiedź] (http://stackoverflow.com/q/8285673/22364) na pytanie [Identyfikacja w czasie rzeczywistym dźwięku niemuzycznego, niemuzycznego od ciągłego strumienia mikrofonu] (http: // stackoverflow.com/q/8285673) mogą być istotne. –

Odpowiedz

0

Tak, można użyć oprogramowania do rozpoznawania mowy jak CMU Sphinx uznania bez dźwięków mowy. W tym celu musisz stworzyć własne modele akustyczne i językowe oraz zdefiniować leksykon ograniczony do Twojego zadania. Ale aby wyszkolić odpowiedni model akustyczny, musisz mieć wystarczającą ilość danych treningowych z opisanymi dźwiękami zainteresowania.

Podsumowując, kolejność kroków jest następująca:

pierwsze, przygotować środki do szkolenia: słownika, słownik itp Proces opisany tutaj: http://cmusphinx.sourceforge.net/wiki/tutorialam. Ale w twoim przypadku musisz przedefiniować zestaw fonemu i leksykon. Mianowicie, powinieneś modelować wypełniacze jako prawdziwe słowa (więc nie ma potrzeby definiowania pełnego zestawu fonemów). Jest wiele możliwości, ale prawdopodobnie najprostszym jest posiadanie jednego modelu dla wszystkich fonemów mowy. Zatem Twój leksykon będzie wyglądać następująco:

CLAP CLAP 
BARK BARK 
WHISTLE WHISTLE 
FART FART 
SPEECH SPEECH 

drugie, przygotować dane treningowe z etykietami: Coś podobnego do VoxForge, ale adnotacje tekstowe musi zawierać tylko etykiet z leksykonu. Oczywiście dźwięki niemówiące również muszą być odpowiednio oznaczone. Dobrym pytaniem jest tutaj, gdzie uzyskać wystarczająco dużą ilość takich danych. Ale myślę, że to powinno być możliwe.

Mając to, możesz wyszkolić swój model. Zadanie jest prostsze w porównaniu do rozpoznawania mowy, na przykład, nie musisz używać trójfonów, tylko monofonów.

Zakładając równe uprzedniej prawdopodobieństwo jakiegokolwiek dźwięku/mowy, najprostszy model język może być pętla jak gramatyka (http://cmusphinx.sourceforge.net/wiki/tutoriallm):

#JSGF V1.0; 
/** 
* JSGF Grammar for Hello World example 
*/ 
grammar foo; 
public <foo> = (CLAP | BARK | WHISTLE | FART | SPEECH)+ ; 

Jest to bardzo proste podejście do korzystania z ASR zestaw narzędzi dla Twojego zadania. Można go jeszcze ulepszyć, dostosowując konfiguracje HMM, używając statystycznych modeli językowych i stosując precyzyjne modelowanie fonemów (np. Wyróżniając samogłoski i spółgłoski zamiast jednego modelu SPEECH, zależnie od charakteru twoich danych treningowych).

Poza strukturą rozpoznawania mowy można zbudować prosty klasyfikator statyczny, który analizuje dane wejściowe klatka po klatce. Konwolucyjne sieci neuronowe, które działają na spektrogramach, wykonują całkiem dobrze w tym zadaniu.

Powiązane problemy