Speech: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Строка 71: Строка 71:
При помощи этих команд можно выполнить манипуляции, и новая конфигурация будет задействована при следующем старте сервера.
При помощи этих команд можно выполнить манипуляции, и новая конфигурация будет задействована при следующем старте сервера.
== Установка речевых компонентов на систему '''ALT Linux''' ==
== Установка речевых компонентов на систему '''ALT Linux''' ==
Для установки речевого вывода на систему '''ALT Linux''' в репозитории <tt>4.1/branch</tt> доступны следующие пакеты:
* <tt>voiceman-config-espeak</tt> - устанавливает речевой вывод, основанный не синтезаторе <tt>espeak</tt>;
* <tt>voiceman-config-espeak-ru_tts</tt> - устанавливает речевой вывод, используя синтезатор <tt>espeak</tt> для английского языка и <tt>ru_tts</tt> - для русского;
* <tt>voiceman-config-mbrola-ru_tts</tt> - устанавливает речевой вывод, используя синтезатор <tt>mbrola</tt> для английского языка и <tt>ru_tts</tt> - для русского.
Установка любого из этих пакетов выполнит все необходимые конфигурационные операции, которые требуются для работы программ-чтецов. Эти пакеты также можно ставить один поверх другого, как средство изменения конфигурации. В этом случае пакет, который был установлен системе, будет удалён автоматически. Эта операция совершенно безопасна, но изменение конфигурации при помощи средств <tt>VoiceMan</tt> предпочтительнее.


== Как упаковать речевой синтезатор в пакет <tt>RPM</tt>? ==
== Как упаковать речевой синтезатор в пакет <tt>RPM</tt>? ==

Версия от 17:56, 22 ноября 2008


Речевые технологии

На этой странице рассматриваются основные вопросы работы с речевыми синтезаторами с точки зрения их применения как средства вывода информации при работе на компьютере без зрительного контроля. Сейчас подготовлены к работе следующие синтезаторы:

  • festival (с поддержкой русского языка);
  • espeak;
  • flite;
  • mbrola;
  • freetts;
  • ru_tts.

Не все из приведённых синтезаторов удовлетворяют описанной ниже схеме.

Механизм унифицированной работы с речевыми синтезаторами

Идея унифицированного вызова речевых синтезаторов заключается в том, чтобы перенаправлять речевую информацию от всех программ источников не напрямую в синтезатор, а в некоторое промежуточное программное обеспечение для предварительной обработки. Такой подход даёт возможность модифицировать порядок вызова синтезаторов и распространить изменения на все источники речи в системе. Также это позволяет исключить наложение звука при одновременном воспроизведении от разных программ.

При рассмотрении вопросов речевого вывода уделяется особое внимание:

  • расширяемости - добавление в систему нового синтезатора или программы-источника не должно требовать модификаций всей системы речевого вывода;
  • управляемости - у пользователя должен быть единый инструмент управления параметрами вывода речи.

Речевой сервер VoiceMan

В ALT Linux вывод речи выполняет речевой сервер VoiceMan. Этот речевой сервер разрабатывался с 2003г. непосредственно для применения в среде ALT Linux. В него периодически вносятся изменения для более детальной интеграции в общий механизм вывода речи. Тем не менее, он не содержит каких-либо зависимостей на компоненты ALT Linux и может использоваться в любом дистрибутиве.

Функции сервера:

  • автоматическое переключение между синтезаторами для обработки разных национальных языков;
  • передача текстовой информации для произношения по сети;
  • единый конфигурационный файл;
  • некоторые возможности по предварительной обработке текста перед произношением;
  • полная UNICODE реализация.

Конфигурационный файл может быть собран автоматически при каждом запуске сервера из фрагментов, сохранённых в специальной директории. Это очень важная особенность, плотно используемая в общей системе управления синтезаторами.

VoiceMan не занимается самостоятельно выводом звука. Другими словами, в нём нет кода, для обращения к какой-либо звуковой библиотеке. Вывод звука выполняет внешняя программа. Вызов каждого синтезатора заключается в порождении новой группы процессов, и передаче главному процессу текста на поток стандартного ввода. Описание внутреннего устройства VoiceMan можно прочитать в документе с описанием архитектуры вывода речи на его основе.

В настоящий момент VoiceMan имеет следующие недостатки:

  • нет возможности дать команду серверу обновить конфигурацию без перезагрузки всего сервера;
  • неполная обработка команд emacspeak, что приводит к недостаточной регулировке скоростью речи;
  • неисследованная ошибка, приводящая к задержке при постраничной прокрутке в emacspeak;
  • в конфигурационных параметрах синтезатора явно указан вывод звука в ALSA через вызов утилиты aplay. Нужно сделать замену на специальный скрипт, который будет способен выполнять переключение на утилиту paplay пакета PulseAudio для случаев, когда требуется программное смешивание звука.

