Interfejs API języka Java
Java Speech API (JSAPI) to interfejs programowania aplikacji do wieloplatformowej obsługi rozpoznawania poleceń i kontroli, systemów dyktowania i syntezatorów mowy . Chociaż JSAPI definiuje tylko interfejs, istnieje kilka implementacji stworzonych przez strony trzecie, na przykład FreeTTS . [ potrzebne źródło ]
Podstawowe technologie
Interfejs Java Speech API obsługuje dwie podstawowe technologie mowy: syntezę mowy i rozpoznawanie mowy . [1]
Synteza mowy
Synteza mowy zapewnia proces odwrotny do tworzenia syntetycznej mowy z tekstu generowanego przez aplikację, aplet lub użytkownika. Jest często określany jako technologia zamiany tekstu na mowę.
Główne etapy tworzenia mowy z tekstu są następujące:
- Analiza struktury: przetwarza tekst wejściowy w celu określenia, gdzie zaczynają się i kończą akapity, zdania i inne struktury. W przypadku większości języków na tym etapie używane są dane dotyczące interpunkcji i formatowania.
- Wstępne przetwarzanie tekstu: analizuje tekst wejściowy pod kątem specjalnych konstrukcji języka. W języku angielskim wymagane jest specjalne traktowanie skrótów, akronimów, dat, godzin, liczb, kwot w walutach, adresów e-mail i wielu innych form. Inne języki wymagają specjalnego przetwarzania tych formularzy, a większość języków ma inne specjalistyczne wymagania.
Wynikiem tych dwóch pierwszych kroków jest mówiona forma tekstu pisanego. Oto przykłady różnic między tekstem pisanym a mówionym:
Szpital św. Mateusza znajduje się na Main St. -> „Szpital św. Mateusza znajduje się na Main Street” Dodaj 20 dolarów na konto 55374. -> „Dodaj dwadzieścia dolarów na konto pięć pięć, trzy siedem cztery”.
Pozostałe kroki konwertują tekst mówiony na mowę:
- Konwersja tekstu na fonem: konwertuje każde słowo na fonemy. Fonem to podstawowa jednostka dźwięku w języku.
- Analiza prozodii: przetwarza strukturę zdania, słowa i fonemy w celu określenia odpowiedniej prozodii dla zdania.
- Produkcja fal: Wykorzystuje fonemy i informacje prozodyczne do tworzenia fali dźwiękowej dla każdego zdania.
Syntezatory mowy mogą popełniać błędy na każdym z opisanych powyżej etapów przetwarzania. Ludzkie uszy są dobrze przystosowane do wykrywania tych błędów, ale uważna praca programistów może zminimalizować błędy i poprawić jakość mowy.
Rozpoznawanie mowy
Rozpoznawanie mowy zapewnia komputerom możliwość słuchania języka mówionego i określania, co zostało powiedziane. Innymi słowy, przetwarza dane wejściowe audio zawierające mowę, konwertując je na tekst.
Główne kroki typowego aparatu rozpoznawania mowy są następujące:
- Projekt gramatyki: definiuje słowa, które mogą być wypowiadane przez użytkownika, oraz wzorce, w jakich mogą być wypowiadane.
- Przetwarzanie sygnału: Analizuje charakterystykę widma (tj. częstotliwości) przychodzącego dźwięku.
- Rozpoznawanie fonemów: Porównuje wzorce widma do wzorców fonemów rozpoznawanego języka.
- Rozpoznawanie słów: Porównuje sekwencję prawdopodobnych fonemów ze słowami i wzorami słów określonymi przez aktywne gramatyki.
- Generowanie wyników: dostarcza aplikacji informacje o słowach wykrytych przez aparat rozpoznawania w przychodzącym dźwięku.
Gramatyka to obiekt w interfejsie Java Speech API, który wskazuje , jakie słowa użytkownik ma wypowiedzieć i w jakich wzorach mogą one występować. Gramatyki są ważne dla aparatów rozpoznawania mowy, ponieważ ograniczają proces rozpoznawania. Te ograniczenia sprawiają, że rozpoznawanie jest szybsze i dokładniejsze, ponieważ aparat rozpoznawania nie musi sprawdzać dziwacznych zdań.
Java Speech API 1 obsługuje dwa podstawowe typy gramatyki: gramatykę regułową i gramatykę dyktowania. Te typy różnią się na różne sposoby, w tym sposobem konfigurowania gramatyk przez aplikacje; typy zdań, na które pozwalają; w jaki sposób dostarczane są wyniki; ilość wymaganych zasobów obliczeniowych; i jak są one wykorzystywane w projektowaniu aplikacji. Gramatyki reguł są zdefiniowane w JSAPI 1 przez JSGF , Java Speech Grammar Format.
Klasy i interfejsy Java Speech API
Różne klasy i interfejsy, które tworzą Java Speech API, są pogrupowane w następujące trzy pakiety:
- javax.speech : Zawiera klasy i interfejsy dla ogólnego mechanizmu mowy.
- javax.speech.synthesis : Zawiera klasy i interfejsy do syntezy mowy.
- javax.speech.recognition : Zawiera klasy i interfejsy do rozpoznawania mowy.
Klasa EngineManager przypomina klasę fabryczną używaną przez wszystkie aplikacje Java Speech API. Zapewnia statyczne metody umożliwiające dostęp do silników syntezy mowy i rozpoznawania mowy. Interfejs aparatu obejmuje ogólne operacje, które aparat mowy zgodny z interfejsem Java Speech API powinien zapewniać aplikacjom mowy.
Aplikacje mowy mogą przede wszystkim używać metod do wykonywania akcji, takich jak pobieranie właściwości i stanu aparatu mowy oraz przydzielanie i zwalnianie zasobów dla aparatu mowy. Ponadto interfejs silnika udostępnia mechanizmy wstrzymywania i wznawiania strumienia audio generowanego lub przetwarzanego przez silnik mowy. AudioManager może manipulować strumieniami. Interfejs silnika jest podklasowany przez interfejsy syntezatora i rozpoznawania, które definiują dodatkowe funkcje syntezy mowy i rozpoznawania mowy. Interfejs syntezatora hermetyzuje operacje silnika syntezy mowy zgodnego z Java Speech API dla aplikacji mowy.
Interfejs Java Speech API jest oparty na obsłudze zdarzeń. Zdarzenia generowane przez silnik mowy można identyfikować i obsługiwać zgodnie z wymaganiami. Zdarzenia mowy mogą być obsługiwane przez interfejs EngineListener, w szczególności przez RecognizerListener i SynthesizerListener.
Powiązane specyfikacje
Interfejs Java Speech API został napisany przed Java Community Process (JCP) i był przeznaczony dla platformy Java w wersji standardowej (Java SE). Następnie utworzono Java Speech API 2 (JSAPI2) jako JSR 113 w ramach JCP. Ten interfejs API jest przeznaczony dla platformy Java, Micro Edition (Java ME), ale jest również zgodny z Java SE.
- Często zadawane pytania dotyczące Java Speech API firmy Sun/Oracle
- JavaDocs dla JSAPI 1
- Open Source Wrapper JSAPI 2
- Technologia ta jest wykorzystywana do różnych celów związanych z bezpieczeństwem