Finalmente comencé Festival
a trabajar con las voces de HTS de EE. UU.: cmu_us_awb_cg
, cmu_us_jmk_cg
, cmu_us_slt_cg
, cmu_us_bdl_cg
, cmu_us_clb_cg
, cmu_us_rms_cg
.
Lo configuré manualmente festival.scm
para usar bdl
voz:
(set! voice_default 'voice_cmu_us_bdl_cg)
Ahora funciona bien tanto desde el modo interactivo festival
como cuando el servidor se está ejecutando ( festival --server
):
nc localhost 1314 <<< "(tts_text \"Hello big world, this is a test.\" nil)(quit)"
Luego configuré el despachador de voz, no pudo configurarse correctamente a través de spd-conf
, pero arreglé manualmente el archivo de configuración speechd
. En resumen:
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"
Ahora la prueba ALSA está funcionando bien (produciendo sonido). Sin embargo, cuando envío un mensaje de texto a speech-dispatcher
:
spd-say "Hello big world, this is a test."
...el festival
servidor se vuelve loco, como si estuviera probando sin éxito todas y cada una de las voces que se le ocurren:
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
Entonces, el festival está funcionando, la conexión con ALSA está funcionando, el despachador de voz está enviando algo al festival, pero de alguna manera está roto, posiblemente la configuración de voz sea incorrecta.
También hay un archivo de configuración para el módulo festival dentro de /etc/speech-dispatcher/modules/
la carpeta, festival.conf
pero está prácticamente vacío (con mucho texto comentado) y no menciona nada sobre las voces configuradas al speech-dispatcher
llamar al archivo Festival
. Es un lugar en el que supongo que se puede configurar, especialmente porque hay un comentario en speechd.conf
:
DefaultVoiceType controla qué tipo de voz se debe utilizar de forma predeterminada. Los tipos de voz son nombres simbólicos que se asignan a voces particulares proporcionadas por el sintetizador según la configuración del módulo de salida. Consulte la configuración específica del sintetizador en etc/speech-dispatcher/modules/ para ver qué voces están asignadas a diferentes nombres simbólicos. Actualmente se admiten los siguientes nombres simbólicos: MALE1, MALE2, MALE3, FEMALE1, FEMALE2, FEMALE3, CHILD_MALE, CHILD_FEMALE
# Tipo de voz predeterminado "MALE1"
También intenté aumentar el tamaño del montón hasta 50 M (según algunas publicaciones en otras discusiones), pero no ayuda:
festival --server --heap 50000000
Recibo los mismos errores extraños. Se agradece cualquier sugerencia.
Respuesta1
Para resolver este problema es necesario definirlo (proclaim_voice
en scm
el archivo. consulte los pasos a continuación:
- ir a la carpeta festival/voces
- editar archivo scm
- abierto:
vim us/cmu_us_clb_arctic_clunits/festvox/cmu_us_clb_arctic_clunits.scm #<--voice clunits.scm
- Ir al final del archivo agregar línea antes
(provide 'cmu_us_clb_arctic_clunits)
- Agregue el contenido a continuación (actualice el idioma, el género y el dialecto según sea necesario). Actualizar, guardar y salir.
(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.")))
- abierto:
- Después de que
/usr/bin/festival --server
el error debería desaparecer
También puedes correr spd-say -L
para mostrar los detalles.
Si necesita actualizar la voz predeterminada del festival:
- Editar
/etc/festival.scm
para agregar(set! voice_default 'voice_<You prefered Voice name>)
- reinicie el servidor del festival o reinicie ubuntu. La voz predeterminada se cambiará a una nueva mediante
spd-say
un comando o desde Firefox.
Respuesta2
El problema podría deberse a que speech-dispatcher
no acepta la voz predeterminada del festival, sino que intenta utilizar su propia configuración.
Intente descomentar y cambiar DefaultVoiceType
a algo como:
DefaultVoiceType "FEMALE1"
También haría algunas pruebas usando diferentes programas, como el modo lector de Firefox (ALT+CTRL+R) y vería si alguna de las voces enumeradas funciona.