Всем привет.
Внесу свои "пять копеек". Сразу скажу, что плохо знаком с принципом работы RHVoice и ОС Linux и не претендую на то что мое решение правильное. Так же прошу совета по более правильной реализации.
Появилась необходимость в синтезе речи через WEB-интерфейс. ОС Ubuntu (server). По инструкции с GIT'а собрать не удалось - не появился файл RHVoice-client. Так и не получилось правильно собрать программу. Но к счастью наткнулся на репозиторий Дмитрия -
https://launchpad.net/~linvinus/+archive/ubuntu/rhvoice/ Установил с репозитория, для теста, на свою машину и все замечательно работало. Спасибо Дмитрий.
Но когда поставил на сервере то оказалось, что RHVoice нужен dbus (на сервере его нет, как я понял, из-за отсутствия графической оболочки) и без него он отказывался запускаться. Гугление показало, что не я один с такой проблемой столкнулся.
Установил dbus-x11. Но RHVoice работал только пока была активна SSH сессия, притом с ключом -X. Как только я завершал сессию и запускал синтезатор через web-сервис все сразу переставало работать.
Продолжил гуглить. Сначала наткнулся на коммент
https://github.com/Olga-Yakovleva/RHVoice/issues/10#issuecomment-139739534 И выполнив рекомендации все таки запустил синтезатор на сервере. И все хорошо работало, но потом я заметил десятки процессов RHVoice и dbus-daemon на сервере, которые жрали ресурсы. Как оказалось, копии этих процессов запускались с каждым вызовом синтезатора через web-интерфейс!
Дальше я уже нагуглить ни чего не смог и путем проб и ошибок пришел к такому решению
1. Написал скрипт, выполняющий dbus-lunch и сохраняющий вывод программы в файл: dbus-launch > /project_dir/dbus_vars
2. Скрипт добавил в автозагрузку ОС (/etc/rc.local)
3. При вызове RHVoice внутри web-сервиса каждый раз выполняется команда: export $(cat /project_dir/dbus_vars)
Внутри web-сервиса вызов синтезатора производится примерно так:
export $(cat /project_dir/dbus_vars) && echo "Текст аудиозаписи" | RHVoice-client ...
Теперь процессы перечисленных выше сервисов не плодятся с каждым вызовом синтезатора, а RHVoice работает без графической оболочки, которую не хотелось ставить на сервер.
Такая вот история =) Надеюсь кому-то пригодиться.
Скину сюда еще ошибку, которую вспомнил, пусть проиндексируется.
error: Cannot autolaunch D-Bus without X11 $DISPLAY