dr inż. Leszek Gajecki

Dr inż. Leszek Gajecki

Adiunkt w Katedrze Zastosowań Systemów Informatycznych, członek Polskiego Towarzystwa Fonetycznego. W pracy naukowej interesuje się sztuczną inteligencją, rozpoznawaniem wizji i mowy, algorytmiką, programowaniem i elektroniką. Prywatnie jest fanem dobrej książki, kanału “Historia bez cenzury” i wędrówek po Bieszczadach. Marzy o tym, by móc programować bez klawiatury.

Zapewne wielu z nas znane są funkcje głosowe dostępne w smartfonach, korzystające z darmowej usługi pewnej dużej firmy. Skoro znamy, to czy potrzebujemy zajmować się tym zagadnieniem naukowo?

Jest tu jeszcze coś do zrobienia?

Najprościej byłoby odpowiedzieć na zadane w tytule pytanie: „Tak, rozmawiam” albo „Zapoznam się z tą funkcją”. Rozpoznawanie mowy działa względnie dobrze, wymaga jedynie dostępu do internetu, a poza tym jest dostępne bezpłatnie.  Jednakże są powody by nie polegać wyłącznie na produkcie jednej firmy. Jakie? Na przykład takie, że pewnego dnia usługa ta może być płatna. Czy w takim razie samodzielne wykonanie systemu rozpoznawania mowy jest trudne? Otóż nie jest, co będę starał się pokazać w dalszej części tego artykułu.

Rozpoznawanie rozpoznawaniu nierówne.

Na początku zauważmy, że zadania rozpoznawania mowy mają różny stopnień trudności. Najprostsze jest rozpoznawanie kilku krótkich poleceń głosowych wypowiedzianych przez jednego mówcę. Jeżeli oddzielone są one ciszą, nazwiemy takie zadanie mową izolowaną. Stosunkowo prostym zadaniem jest także rozpoznawanie mowy złożonej z np. dwudziestu słów, gdy słowa nie są oddzielone żadną przerwą (mowa ciągła).

Mogą to być niezbyt skomplikowane polecenia, takie jak np. wybranie numeru telefonu, który podajemy poprzez ciąg cyfr, albo wypowiedzenie imienia osoby, z którą chcemy się połączyć. Na drugim biegunie zadań będzie jednak rozpoznawanie mowy zaszumionej (np. przez telefon), oraz takiej mowy ciągłej, w której występuje kilkadziesiąt tysięcy słów oraz wielu różnych mówców. Tutaj należy użyć technik polepszających rozpoznawanie mowy.

Czego potrzebujemy?

Mamy pewien wybór oprogramowania opensource’owego do tworzenia systemów rozpoznawania mowy: HTK (dobry na początek, choć niezbyt intensywnie rozwijany) czy Sphinx (również dobry na początek, a poza tym łatwo podłączyć go do własnych aplikacji). Dla osób pragnących nieco bardziej rozwinąć skrzydła polecam oprogramowanie Kaldi, które zawiera najnowsze techniki; takie jak sieci głębokie, transformacje mówców, adaptację dla uczenia online. Zainteresowanych odsyłam do szczegółowych informacji o wspomnianych technikach. Chciałbym jednak zaznaczyć, że oprogramowanie to nie wszystko, ponieważ system rozpoznawania mowy dużego słownika potrzebuje trzech źródeł wiedzy: modelu akustycznego, leksykonu oraz modelu językowego. Model akustyczny odwzorowuje podstawowe jednostki mowy (np. podobne do głosek fonemy). Leksykon opisuje z jakich fonemów zbudowane są słowa. Model językowy z kolei może opisywać w prostszym systemie schemat wszystkich możliwych wypowiedzi, choć dla rozpoznawania w miarę swobodnych wypowiedzi potrzebujmy, aby wyznaczał on, z jakim prawdopodobieństwem wystąpi wyraz X albo Y jako następny.

Czy to trudne?

Brzmi to skomplikowanie, ale podążając za tutorialami do podanego oprogramowania możemy sami stworzyć system, który wykona jedno z wyżej podanych prostszych zadań. Np. przygotowanie systemu, który rozpozna polecenia połączenia z numerem telefonu ( jako ciągu wypowiedzianych cyfr – mowa ciągła)  wymaga od nas 10 -20 godzin pracy. To oznacza, że utworzenie systemu rozpoznawania mowy nie jest wcale trudne i stanowi wyzwanie osiągalne dla wielu z nas. Systemy bardziej wymagające to rzeczywiście praca dla kilkuosobowego zespołu, ale pamiętajmy: Nie od razu Kraków zbudowano. To jak, gotowi do pierwszego rozpoznawania mowy?