проблемы с настройкой голоса speech-dispatcher с фестивалем

проблемы с настройкой голоса speech-dispatcher с фестивалем

Я наконец-то 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файле. Пожалуйста, выполните следующие шаги:

  1. перейти в папку festival/voice
  2. редактировать файл 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.")))
      
  3. После /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), и посмотрел, заработает ли какой-либо из перечисленных голосов.

Связанный контент