Я наконец-то Festival
поработал с голосами HTS из США: cmu_us_awb_cg
, cmu_us_jmk_cg
, cmu_us_slt_cg
, cmu_us_bdl_cg
, cmu_us_clb_cg
, cmu_us_rms_cg
.
Я вручную настроил festival.scm
использование bdl
голоса:
(set! voice_default 'voice_cmu_us_bdl_cg)
Теперь он работает нормально как в интерактивном режиме festival
, так и при работе сервера ( festival --server
):
nc localhost 1314 <<< "(tts_text \"Hello big world, this is a test.\" nil)(quit)"
Затем я настроил speech-dispatcher, он не смог правильно настроить себя через spd-conf
, но я вручную исправил файл конфигурации speechd
. Подводя итог:
LogLevel 3
LogDir "default"
DefaultRate 5
DefaultVolume 100
DefaultLanguage "en"
DefaultPunctuationMode "all"
AudioOutputMethod "alsa"
AudioALSADevice "default"
AddModule "festival" "sd_festival" "festival.conf"
AddModule "dummy" "sd_dummy" ""
DefaultModule festival
LanguageDefaultModule "en" "festival"
Include "clients/*.conf"
Теперь тест ALSA работает нормально (воспроизводит звук). Однако, когда я отправляю текст на speech-dispatcher
:
spd-say "Hello big world, this is a test."
... festival
сервер сходит с ума, как будто он безуспешно пытается воспроизвести каждый голос, который приходит ему на ум:
SIOD: unknown voice cmu_us_ahw_cg
SIOD: unknown voice cmu_us_ahw_cg
SIOD: unknown voice cmu_us_aup_cg
SIOD: unknown voice cmu_us_aup_cg
SIOD: unknown voice cmu_us_awb_cg
SIOD: unknown voice cmu_us_awb_cg
SIOD: unknown voice cmu_us_axb_cg
SIOD: unknown voice cmu_us_axb_cg
SIOD: unknown voice cmu_us_bdl_cg
SIOD: unknown voice cmu_us_bdl_cg
SIOD ERROR: could not open file /usr/share/festival/dicts/oald/oaldlex.scm
closing a file left open: /usr/share/festival/voices/english/rab_diphone/festvox/rab_diphone.scm
SIOD: unknown voice rab_diphone
SIOD ERROR: could not open file /usr/share/festival/dicts/oald/oaldlex.scm
closing a file left open: /usr/share/festival/voices/english/rab_diphone/festvox/rab_diphone.scm
SIOD: unknown voice rab_diphone
SIOD: unknown voice cmu_us_kal_com_hts
SIOD: unknown voice cmu_us_kal_com_hts
SIOD: unknown voice cstr_us_ked_timit_hts
SIOD: unknown voice cstr_us_ked_timit_hts
SIOD: unknown voice cmu_us_slt_cg
SIOD: unknown voice cmu_us_slt_cg
SIOD: unknown voice cmu_us_rms_cg
SIOD: unknown voice cmu_us_rms_cg
SIOD: unknown voice cmu_us_awb_cg
SIOD: unknown voice cmu_us_awb_cg
SIOD: unknown voice cmu_us_bdl_cg
SIOD: unknown voice cmu_us_bdl_cg
SIOD ERROR: ran out of storage
closing a file left open: /usr/share/festival/voices/us/cmu_us_clb_cg//rf_models/trees_08/cmu_us_clb_mcep.tree
SIOD: unknown voice cmu_us_clb_cg
SIOD ERROR: ran out of storage
closing a file left open: /usr/share/festival/voices/us/cmu_us_clb_cg//festival/trees/cmu_us_clb_mcep.tree
SIOD: unknown voice cmu_us_clb_cg
client(10) Mon Mar 16 22:10:26 2020 : accepted from localhost
SIOD: unknown voice cmu_us_ahw_cg
SIOD: unknown voice cmu_us_aup_cg
SIOD: unknown voice cmu_us_awb_cg
SIOD: unknown voice cmu_us_axb_cg
SIOD: unknown voice cmu_us_bdl_cg
SIOD ERROR: could not open file /usr/share/festival/dicts/oald/oaldlex.scm
closing a file left open: /usr/share/festival/voices/english/rab_diphone/festvox/rab_diphone.scm
SIOD: unknown voice rab_diphone
SIOD: unknown voice cmu_us_kal_com_hts
SIOD: unknown voice cstr_us_ked_timit_hts
SIOD: unknown voice cmu_us_slt_cg
SIOD: unknown voice cmu_us_rms_cg
SIOD: unknown voice cmu_us_awb_cg
SIOD: unknown voice cmu_us_bdl_cg
SIOD ERROR: ran out of storage
closing a file left open: /usr/share/festival/voices/us/cmu_us_clb_cg//rf_models/trees_08/cmu_us_clb_mcep.tree
SIOD: unknown voice cmu_us_clb_cg
SIOD ERROR: ran out of storage
closing a file left open: /usr/share/festival/voices/us/cmu_us_jmk_cg//festival/trees/cmu_us_jmk_mcep.tree
SIOD: unknown voice cmu_us_jmk_cg
SIOD: unknown voice cmu_us_ahw_cg
SIOD: unknown voice cmu_us_ahw_cg
SIOD: unknown voice cmu_us_aup_cg
SIOD: unknown voice cmu_us_aup_cg
SIOD: unknown voice cmu_us_awb_cg
SIOD: unknown voice cmu_us_awb_cg
Итак, фестиваль работает, подключение к ALSA работает, речевой диспетчер что-то отправляет на фестиваль, но он каким-то образом сломан, возможно, неправильные настройки голоса.
Также есть файл конфигурации для модуля festival в /etc/speech-dispatcher/modules/
папке, festival.conf
, но он практически пустой (с большим количеством прокомментированного текста) и ничего не упоминает о голосах, установленных speech-dispatcher
при вызове Festival
. Я предполагаю, что это место можно настроить, особенно потому, что комментарий в speechd.conf
:
DefaultVoiceType управляет тем, какой тип голоса должен использоваться по умолчанию. Типы голосов — это символические имена, которые сопоставляются с определенными голосами, предоставляемыми синтезатором в соответствии с конфигурацией выходного модуля. Пожалуйста, ознакомьтесь с конфигурацией синтезатора в etc/speech-dispatcher/modules/, чтобы узнать, какие голоса назначены различным символическим именам. В настоящее время поддерживаются следующие символические имена: MALE1, MALE2, MALE3, FEMALE1, FEMALE2, FEMALE3, CHILD_MALE, CHILD_FEMALE
# DefaultVoiceType "MALE1"
Я также пробовал увеличить размер кучи до 50 МБ (согласно некоторым сообщениям в других обсуждениях), но это не помогло:
festival --server --heap 50000000
Я получаю те же странные ошибки. Любые предложения приветствуются.
решение1
Чтобы решить эту проблему, необходимо определить (proclaim_voice
в scm
файле. Пожалуйста, выполните следующие шаги:
- перейти в папку festival/voice
- редактировать файл scm
- открыть:
vim us/cmu_us_clb_arctic_clunits/festvox/cmu_us_clb_arctic_clunits.scm #<--voice clunits.scm
- Перейдите в конец файла и добавьте строку перед
(provide 'cmu_us_clb_arctic_clunits)
- Добавьте нижеприведенный контент (при необходимости обновите язык, пол, диалект). Обновите, сохраните и выйдите.
(proclaim_voice 'cmu_us_clb_arctic_clunits '((language english) (gender female) (dialect american) (description "This voice provides an American English male voice using a residual excited LPC diphone synthesis method. It uses the CMU Lexicon pronunciations. Prosodic phrasing is provided by a statistically trained model using part of speech and local distribution of breaks. Intonation is provided by a CART tree predicting ToBI accents and an F0 contour generated from a model trained from natural speech. The duration model is also trained from data using a CART tree.")))
- открыть:
- После
/usr/bin/festival --server
этого ошибка должна исчезнуть.
Вы также можете побежать spd-say -L
, чтобы показать детали.
Если необходимо обновить голос фестиваля по умолчанию:
- Изменить
/etc/festival.scm
, чтобы добавить(set! voice_default 'voice_<You prefered Voice name>)
- перезапустите сервер фестиваля или перезагрузите ubuntu. Голос по умолчанию будет изменен на новый через
spd-say
команду или из Firefox.
решение2
Проблема может быть в том, что speech-dispatcher
он не принимает голос Festival по умолчанию, а вместо этого пытается использовать свои собственные настройки.
Попробуйте раскомментировать и изменить DefaultVoiceType
на что-то вроде:
DefaultVoiceType "FEMALE1"
Я бы также провел несколько тестов с использованием разных программ, например, режима чтения Firefox (ALT+CTRL+R), и посмотрел, заработает ли какой-либо из перечисленных голосов.