Возможно, это будет не нужно, т. к. PulseAudio способен выполнять перехват вывода от ALSA нна системном уровне.

Speech Dispatcher и другие варианты речевых серверов

Речевой сервер VoiceMan не единственный вариант приложения, который способен решать описанные задачи. Также для этих задач может применяться известная разработка Speech Dispatcher. Существует возможность распространить приводимую концепцию и на Speech Dispatcher, если конфигурационные возможности сервера окажутся достаточно гибкими, чтобы удовлетворять схеме, описанной ниже.Speech DispatcherБ упакован и помещён в репозитарий. Любые предложения по его поддержки принимаются и будут рассмотрены. Это утверждение также справедливо и для сервера multispeech.

ПВ вопросах применения различных серверов речи существует только одно ограничение: VoiceMan предпочтительно оставить сервером по умолчанию для программ-чтецов. Это связано с тем, что при установки пользователь должен получать максимально подготовленную и согласованную среду. В настоящий момент этому вопросу уделяется серьёзное внимание.

Как это устроено?

Директория /etc/tts.d

Ключевую роль в описываемой схеме играет директория /etc/tts.d. Предполагается, что каждый пакет с речевым синтезатором будет добавлять в эту директорию один или несколько файлов, достаточных, чтобы организовать взаимодействие с этим синтезатором каких-либо речевых серверов.

Рассмотрим пример : мы хотим установить синтезатор espeak. В пакете этого синтезатора присутствуют два файла:

  • /etc/tts.d/espeak.voiceman
  • /etc/tts.d/espeak-ru.voiceman

Эти файлы содержат необходимую конфигурационную информацию для работы с английским и русским языком в сервере VoiceMan. Расширение .voiceman обозначает, что конфигурация предназначена именно для сервера VoiceMan. Допускается, чтобы в пакете также поставлялась конфигурационная информация и для других серверов. Например, файлы для Speech Dispatcher должны иметь расширение .spd.

Содержимое директории /etc/tts.d фактически показывает, какие синтезаторы способны работать с какими речевыми серверами. Содержимое файлов для VoiceMan будет приведено ниже.

Использование файлов из директории /etc/tts.d

Как указывалось выше, сервер VoiceMan имеет единый конфигурационный файл, который при запуске составляется из фрагментов. В частности, директория /etc/voiceman.d содержит фрагменты, которые будут пристыкованы к главному файлу конфигурации при каждом запуске сервера.

Директория /etc/voiceman.d должна содержать символьные ссылки на файлы директории /etc/tts.d, указывающие, какие именно синтезаторы должны быть использованы в работе сервера. Манипулируя этими ссылками можно получить желаемое сочетание синтезаторов для работы с английским и русским языками. Эти ссылки не нужно создавать вручную. Доступны пять команд, для работы с ними:

  • voiceman-available - перечисляет все синтезаторы, доступные для работы на текущей системе;
  • voiceman-list - перечисляет синтезаторы, подключенные для работы с VoiceMan;
  • voiceman-enable и voiceman-disable - подключают и отключают некоторый синтезатор;
  • voiceman-clear - отключает все синтезаторы от использования в VoiceMan.

При помощи этих команд можно выполнить манипуляции, и новая конфигурация будет задействована при следующем старте сервера.

Установка речевых компонентов на систему ALT Linux

Для установки речевого вывода на систему ALT Linux в репозитории 4.1/branch доступны следующие пакеты:

  • voiceman-config-espeak - устанавливает речевой вывод, основанный не синтезаторе espeak;
  • voiceman-config-espeak-ru_tts - устанавливает речевой вывод, используя синтезатор espeak для английского языка и ru_tts - для русского;
  • voiceman-config-mbrola-ru_tts - устанавливает речевой вывод, используя синтезатор mbrola для английского языка и ru_tts - для русского.

Установка любого из этих пакетов выполнит все необходимые конфигурационные операции, которые требуются для работы программ-чтецов. Эти пакеты также можно ставить один поверх другого, как средство изменения конфигурации. В этом случае пакет, который был установлен системе, будет удалён автоматически. Эта операция совершенно безопасна, но изменение конфигурации при помощи средств VoiceMan предпочтительнее.

Как упаковать речевой синтезатор в пакет RPM?