Участник:Petr-akhlamov/Наработки по речи: различия между версиями
(→Речь) |
(→Речь) |
||
Строка 147: | Строка 147: | ||
spd-say #произнести текст (по-умолчанию только на английском) | spd-say #произнести текст (по-умолчанию только на английском) | ||
sdpsend #отправка на какой-то сервер с портом | sdpsend #отправка на какой-то сервер с портом | ||
*orca | |||
# apt-get install orca | |||
*пакеты festival для speech-dispatcher | |||
# apt-get install festival-freebsoft-utils | |||
== | ==Проверяем фестиваль== | ||
$ spd-say -o festival -l en hello | |||
^работает | |||
$ spd-say -o festival -l russian привет | |||
^не работает | |||
==служба speech-dispatcherd.service не запускается== | |||
Логи в Альте: | |||
systemctl status speech-dispatcherd.service | |||
× speech-dispatcherd.service - Speech-Dispatcher an high-level device independent layer for speech synthesis. | |||
Loaded: loaded (/lib/systemd/system/speech-dispatcherd.service; enabled; vendor preset: disabled) | |||
Active: failed (Result: exit-code) since Tue 2024-09-24 15:01:24 MSK; 16min ago | |||
CPU: 13ms | |||
сен 24 15:01:24 client.petr.ru systemd[1]: Starting Speech-Dispatcher an high-level device independent layer for speech synthesis.... | |||
сен 24 15:01:24 client.petr.ru speech-dispatcher[12365]: [Tue Sep 24 15:01:24 2024 : 53693] speechd: Speech Dispatcher 0.10.2 starting | |||
сен 24 15:01:24 client.petr.ru systemd[1]: speech-dispatcherd.service: Control process exited, code=exited, status=1/FAILURE | |||
сен 24 15:01:24 client.petr.ru systemd[1]: speech-dispatcherd.service: Failed with result 'exit-code'. | |||
сен 24 15:01:24 client.petr.ru systemd[1]: Failed to start Speech-Dispatcher an high-level device independent layer for speech synthesis.. | |||
Похожий лог в Manjaro: | |||
https://github.com/brailcom/speechd/issues/640?ysclid=m1gbv94cme875550317 | |||
Nov 10 21:42:32 wiley speech-dispatcher[3128]: [Wed Nov 10 21:42:32 2021 : 132158] speechd: Speech Dispatcher 0.10.2 starting | |||
Nov 10 21:42:32 wiley systemd[1]: speech-dispatcherd.service: Control process exited, code=exited, status=1/FAILURE | |||
░░ Subject: Unit process exited | |||
░░ Defined-By: systemd | |||
░░ Support: https://forum.manjaro.org/c/support | |||
░░ | |||
░░ An ExecStart= process belonging to unit speech-dispatcherd.service has exited. | |||
░░ | |||
░░ The process' exit code is 'exited' and its exit status is 1. | |||
Nov 10 21:42:32 wiley systemd[1]: speech-dispatcherd.service: Failed with result 'exit-code'. | |||
░░ Subject: Unit failed | |||
░░ Defined-By: systemd | |||
░░ Support: https://forum.manjaro.org/c/support | |||
░░ | |||
░░ The unit speech-dispatcherd.service has entered the 'failed' state with result 'exit-code'. | |||
Nov 10 21:42:32 wiley systemd[1]: Failed to start Speech-Dispatcher an high-level device independent layer for speech synthesis.. | |||
░░ Subject: A start job for unit speech-dispatcherd.service has failed | |||
░░ Defined-By: systemd | |||
░░ Support: https://forum.manjaro.org/c/support | |||
░░ | |||
░░ A start job for unit speech-dispatcherd.service has finished with a failure. | |||
░░ | |||
░░ The job identifier is 1578 and the job result is failed. | |||
Советуют тпроверить командами: | |||
>spd-say -O | |||
^показывает список подключенных к speech dispatcher модулей | |||
OUTPUT MODULES | OUTPUT MODULES | ||
flite | flite | ||
espeak | espeak | ||
>spd-say -L | |||
^получить список синтезируемых голосов | |||
==RHVoice== | |||
/etc/speech-dispatcher/ | Если в | ||
/etc/speech-dispatcher/speechd.conf | |||
-расскомментировать | |||
#AddModule "rhvoice" "sd_rhvoice" "rhvoice.conf" | |||
-прописать в | |||
DefaultModule rhvoice | |||
-LanguageDefaultModule "en" "rhvoice" | |||
-LanguageDefaultModule "ru" "rhvoice" | |||
После прописывания ошибка: | |||
error: Can't connect to unix socket /run/user/500/speech-dispatcher/speechd.sock: В соединении отказано. Autospawn: Autospawn failed. Speech Dispatcher refused to start with error code, stating this as a reason: | |||
/ | <pre> | ||
Согласно https://www.linux.org.ru/forum/general/15808827?ysclid=m1gc0536k614290331 | |||
spd-say не умеет WAV в stdout вообще. Пользуй RHVoice-test. См. https://github.com/Olga-Yakovleva/RHVoice/issues/140 | |||
| | |||
| | |||
->https://github.com/RHVoice/RHVoice/issues/140 | |||
Советуют: | |||
echo "привет" | RHVoice-test -p elena -o /dev/stdout 2>/dev/null | aplay /dev/stdin 2>/dev/null | |||
| | |||
| | |||
->Yes, I can use speetch-despatcher. But how do I use external players in spd-say? | |||
|-->oh sorry At first I did not understand your situation completely. Unfortunately, this is not possible at the moment. ticket in upstream. https://github.com/brailcom/speechd/issues/348 | |||
|-->Speechd/получать звук в виде бинарника https://github.com/brailcom/speechd/issues/348 | |||
|-->Speech-dispatcher не работает с RHVoice https://github.com/RHVoice/RHVoice/issues/178 Это проблема не RHVoice, а SD. | |||
</pre> | |||
==Настройка Speechd для RHVoice== | |||
http://linux.tiflocomp.ru/docs/spd_rhvoice_festival.php?ysclid=m1gcfhzn1z592561148 |
Версия от 15:50, 24 сентября 2024
Словари
Вот, что получилось по озвучке в Словарях:
Есть три словаря:
- GoldenDict
- QstarDict
- StarDict
Есть ограниченный набор озвученных слов:
- WyabdcRealPeopleTTS
Файлы TTS лежат в:
/usr/share/WyabdcRealPeopleTTS /usr/share/OtdRealPeopleTTS
Есть файл словарей:
- stardict-slovnyk_en-ru
- stardict-slovnyk_ru-en
- stardict-quick_en-ru
- stardict-quick_ru-en
Работать будем с StarDict, потому что именно там получилось завести озвучку.
Установка
# apt-get install startdict # apt-get install stardict-slovnyk_en-ru stardict-slovnyk_ru-en stardict-quick_en-ru stardict-quick_ru-en
Попытки сделать озвучку
Где озвучка работает без Festival
StartDict/GoldenDict. В настройках звука программы.
английские слова читаются при:
- goldendict - использовать встроенный плеер
- stardict - aplay и все снято
Разборки с Festival
Первая попытка
if grep [аяоёуюэеыи]' then festival --tts --language russian' else festival --tts'
Попытка исправления синтаксиса нейросетью
Сгенерировал так:
bash if echo "$GDWORD" | grep -q '[аяоёуюэеыи]'; then echo "$GDWORD" | festival --tts --language russian else echo "$GDWORD" | festival --tts fi
В одну строчку сделал так:
if echo "$GDWORD" | grep -q '[аяоёуюэеыи]'; then echo "$GDWORD" | festival --tts --language russian else echo "$GDWORD" | festival --tts fi
Звук в словарях не работает. Консоль ругается на синтаксис.
Формат чтения словаря
Как я думал читает слова фестиваль в словарях:
echo "$GDWORD" | festival --tts
Как читает фестиваль на самом деле:
echo %s | festival --tts
Попытки сборки единой команды
Проверяем в консоли.
Вводим значение переменной:
s=home
s=Петя
С каждой переменной выполняем каждую команду
Команды для Словарей:
if echo %s | grep -q '[аяоёуюэеыи]'; then echo %s | festival --tts --language russian else echo %s | festival --tts fi
if echo %s | grep -q '[а-яА-я]'; then echo %s | festival --tts --language russian else echo %s | festival --tts fi
if (echo %s | grep -q '[а-яА-я]'); then (echo %s | festival --tts --language russian) else (echo %s | festival --tts) fi
^такая сложная команда в словаре не срабатывает
Команды для консоли:
if echo $s | grep -q '[аяоёуюэеыи]'; then echo $s | festival --tts --language russian else echo $s | festival --tts fi
if echo $s | grep -q '[а-яА-я]'; then echo $s | festival --tts --language russian else echo $s | festival --tts fi
if (echo $s | grep -q '[а-яА-я]*'); then (echo $s | festival --tts --language russian) else (echo $s | festival --tts) fi
StartDict
У Startdict переменная %s
Читает раздельно по english и Russian
echo %s | festival --tts --language russian
echo %s | festival --tts
Команда "на вместе" в startdict не работет:
if (echo %s | grep -q "[а-яА-я]*"); then (echo %s | festival --tts --language russian) else (echo %s | festival --tts) fi
Зато работает в консоли:
if (echo $s | grep -q "[а-яА-я]*"); then (echo $s | festival --tts --language russian) else (echo $s | festival --tts) fi
Итого
читает на англицком:
echo %s | festival --tts
читает на русском:
echo %s | festival --tts --language russian
- в startdict читает по раздельности
- goldendict не видит команду
- qstardict не видит команду
Речь
Некоторые заметки
Spech dispathcer от Ubuntu:
[Unit] Description=Speech-Dispatcher, common interface to speech synthesizers [Service] Type=forking User=speech-dispatcher PIDFile=/run/speech-dispatcher/speech-dispatcher.pid ExecStart=/usr/bin/speech-dispatcher -d --pid-file /run/speech-dispatcher/speech-dispatcher.pid ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target Alias=speech-dispatcher.service
Установка
- Основной движок:
# apt-get install speech-dispatcher
- Утилиты Speech Dispatcher:
# apt-get install speech-dispatcher-utils
Конфигурация движка и тест:
spd-conf #настройка spd-say #произнести текст (по-умолчанию только на английском) sdpsend #отправка на какой-то сервер с портом
- orca
# apt-get install orca
- пакеты festival для speech-dispatcher
# apt-get install festival-freebsoft-utils
Проверяем фестиваль
$ spd-say -o festival -l en hello
^работает
$ spd-say -o festival -l russian привет
^не работает
служба speech-dispatcherd.service не запускается
Логи в Альте:
systemctl status speech-dispatcherd.service × speech-dispatcherd.service - Speech-Dispatcher an high-level device independent layer for speech synthesis. Loaded: loaded (/lib/systemd/system/speech-dispatcherd.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Tue 2024-09-24 15:01:24 MSK; 16min ago CPU: 13ms сен 24 15:01:24 client.petr.ru systemd[1]: Starting Speech-Dispatcher an high-level device independent layer for speech synthesis.... сен 24 15:01:24 client.petr.ru speech-dispatcher[12365]: [Tue Sep 24 15:01:24 2024 : 53693] speechd: Speech Dispatcher 0.10.2 starting сен 24 15:01:24 client.petr.ru systemd[1]: speech-dispatcherd.service: Control process exited, code=exited, status=1/FAILURE сен 24 15:01:24 client.petr.ru systemd[1]: speech-dispatcherd.service: Failed with result 'exit-code'. сен 24 15:01:24 client.petr.ru systemd[1]: Failed to start Speech-Dispatcher an high-level device independent layer for speech synthesis..
Похожий лог в Manjaro: https://github.com/brailcom/speechd/issues/640?ysclid=m1gbv94cme875550317
Nov 10 21:42:32 wiley speech-dispatcher[3128]: [Wed Nov 10 21:42:32 2021 : 132158] speechd: Speech Dispatcher 0.10.2 starting Nov 10 21:42:32 wiley systemd[1]: speech-dispatcherd.service: Control process exited, code=exited, status=1/FAILURE ░░ Subject: Unit process exited ░░ Defined-By: systemd ░░ Support: https://forum.manjaro.org/c/support ░░ ░░ An ExecStart= process belonging to unit speech-dispatcherd.service has exited. ░░ ░░ The process' exit code is 'exited' and its exit status is 1. Nov 10 21:42:32 wiley systemd[1]: speech-dispatcherd.service: Failed with result 'exit-code'. ░░ Subject: Unit failed ░░ Defined-By: systemd ░░ Support: https://forum.manjaro.org/c/support ░░ ░░ The unit speech-dispatcherd.service has entered the 'failed' state with result 'exit-code'. Nov 10 21:42:32 wiley systemd[1]: Failed to start Speech-Dispatcher an high-level device independent layer for speech synthesis.. ░░ Subject: A start job for unit speech-dispatcherd.service has failed ░░ Defined-By: systemd ░░ Support: https://forum.manjaro.org/c/support ░░ ░░ A start job for unit speech-dispatcherd.service has finished with a failure. ░░ ░░ The job identifier is 1578 and the job result is failed.
Советуют тпроверить командами:
>spd-say -O
^показывает список подключенных к speech dispatcher модулей
OUTPUT MODULES flite espeak
>spd-say -L
^получить список синтезируемых голосов
RHVoice
Если в
/etc/speech-dispatcher/speechd.conf
-расскомментировать
#AddModule "rhvoice" "sd_rhvoice" "rhvoice.conf"
-прописать в
DefaultModule rhvoice
-LanguageDefaultModule "en" "rhvoice" -LanguageDefaultModule "ru" "rhvoice"
После прописывания ошибка:
error: Can't connect to unix socket /run/user/500/speech-dispatcher/speechd.sock: В соединении отказано. Autospawn: Autospawn failed. Speech Dispatcher refused to start with error code, stating this as a reason:
Согласно https://www.linux.org.ru/forum/general/15808827?ysclid=m1gc0536k614290331 spd-say не умеет WAV в stdout вообще. Пользуй RHVoice-test. См. https://github.com/Olga-Yakovleva/RHVoice/issues/140 | | ->https://github.com/RHVoice/RHVoice/issues/140 Советуют: echo "привет" | RHVoice-test -p elena -o /dev/stdout 2>/dev/null | aplay /dev/stdin 2>/dev/null | | ->Yes, I can use speetch-despatcher. But how do I use external players in spd-say? |-->oh sorry At first I did not understand your situation completely. Unfortunately, this is not possible at the moment. ticket in upstream. https://github.com/brailcom/speechd/issues/348 |-->Speechd/получать звук в виде бинарника https://github.com/brailcom/speechd/issues/348 |-->Speech-dispatcher не работает с RHVoice https://github.com/RHVoice/RHVoice/issues/178 Это проблема не RHVoice, а SD.
Настройка Speechd для RHVoice
http://linux.tiflocomp.ru/docs/spd_rhvoice_festival.php?ysclid=m1gcfhzn1z592561148