Aplikacje czułe na głos

Microsoft opublikował kolejną wersję pakietu programistycznego Speech API, służącego do konstruowania aplikacji sterowanych głosem.

Microsoft opublikował kolejną wersję pakietu programistycznego Speech API, służącego do konstruowania aplikacji sterowanych głosem.

Speech API 5.0 pozwala na tworzenie aplikacji, które przy użyciu programowego syntezatora mowy wypowiadają określone kwestie, a także takich, które umożliwiają użytkownikowi wydawanie polecenia głosem. Przy użyciu tego pakietu SDK (Software Development Kit) Microsoft tworzy interfejs sterowania głosem do aplikacji biurowych wchodzących w skład Office 10.

Problem dobrze znany

Mechanizmy rozpoznawania mowy są dosyć dobrze znane i szeroko opisane w literaturze. Opierają się zwykle na pewnym algorytmie statystycznym albo związanym z teorią sieci neuronowych, który pozwala, aby motor rozpoznający mowę "przyzwyczaił się" po krótkim treningu do sposobu wymowy konkretnego użytkownika. Mimo iż bez problemu można spowodować, by komputer rozpoznał z pewną tolerancją błędu wypowiadane słowa, to nie wiadomo jednak co robić, gdy wypowiedziana fraza pasuje do więcej niż jednego słowa. Zdarza się także, że pojedyncze słowo wypowiadane w dłuższym kontekście brzmi inaczej.

Uniwersalne systemy rozpoznawania mowy są zwykle bardzo złożone i tak naprawdę bezużyteczne do profesjonalnych zastosowań. SAPI 5.0 jest pierwszą propozycją interfejsu programistycznego, który umożliwia przy stosunkowo niewielkim wysiłku dodanie do aplikacji funkcji wydawania poleceń głosem, a także pozwala, by komputer "przemówił" do użytkownika. Nie wymaga przechowywania w komputerze olbrzymich plików z nagraniami mowy.

Z czego składa się SAPI

Biblioteki Speech API można podzielić na trzy części. Podstawowy moduł to zbiór obiektów COM, udostępniających niezbędne usługi do wykorzystania w aplikacji. Są to obiekty wysokiego poziomu, pozwalające określić właściwy motor rozpoznawania mowy czy sposób syntezy.

W SAPI ciekawie rozwiązano problem synchronizacji poszczególnych etapów rozpoznawania i syntezy mowy z wyświetlaniem grafiki czy pojawianiem się nowych opcji w menu. Programista może określić, jakie zdarzenia mają być przekazywane do jego programu i w zależnoś- ci od dodatkowych warunków decydować o dalszym sposobie syntezy mowy. Umożliwia to bardzo efektowną prezentację kolejnych etapów rozpoznawania wypowiadanego tekstu - użytkownik może obserwować, jak w miarę mówienia zmienia się fraza rozpoznana przez SAPI.

Drugim modułem, zależnym od języka, jest moduł syntezy mowy. Korzysta on ze specjalnego motoru TTS (TextToSpeech), w którym może być określony "lektor" wypowiadający frazy czy parametry mowy - intonacja, tempo itp. Konstrukcja tego modułu przypomina rozwiązania, które były dostępne już w SAPI 4.0 i w modułach wspomagających tworzenie interfejsów głosowych dla niewidomych.

Z TTS współpracuje specjalny słownik. Pozwala on rozszerzać definicje słownictwa określone w motorze. W ten sposób można wzbogacić gotowy motor o precyzyjną wymowę specjalistycznych słów. Słownik wykorzystywany jest także przy rozpoznawaniu mowy (pozwala przydzielać wagi).

Najbardziej złożonym komponentem jest moduł rozpoznawania mowy. Podstawowy moduł nie tyle rozpoznaje wypowiadane słowa, ile raczej przypisuje poszczególnym frazom wagę i stopień podobieństwa. Programista może zdefiniować odpowiednią gramatykę (dostosowaną do interfejsu konkretnej aplikacji), a następnie zainicjować motor, określając, że rozpoznawane frazy mają być zgodne z zadaną gramatyką bezkontekstową.

Wbrew pozorom format tej gramatyki nie jest skomplikowany. Jest to spec-jalny plik XML, który określa ciąg reguł pozwalających na dokonywanie redukcji rozpoznawanej frazy. Ponieważ SAPI posługuje się tylko gramatyką bezkontekstową (która czasami nie pozwala jednoznacznie przekształcać rozpoznanej frazy), w wątpliwych momentach może zgłaszać zdarzenie do programu nadrzędnego, który może zmodyfikować na bieżąco reguły gramatyki.

Niestety, nie będzie opracowana ofic- jalna wersja motoru rozpoznawania i syntezy dla języka polskiego (także w Office 10!). Obecnie w pakiecie SDK dostępne są trzy motory dla języków: angielskiego, chińskiego i japońskiego. Dla angielskiego - moduł rozpoznawania i syntezy, a także nagłówki, pliki przykładowe zajmują łącznie ok. 25 MB. Motor języka japońskiego to 48 MB, chińskiego - 61 MB. Microsoft dostarczył bardzo czytelny wzorzec, pozwalający na samodzielne konstruowanie motorów w przypadku innych języków. Dostępny jest też specjalny pakiet testujący zgodność maszyny ze specyfikacją SAPI. Należy podkreślić jednak, że podstawowy problem leży nie tyle w rozpoznaniu mowy, ile w opracowaniu odpowiednich reguł gramatycznychi i słowników odpowiadających danemu zastosowaniu.

Gadający interfejs

Nowe SAPI może przynieść rewolucję w interfejsie użytkowym. Dzięki temu, że dla danego motoru można definiować w zasadzie dowolne gramatyki (które np. ograniczą rozpoznawane frazy do kilku potrzebnych, podstawowych poleceń), programista nie musi tworzyć olbrzymich, złożonych modeli. W wersji dla języka angielskiego bardzo sprawnie działają moduły pozwalające dyktować tekst. W przykładach dołączonych do SAPI znajduje się notatnik rozpoznający mowę. Moduł "próbkujący" wypowiadane słowa jest dosyć odporny na zakłócenia. Kilkuminutowy trening maszyny dostosowanej do języka angielskiego pozwala, by nawet osoba niezbyt poprawnie wypowiadająca słowa mogła wydawać polecenia komputerowi.

SAPI 5.0 można łatwo połączyć z modułem API do obsługi telefonów. W ten sposób powstanie oprogramowanie automatycznej sekretarki czy cały system call center, który rozumie pewne polecenia i potrafi automatycznie dostarczać na żądanie odpowiednie informacje.

Okrojona wersja SAPI jest dostępna także dla Windows CE. Jednak Microsoft podaje dosyć wysokie wymagania dla modułu pozwalającego na dyktowanie tekstu - zalecana konfiguracja to Pentium II 300 MHz ze 128 MB RAM.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200