Finalmente comecei Festival
a trabalhar com as vozes HTS dos EUA: cmu_us_awb_cg
, cmu_us_jmk_cg
, cmu_us_slt_cg
, cmu_us_bdl_cg
, cmu_us_clb_cg
, cmu_us_rms_cg
.
Eu configurei manualmente festival.scm
para usar bdl
voz:
(set! voice_default 'voice_cmu_us_bdl_cg)
Agora está funcionando bem tanto no interativo festival
quanto quando o servidor está em execução ( festival --server
):
nc localhost 1314 <<< "(tts_text \"Hello big world, this is a test.\" nil)(quit)"
Em seguida, configurei o Speech-Dispatcher, ele não conseguiu se configurar corretamente via spd-conf
, mas corrigi manualmente o arquivo de configuração speechd
. Resumindo:
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"
Agora o teste ALSA está funcionando bem (produzindo som). No entanto, quando envio uma mensagem para speech-dispatcher
:
spd-say "Hello big world, this is a test."
...o festival
servidor enlouquece, como se estivesse tentando, sem sucesso, todas as vozes que consegue imaginar:
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
Então, o festival está funcionando, a conexão com a ALSA está funcionando, o despachante de fala está enviando algo para o festival, mas está de alguma forma quebrado, possivelmente com configurações de voz erradas.
Também existe um arquivo de configuração para o módulo festival dentro /etc/speech-dispatcher/modules/
da pasta , festival.conf
mas está praticamente vazio (com muito texto comentado) e não menciona nada sobre as vozes definidas por speech-dispatcher
ao chamar o Festival
. É um lugar que eu presumo que se pode definir isso, especialmente porque um comentário em speechd.conf
:
O DefaultVoiceType controla qual tipo de voz deve ser usado por padrão. Os tipos de voz são nomes simbólicos que mapeiam vozes específicas fornecidas pelo sintetizador de acordo com a configuração do módulo de saída. Por favor, veja a configuração específica do sintetizador em etc/speech-dispatcher/modules/ para ver quais vozes são atribuídas a diferentes nomes simbólicos. Os seguintes nomes simbólicos são atualmente suportados: MALE1, MALE2, MALE3, FEMALE1, FEMALE2, FEMALE3, CHILD_MALE, CHILD_FEMALE
# DefaultVoiceType "MALE1"
Também tentei aumentar o tamanho do heap para 50M (conforme alguns posts em outras discussões), mas não ajudou:
festival --server --heap 50000000
Eu recebo os mesmos erros estranhos. Qualquer sugestão será apreciada.
Responder1
Para resolver esse problema é necessário definir (proclaim_voice
no scm
arquivo. consulte as etapas abaixo:
- vá para a pasta festival/vozes
- editar arquivo scm
- abrir:
vim us/cmu_us_clb_arctic_clunits/festvox/cmu_us_clb_arctic_clunits.scm #<--voice clunits.scm
- Vá para a parte inferior do arquivo e adicione a linha antes
(provide 'cmu_us_clb_arctic_clunits)
- Adicione o conteúdo abaixo (atualize idioma, gênero, dialeto conforme necessário). Atualize, salve e saia.
(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.")))
- abrir:
- Depois que
/usr/bin/festival --server
o erro deve desaparecer
Você também pode correr spd-say -L
para mostrar os detalhes.
Se for necessário atualizar a voz padrão do festival:
- Editar
/etc/festival.scm
para adicionar(set! voice_default 'voice_<You prefered Voice name>)
- reinicie o servidor do festival ou reinicie o Ubuntu. A voz padrão será alterada para uma nova via
spd-say
comando ou no Firefox.
Responder2
O problema pode ser porque speech-dispatcher
ele não aceita a voz padrão do festival, mas tenta usar suas próprias configurações.
Tente descomentar e alterar DefaultVoiceType
para algo como:
DefaultVoiceType "FEMALE1"
Eu também faria alguns testes usando programas diferentes, como o modo leitor do Firefox (ALT + CTRL + R) e veria se alguma das vozes listadas funcionava.