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

VoiceMan --- речевой сервер, написанный на C++, для обработки речевого вывода в системах GNU/Linux. Создан для использования совместно с утилитами Emacspeak и Yasr. В настоящий момент является одним из ключевых компонентов в дистрибутиве Homeros. К созданию VoiceMan привела необходимость иметь речевой сервер, который был бы способен переключать синтезатор речи в зависимости от языка текста. Совместная работа с экранным чтецом Orca невозможна, потому что Orca имеет поддержку только речевого сервера speech-dispatcher (устранение этого недостатка не планируется, поскольку экранным чтецом Orca не пользуюсь).

В отличие от speech-dispatcher, VoiceMan не обслуживает вывод звука. Вызов синтезаторов и утилит воспроизведения выполняется путём выполнения внешних команд shell. Это делает VoiceMan очень гибким и универсальным.

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

Перечень функции Voiceman:

  • полная поддержка UNICODE;
  • согласование вывода нескольких приложений для исключения наложения речи (все клиенты считаются равноправными);
  • предварительный разбор и обработка полученного текста, включая разбиение данных на фрагменты по языку текста, обработку чисел в соответствии с выбранным режимом, выполнение подстановок, обработку сокращений и пр.;
  • поддержка двух языков: русского и английского;
  • обработка параметров речи: скорости, высоты голоса, громкости;
  • автоматический выбор подходящего синтезатора для чтения текста определённого языка;
  • выбор голоса по команде клиента для выделения различных элементов текста новым произношением (новый голос может быть новым синтезатором или уже используемым синтезатором с другими параметрами);
  • возможность "горячей" перезагрузки конфигурации сервера без потери существующих соединений;
  • набор клиентов для общения с сервером включает в себя простейший клиент для использования в скриптах shell, клиент для обработки протокола Emacspeak и API для программ на языках C/C++;
  • поддержка двух типов сокетов TCP/IP и UNIX domain socket.