Речевой API Java
Java Speech API (JSAPI) — это интерфейс прикладного программирования для кросс-платформенной поддержки распознавателей команд и элементов управления, систем диктовки и синтезаторов речи . Хотя JSAPI определяет только интерфейс, существует несколько реализаций, созданных третьими сторонами, например FreeTTS . [ нужна ссылка ]
Основные технологии
[ редактировать ]Через Java Speech API поддерживаются две основные речевые технологии: синтез речи и распознавание речи . [1]
Синтез речи
[ редактировать ]Синтез речи обеспечивает обратный процесс создания синтетической речи из текста, сгенерированного приложением, апплетом или пользователем. Ее часто называют технологией преобразования текста в речь.
Основные этапы создания речи из текста следующие:
- Анализ структуры: обрабатывает входной текст, чтобы определить, где начинаются и заканчиваются абзацы, предложения и другие структуры. Для большинства языков на этом этапе используются данные пунктуации и форматирования.
- Предварительная обработка текста: анализирует входной текст на наличие специальных конструкций языка. В английском языке требуется особый подход к сокращениям, аббревиатурам, датам, времени, числам, суммам в валюте, адресам электронной почты и многим другим формам. Другие языки требуют специальной обработки этих форм, и у большинства языков есть другие специализированные требования.
Результатом этих первых двух шагов является устная форма письменного текста. Вот примеры различий между письменным и устным текстом:
St. Matthew's hospital is on Main St. -> “Saint Matthew's hospital is on Main Street” Add $20 to account 55374. -> “Add twenty dollars to account five five, three seven four.”
Остальные шаги преобразуют произнесенный текст в речь:
- Преобразование текста в фонему: преобразует каждое слово в фонемы. Фонема – это основная звуковая единица языка.
- Анализ просодии: обрабатывает структуру предложения, слова и фонемы, чтобы определить подходящую просодию для предложения.
- Производство сигналов: использует фонемы и просодическую информацию для создания звуковых сигналов для каждого предложения.
Синтезаторы речи могут допускать ошибки на любом из этапов обработки, описанных выше. Человеческие уши хорошо приспособлены к обнаружению этих ошибок, но тщательная работа разработчиков может свести ошибки к минимуму и улучшить качество вывода речи.
Распознавание речи
[ редактировать ]Распознавание речи дает компьютерам возможность слушать разговорную речь и определять, что было сказано. Другими словами, он обрабатывает аудиовход, содержащий речь, преобразуя его в текст.
Основные этапы работы типичного распознавателя речи следующие:
- Грамматический дизайн: определяет слова, которые может произносить пользователь, и модели, в которых они могут произноситься.
- Обработка сигнала: анализирует спектральные (т. е. частотные) характеристики входящего звука.
- Распознавание фонем: сравнивает образцы спектра с образцами фонем распознаваемого языка.
- Распознавание слов: сравнивает последовательность вероятных фонем со словами и образцами слов, указанными в активной грамматике.
- Генерация результатов: предоставляет приложению информацию о словах, которые распознаватель обнаружил во входящем аудио.
Грамматика — это объект в Java Speech API, который указывает, какие слова должен произнести пользователь и в каких шаблонах эти слова могут встречаться. Грамматики важны для распознавателей речи, поскольку они ограничивают процесс распознавания. Эти ограничения делают распознавание более быстрым и точным, поскольку распознавателю не нужно проверять странные предложения.
Java Speech API 1 поддерживает два основных типа грамматик: грамматики правил и грамматики диктовки. Эти типы различаются по-разному, в том числе по тому, как приложения настраивают грамматики; типы предложений, которые они допускают; как предоставляются результаты; количество требуемых вычислительных ресурсов; и как они используются при разработке приложений. Грамматики правил определяются в JSAPI 1 с помощью JSGF , формата грамматики речи Java.
Классы и интерфейсы Java Speech API
[ редактировать ]Различные классы и интерфейсы, составляющие Java Speech API, сгруппированы в следующие три пакета:
- javax.speech : содержит классы и интерфейсы для общего речевого движка.
- javax.speech.synthesis : содержит классы и интерфейсы для синтеза речи.
- javax.speech.recognition : содержит классы и интерфейсы для распознавания речи.
Класс EngineManager похож на фабричный класс, используемый всеми приложениями Java Speech API. Он предоставляет статические методы для обеспечения доступа к механизмам синтеза и распознавания речи. Интерфейс Engine инкапсулирует общие операции, которые речевой механизм, совместимый с Java Speech API, должен обеспечивать для речевых приложений.
Речевые приложения могут в первую очередь использовать методы для выполнения таких действий, как получение свойств и состояния речевого механизма, а также выделение и освобождение ресурсов для речевого механизма. Кроме того, интерфейс Engine предоставляет механизмы для приостановки и возобновления аудиопотока, создаваемого или обрабатываемого речевым механизмом. AudioManager может управлять потоками. Интерфейс Engine является подклассом интерфейсов Синтезатор и Распознаватель, которые определяют дополнительные функции синтеза и распознавания речи. Интерфейс Synthesizer инкапсулирует операции механизма синтеза речи, совместимого с Java Speech API, для речевых приложений.
API речи Java основан на обработке событий. События, генерируемые речевым механизмом, можно идентифицировать и обрабатывать по мере необходимости. Речевые события могут обрабатываться через интерфейс EngineListener, в частности, через RecouncerListener и SynthesizerListener.
Сопутствующие характеристики
[ редактировать ]API речи Java был написан до процесса сообщества Java (JCP) и ориентирован на платформу Java Standard Edition (Java SE). Впоследствии Java Speech API 2 (JSAPI2) был создан как JSR 113 в рамках JCP. Этот API предназначен для платформы Java Micro Edition (Java ME), но также соответствует Java SE.
Ссылки
[ редактировать ]- Часто задаваемые вопросы по Java Speech API от Sun/Oracle
- JavaDocs для JSAPI 1
- Оболочка JSAPI 2 с открытым исходным кодом
- Эта технология используется для различных целей безопасности.