Speech
Речевые технологии
На этой странице рассматриваются основные вопросы работы с речевыми синтезаторами с точки зрения их применения как средства вывода информации при работе на компьютере без зрительного контроля. Сейчас подготовлены к работе следующие синтезаторы:
- festival (с поддержкой русского языка);
- espeak;
- flite;
- mbrola;
- freetts;
- ru_tts.
Не все из приведённых синтезаторов удовлетворяют описанной ниже схеме.
Механизм унифицированной работы с речевыми синтезаторами
Идея унифицированного вызова речевых синтезаторов заключается в том, чтобы перенаправлять речевую информацию от всех программ источников не напрямую в синтезатор, а в некоторое промежуточное программное обеспечение для предварительной обработки. Такой подход даёт возможность модифицировать порядок вызова синтезаторов и распространить изменения на все источники речи в системе. Также это позволяет исключить наложение звука при одновременном воспроизведении от разных программ.
При рассмотрении вопросов речевого вывода уделяется особое внимание:
- расширяемости - добавление в систему нового синтезатора или программы-источника не должно требовать модификаций всей системы речевого вывода;
- управляемости - у пользователя должен быть единый инструмент управления параметрами вывода речи.
Речевой сервер VoiceMan
В ALT Linux вывод речи выполняет речевой сервер VoiceMan. Этот речевой сервер разрабатывался с 2003г. непосредственно для применения в среде ALT Linux. В него периодически вносятся изменения для более детальной интеграции в общий механизм вывода речи. Тем не менее, он не содержит каких-либо зависимостей на компоненты ALT Linux и может использоваться в любом дистрибутиве.
Функции сервера:
- автоматическое переключение между синтезаторами для обработки разных национальных языков;
- передача текстовой информации для произношения по сети;
- единый конфигурационный файл;
- некоторые возможности по предварительной обработке текста перед произношением;
- полная UNICODE реализация.
Конфигурационный файл может быть собран автоматически при каждом запуске сервера из фрагментов, сохранённых в специальной директории. Это очень важная особенность, плотно используемая в общей системе управления синтезаторами.
VoiceMan не занимается самостоятельно выводом звука. Другими словами, в нём нет кода, для обращения к какой-либо звуковой библиотеке. Вывод звука выполняет внешняя программа. Вызов каждого синтезатора заключается в порождении новой группы процессов, и передаче главному процессу текста на поток стандартного ввода.
Описание внутреннего устройства VoiceMan можно прочитать в документе с описанием архитектуры вывода речи на его основе.
В настоящий момент VoiceMan имеет следующие недостатки:
- неполная обработка команд emacspeak, что приводит к недостаточной регулировке скоростьи речи;
- неисследованная ошибка, приводящая к задержке при постраничной прокрутке в emacspeak;
- в конфигурационных параметрах синтезатора явно указан вывод звука в ALSA через вызов утилиты aplay. Возможно, нужно сделать замену на специальный скрипт, который будет способен выполнять переключение на утилиту palay пакета PulseAudio для случаев, когда требуется программное смешивание звука.
Speech Dispatcher
Также для этих задач может применяться Speech Dispatcher. Любые идеи о том, как можно интегрировать Speech Dispatcher в описываемую схему приветствуются. На текущий момент эта разработка собрана и помещена в репозитарий. Пользователь может её установить и работать с ней, но все конфигурационные операции необходимо выполнять вручную.