Java Speech API (JSAPI) — это интерфейс прикладного программирования для кроссплатформенной поддержки распознавателей команд и управления, систем диктовки и синтезаторов речи . Хотя JSAPI определяет только интерфейс, существует несколько реализаций, созданных третьими лицами, например FreeTTS . [ необходима цитата ]
Через Java Speech API поддерживаются две основные речевые технологии: синтез речи и распознавание речи .[1]
Синтез речи обеспечивает обратный процесс создания синтетической речи из текста, сгенерированного приложением, апплетом или пользователем. Его часто называют технологией преобразования текста в речь.
Основные этапы создания речи из текста следующие:
Результатом этих первых двух шагов является устная форма письменного текста. Вот примеры различий между письменным и устным текстом:
Больница Святого Матфея находится на Мэйн-стрит.-> «Больница Святого Матфея находится на Мейн-стрит»Добавьте 20 долларов на счет 55374.-> «Добавьте двадцать долларов к счету пять пять, три семь четыре».
Оставшиеся шаги преобразуют устный текст в речь:
Синтезаторы речи могут допускать ошибки на любом из этапов обработки, описанных выше. Человеческие уши хорошо настроены на обнаружение этих ошибок, но тщательная работа разработчиков может минимизировать ошибки и улучшить качество речевого вывода.
Распознавание речи дает компьютерам возможность слушать устную речь и определять, что было сказано. Другими словами, оно обрабатывает аудиовход, содержащий речь, преобразуя его в текст.
Основные этапы типичного распознавателя речи следующие:
Грамматика — это объект в Java Speech API, который указывает, какие слова пользователь должен произнести и в каких шаблонах эти слова могут встречаться. Грамматика важна для распознавателей речи, поскольку она ограничивает процесс распознавания. Эти ограничения делают распознавание более быстрым и точным, поскольку распознавателю не нужно проверять наличие странных предложений.
Java Speech API 1 поддерживает два основных типа грамматики: грамматики правил и грамматики диктовки. Эти типы различаются по-разному, включая то, как приложения настраивают грамматики; типы предложений, которые они допускают; как предоставляются результаты; объем требуемых вычислительных ресурсов; и как они используются в разработке приложений. Грамматики правил определены в JSAPI 1 JSGF , форматом грамматики речи Java.
Различные классы и интерфейсы, образующие Java Speech API, сгруппированы в следующие три пакета:
Класс EngineManager подобен классу фабрики, используемому всеми приложениями Java Speech API. Он предоставляет статические методы для обеспечения доступа к движкам синтеза и распознавания речи. Интерфейс Engine инкапсулирует общие операции, которые речевой движок, совместимый с Java Speech API, должен предоставлять для речевых приложений.
Речевые приложения могут в первую очередь использовать методы для выполнения таких действий, как получение свойств и состояния речевого движка, а также выделение и освобождение ресурсов для речевого движка. Кроме того, интерфейс Engine предоставляет механизмы для приостановки и возобновления аудиопотока, сгенерированного или обработанного речевым движком. AudioManager может управлять потоками. Интерфейс Engine является подклассом интерфейсов Synthesizer и Recognizer, которые определяют дополнительные функции синтеза и распознавания речи. Интерфейс Synthesizer инкапсулирует операции речевого движка, совместимого с Java Speech API, для речевых приложений.
Java Speech API основан на обработке событий. События, генерируемые речевым движком, могут быть идентифицированы и обработаны по мере необходимости. Речевые события могут быть обработаны через интерфейс EngineListener, в частности через RecognizerListener и SynthesizerListener.
Java Speech API был написан до Java Community Process (JCP) и нацелен на Java Platform, Standard Edition (Java SE). Впоследствии Java Speech API 2 (JSAPI2) был создан как JSR 113 в рамках JCP. Этот API нацелен на Java Platform, Micro Edition (Java ME), но также соответствует Java SE.