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.