Desarrollo de un servidor de síntesis de habla dependiente del nivel de ruido ambiente Beatriz Barakat Melián
Índice Introducción y objetivos Paralelización de frases Paralelización de reproducción Conclusiones y líneas futuras
Introducción Servidor SOAP Reconocedor de voz Modelo 5 dB Modelo 10 dB Modelo 15 dB Modelo 25 dB Sistema de síntesis en entornos ruidosos Proyecto NAVEGABLE
Modelo de producción de la voz Frecuencia fundamental Aperiodicidad Mel cepstrum Generador de Excitación periódica (componente sonora) Generador de Excitación periódica (componente sonora) Generador de Ruido (componente sorda) Generador de Ruido (componente sorda) Filtro Cepstrum Filtro Cepstrum Voz sintética
Objetivos y herramientas fraseTts.binetiqueta HTSsíntesis Reproducción Sistema base Objetivos: – Paralelización de frases en un párrafo – Paralelización del proceso de generación y reproducción Lenguajes: – Comandos UNIX: Bash y csh – C/C++ “.h” “.cpp” “makefile”
Paralelización de frases
TTS_frase.sh Synthesis_top SynthesisCompilada1SynthesisCompilada2 FraseX.wav Reproducción de audio f0.txt mcep apf FraseX.wav Reproducción de audio Sintetiza( SNR, Texto) TTS_frase.sh Synthesis_straight2012.sh TTS_top2.sh f0.txt apf mcep TTS_top1.sh TTS_top.sh Sintetiza( SNR, Texto)
Synthesis_fft Más optimizado Generación de archivos de audio para depuración Reproducción paralela de audio
Reproducción de audio en Linux ALSA: “Advanced Linux Sound Architecture” Permite acceder al dispositivo de audio Uso: – Inicialización Abrir interfaz de audio Configurar parámetros (16 bits con signo, 48 kHz) – Reproducción (escritura en buffer) – Cierre de la interfaz
Paralelización de la reproducción: Uso de hebras POSIX Hebra principal -Operaciones intermedias -Inicialización de hebra de reproducción -Operaciones intermedias -Suficiente información generada para reproducir -Continúa generando información -Operaciones intermedias -Bloqueado mientras hebra de reproducción esté reproduciendo (playing=1) -Operaciones intermedias -Finaliza hebra principal Hebra principal -Operaciones intermedias -Inicialización de hebra de reproducción -Operaciones intermedias -Suficiente información generada para reproducir -Continúa generando información -Operaciones intermedias -Bloqueado mientras hebra de reproducción esté reproduciendo (playing=1) -Operaciones intermedias -Finaliza hebra principal Hebra de reproducción -Bloqueado hasta que hebra principal permite desbloqueo (block=1) -Reproduce información generada desde el principio -Reproduciendo -Termina reproducción -Finaliza hebra de reproducción Hebra de reproducción -Bloqueado hasta que hebra principal permite desbloqueo (block=1) -Reproduce información generada desde el principio -Reproduciendo -Termina reproducción -Finaliza hebra de reproducción desbloqueo Tiempo Fin reproducción Block=0 Playing=0 “detachable”
Uso de hebras POSIX … … … … Vector “sy” de generación Vector “s” de reproducción Copia 48 muestras Buffer de interfaz de audio Envía 500 muestras a reproducir Interfaz de audio Nidx=12.000Last=1 Copia 500 muestras = 10,46 tramas Block=0 Playing=0 0,25 s 0,01 s
Solución Interfaz de audio Hebra frase 1Hebra frase 2Hebra frase 3 … ¿Problema? Archivos de sincronización
Sincronización de hebras Pid_1.cfg Pid_2.cfg Pid_3.cfg … Sintetiza Generación de datos Reproducción de frase Elimina pid_1.cfg Frase_1 Frase_2 Generación de datos Reproducción de frase Elimina pid_2.cfg Frase_3 Generación de datos Rep. TTS_top.sh
Conclusiones y líneas futuras Conclusiones: – Conseguido paralelización de reproducción de audio y síntesis – Paralelización de síntesis de frases de un párrafo – Reducción del tiempo de síntesis y comienzo de reproducción Líneas futuras: – Combinación de bucles en “straight_synth_tb06.cpp” – Reducción de la frecuencia de muestreo – Combinación de ejecutables en “TTS_frase.sh” Antiguo_total (s)Antiguo_comienza (s)Nuevo_total (s)Nuevo_comienza (s) 7,065,524,022,56 6,935,344,082,48 7,105,544,112,58 7,245,674,032,46 6,935,214,132,55 Reducción_total (%)Reducción_comienzo (%) 43,153,6 41,153,6 42,153,4 44,356,6 40,451,1 “Hola, esto es una prueba” Modelo de 25 dB