Title: Base de datos para sntesis de dominio restringido
1Base de datos para síntesis de dominio restringido
- Proyecto Natural Vox Mejora de calidad de
síntesis de voz femenina
2Índice
- Introducción
- Diseño de la base de datos
- Algoritmos voraces (greedy)
- Marcado
- Modelado prosódico
- Conclusiones
3Introducción
- Natural Vox
- Empresa de aplicaciones telefónicas de calidad
- Necesita una voz femenina
- BORIS según ellos, la mejor síntesis en
castellano del mercado - Aplicaciones
- Tráfico (inicialmente) y Bancos (finalmente)
- Nos interesaba, aún a bajo precio
- desarrollo de una nueva voz (sin FGG, JAV...) y
femenina - aplicaciones telefónicas
- conversión de voces
- síntesis por selección de unidades
- Son temas de moda
4Introducción
- Empleamos concatenación y TD-PSOLA (nuestra mejor
calidad hoy en día) - Exploraremos varias posibilidades en cuanto a
prosodia - Duraciones
- ANN continuación de un PFC de RCH
- Modelo multiplicativo experimento con los
mejores parámetros - F0
- ANN continuación de la tesis de JVP
- Modelo de picos y valles versión implementada en
el sistema - Fujisaki Ha habido bastante trabajo y no ha dado
tiempo para explorar esta posibilidad.
5Diseño de la base de datos
- Cuestiones abiertas
- Qué tipo de textos?
- Cuántas frases o palabras?
- Cuáles?
- Cuánto tiempo se necesita para marcarlo?
- Factores limitantes
- El bajo presupuesto
- Nuestra poca experiencia directa
- Las aplicaciones de Natural Vox
- Empleo de becarios para marcar
6Diseño de la base de datos Qué tipo de textos?
- Frases y vocabulario típicos de una aplicación
telefónica como las deseadas. - Inicialmente nos proponen 22 frases portadoras
con 30 campos variables - Poblaciones, puertos, nombres y apellidos.
- Movimientos bancarios, expresiones bancarias
(tipos de cuentas, fondos de inversión, divisas,
estado de un cheque, etc.), entidades
financieras. - Horas.
- Números de teléfono.
- Combinaciones de letras y números.
7Diseño de la base de datos Primer filtrado
- Por estar ya cubiertas usando concatenación de
mensajes pregrabados, eliminamos de su propuesta - Horas
- Teléfonos
- Combinaciones de letras y números
- Nos quedamos con 19 frases y 3 tipos de campos
- Nombres propios en enunciativas frases 1-7, 17 y
19 - Sintaxis sencilla en enunciativas frases 8-12 y
14. - Sintaxis sencilla en interrogativas frases 13,
15, 16 y 18 - Establecemos que las grabaciones de los campos
variables se harán entre-pausas y con prosodia no
enfática - información clave y facilidad de modelado
8Diseño de la base de datos Selección de los
textos
- Partimos de los resultados de Onomástica
- 30232 pueblos o ciudades
- 8736 nombres de pila simples
- 49431 apellidos simples
- Usamos datos de la empresa
- 255 entidades financieras
- 246 puertos de montaña
- datos varios 23 operaciones, 150 movimientos,
etc. - Por consideraciones de tiempo y de dinero,
decidimos grabar unas 600 frases de cada tipo
(nosotros marcamos 2 tipologías y ellos marcan la
tercera)
9Diseño de la base de datos Nombres Propios
- Frases 2 y 3 3 Campos Variables 100 frases
- 150 puertos resumidos.
- Frases 6, 7 y 17 3 CV 360 apellidos, 360
frases - 150 apellidos simples resumidos,
- 130 apellidos simples muy frecuentes (desde
García hasta Montes) - 80 apellidos compuestos (80 apellidos simples muy
frecuentes80 apellidos simples resumidos,
algunos incluyen la preposición de) - Frases 1, 4, 5 y 19 5 CV 50 pueblos por campo,
200 frases - 250 pueblos resumidos
10Diseño de la base de datos Enunciativas
- Frases 8 y 9 4 CV 74 frases (3638)
- 150 movimientos bancarios (363x38)
- Frase 10 1 CV, 23 frases.
- 23 operaciones bancarias
- Frase 11 1 CV 7 frases
- 7 estados de cheques,
- Frase 12 2 CV 172 frases (4343432815)
- 43 tipos de cuentas y tarjetas,
- 172 nombres de bancos (157 nombres castellanos
resumidos 15 no castellanos elegidos manualmente
por Emilia), - Frase 14 1 CV 31 fondos de inversión, 31 frases.
11Diseño de la base de datos Interrogativas
- Frase 13 1 CV 200 frases
- 43 tipos de cuentas y tarjetas
- 34 movimientos seleccionados
- 123 apellidos resumidos
- Frase 15 1 CV 200 frases
- 31 fondos de inversión
- 46 movimientos seleccionados
- 123 apellidos resumidos
- Frase 16 y 18 2 CV 200 frases
- 10 divisas
- 20 tipos de información
- 48 movimientos seleccionados
- 122 apellidos resumidos
12Diseño de la base de datos Objetivo
- Empleando pocas grabaciones, conseguir recoger
gran parte de la riqueza de los casos posibles
(balanced), según criterios - Prosódicos cubrir la mayoría de los fenómenos
prosódicos que se podían dar, empleando un número
reducido de ejemplos - Duraciones variedad fonética, silábica, de
longitudes de palabra, etc. - Entonación variedad de tipos de acentuación y de
distancia entre acentos. - Segmentales, tener variedad, ya que podía llegar
a ser usada como fuente de unidades - nuevos difonemas, debido a que los iniciales no
fuesen adecuados (así fue eran demasiado
breves), - síntesis por selección de unidades por problemas
de calidad segmental insuficiente, podríamos
tener que recurrir a ella (como está siendo el
caso la calidad no les es suficiente en algunos
casos)
13Diseño de la base de datos Criterios de
selección (I)
- Posibilidades con interés
- Fonema y su contexto (clase de los fonemas
anterior y siguiente) - Debemos cubrir todos los posibles valores
intentando reproducir la distribución de
probabilidad de nuestra base de datos - Está en sílaba acentuada?
- Pertenece a un diptongo?
- Está en sílaba abierta?
- Posición del fonema dentro de la sílaba
- Debemos reproducir la distribución de
probabilidad de nuestra base de datos
14Diseño de la base de datos Criterios de
selección (II)
- Número de fonemas de la sílaba
- Posición del fonema dentro de la palabra
- Número de fonemas de la palabra
- Posición del fonema dentro del grupo fónico
- Número de fonemas del grupo fónico
- Está en posición inicial de grupo fónico?
- Está en posición final de grupo fónico?
- Tipo de acento de la palabra (aguda, llana,
esdrújula o palabra función) - Distancia silábica entre acentos
- Debemos cubrir todos los posibles valores
intentando reproducir la distribución de
probabilidad de nuestra base de datos
15Diseño de la base de datos Criterios de
selección (III)
- Tipo de grupo fónico
- Enunciativo entre pausas con entonación
ascendente - Enunciativo entre pausas con entonación
descendente - Interrogativo
- Es imposible cumplir tantas condiciones con un
número reducido de grabaciones
16Diseño de la base de datos Criterios de
selección (y IV)
- 6 Criterios finales
- Criterio fonético intentaremos conseguir un
histograma fonético (probabilidad de aparición de
cada fonema) que no se aleje más de un 5 (como
máximo) de la distribución original de la base de
datos de nombres propios de que disponemos. - Criterio silábico buscamos reproducir la
distribución original de sílabas acentuadas/
no_acentuadas, abiertas/ cerradas, con_diptongo/
sin_diptongo, en posición final/ en posición no
final (5 de desviación máxima) - Criterio acentual distribución adecuada de
palabras acentuadas / palabras función, agudas /
llanas / esdrújulas... - Criterio de palabras dado que los nombres pueden
ser compuestos buscaremos reproducir la base de
datos original en número de palabras por campo
variable y número de sílabas por palabra.
17Algoritmos voraces (I)
- El problema de búsqueda presenta una complejidad
exponencial - Pueblos la mejor de las combinaciones de 30232
elementos tomados de 250 en 250. - Apellidos la mejor de las combinaciones de 49431
tomados de 150 en 150. - La solución óptima (full search) es
computacionalmente implanteable. - Aproximación un algoritmo voraz (van Santen 97)
- En cada paso busca minimizar localmente una
distancia (o maximizar un medida de bondad),
confiando en que ello no le llevará muy lejos del
máximo global (hipótesis optimista)
18Algoritmos voraces (II)
- Partimos de que sabemos cuántos ejemplos tenemos
y cuántos queremos seleccionar (resumen) - qué distancia usar para seleccionarlos?
- Energía
- Correlación
- Correlación normalizada
- Distancia con penalización
- Distancia a un objetivo parcial
- Inicialmente el problema me pareció no muy
complicado (en qué estaría yo pensando?) y muy
interesante (ahí no me equivoqué) la mochila
multidimensional (knapsack)
19Algoritmos voraces (III)
- La mejor distancia encontrada energía del error
respecto a un objetivo parcial proporcional, con
penalización para casos extremos - En cada iteración
- CalculaDistribSegunPaso(numPaso, criterioGlobal,
distribOptima) - En cada recorrido
- distribLocal distribActual
- Resta_Distrib_Probab32(distribLocal,
distribPalabra) - coordenadaMINIMO_RELATIVO(distribLocal,
criterioGlobal) - Resta_Distrib_Probab32(distribLocal,
distribOptima) - if (coordenada.valorlt0)
- result VALOR_CASTIGOcoordenada.valor
- else
- result -ACUMULA_ABS_DISTRIB_PROBAB32(distribLo
cal)
20Algoritmos voraces (IV) Ejemplo con 100 pueblos
- criterio-cumple-criterios
- PALABRAS 0 53 18 19 9 1 0 0 0 0 0
- NUMSILABAS 0 53 48 56 25 5 0 0 0 0 0
- FONEMAS 0 57 20 7 39 1 123 100 38 48 12 10 13 2
5 24 35 6 17 36 30 7 10 18 66 22 18 13 3 54 1 7
26 24 34 5 13 0 61 19 3 0 0 - ACENTOS 41 34 110 2 0 0
- NUMFONEMAS 0 1 34 17 14 27 27 25 18 13 7 3 1 0 0
0 0 0 0 0 0 0 0 0 0 0 - SILAB 26 24 82 56 1 2 4 5 15 19 39 23 1 2 1 3 11
0 30 0 0 0 1 0 11 16 32 30 0 2 2 5 0 - seleccionada-cumple-criterios
- PALABRAS 0 54 18 19 9 0 0 0 0 0 0
- NUMSILABAS 0 51 48 55 24 5 0 0 0 0 0
- FONEMAS 0 56 20 7 37 1 121 98 35 47 12 10 12 2 5
24 34 5 17 35 30 7 10 17 66 22 15 13 3 52 1 7 26
24 33 3 13 0 60 18 3 0 0 - ACENTOS 39 34 109 1 0 0
- NUMFONEMAS 0 1 34 16 13 26 27 25 18 13 7 2 1 0 0
0 0 0 0 0 0 0 0 0 0 0 - SILAB 24 23 78 53 1 2 3 5 15 19 37 22 0 2 1 3 11
0 31 0 1 0 1 0 11 16 33 31 1 2 2 5 0
21Algoritmos voraces (V)Ejemplo con 100 pueblos
- Error absoluto medio 0.028155
- PALABRAS 2.000000 / 100.000000 0.020000
- NUMSILABAS 4.000000 / 187.000000 0.021390
- FONEMAS 26.000000 / 1027.000000 0.025316
- ACENTOS 4.000000 / 187.000000 0.021390
- NUMFONEMAS 4.000000 / 187.000000 0.021390
- SILABAS 20.000000 / 443.000000 0.045147
- PAL difMedia0.000000 difMax 1.000000 pearson
0.999855 - NUMSIL difMedia0.006121 difMax0.040000
pearson 0.999724 - FONEMdifMedia 0.002683 difMax 0.052632
pearson 0.999587 - ACENTdifMedia 0.008234 difMax 0.500000
pearson 0.999839 - NUMFONdifMedia0.002464 difMax 0.333333
pearson 0.999464 - SILABdifMedia 0.002427 difMax 1.000000
pearson 0.998990
22Algoritmos voraces (VI)Ejemplo con 150 pueblos
- Error absoluto medio 0.01657
- PALABRAS 4.000000 / 150.000000 0.026667
- NUMSILABAS 2.000000 / 281.000000 0.007117
- FONEMAS 16.000000 / 1540.000000 0.010390
- ACENTOS 4.000000 / 281.000000 0.014235
- NUMFONEMAS 8.000000 / 281.000000 0.028470
- SILABAS 19.000000 / 665.000000 0.028571
- PAL difMedia 0.000000 difMax 0.025000 pearson
0.999582 - NUMSILdifMedia-0.002006 difMax0.000000
pearson0.999953 - FON difMedia 0.000272 difMax 0.025000 pearson
0.999861 - ACENT difMedia-0.002725 difMax0.006061
pearson0.999869 - NUMFON difMedia-0.000808 difMax0.500000
pearson0.999584 - SIL difMedia -0.000319 difMax 1.000000
pearson0.999402
23Algoritmos voraces (VII)Ejemplo con 250 pueblos
- Error absoluto medio 0.009005
- PALABRAS 2.000000 / 100.000000 0.020000
- NUMSILABAS 4.000000 / 187.000000 0.021390
- FONEMAS 26.000000 / 1027.000000 0.025316
- ACENTOS 4.000000 / 187.000000 0.021390
- NUMFONEMAS 4.000000 / 187.000000 0.021390
- SILABAS 20.000000 / 443.000000 0.045147
- PAL difMedia 0.000000 difMax 0.666667 pearson
0.999195 - NUMSIL difMedia0.000000 difMax0.015873
pearson0.999962 - FON difMedia 0.000532 difMax 0.006623 pearson
0.999975 - ACENTdifMedia 0.000000 difMax 0.250000
pearson0.999952 - NUMFON difMedia0.000000 difMax0.000000
pearson1.000000 - SILAB difMedia0.000384 difMax 0.073171
pearson0.999784
24Algoritmos voraces (VIII)Ejemplos con apellidos
- Error absoluto medio con 150 ejemplos 0.005934
- PALABRAS 0.000000 / 150.000000 0.000000
- NUMSILABAS 2.000000 / 151.000000 0.013245
- FONEMAS 3.000000 / 996.000000 0.003012
- ACENTOS 0.000000 / 151.000000 0.000000
- NUMFONEMAS 4.000000 / 151.000000 0.026490
- SILABAS 3.000000 / 423.000000 0.007092
- Error absoluto medio con 60 ejemplos 0.021065
- PALABRAS 0.000000 / 60.000000 0.000000
- NUMSILABAS 0.000000 / 60.000000 0.000000
- FONEMAS 11.000000 / 398.000000 0.027638
- ACENTOS 0.000000 / 60.000000 0.000000
- NUMFONEMAS 2.000000 / 60.000000 0.033333
- SILABAS 4.000000 / 169.000000 0.023669
25Algoritmos voraces (IX)Ejemplos con baja ratio
- Cuando tenemos poco donde escoger y baja ratio de
selección, el error es más alto - Bancos error absoluto medio con 150 ejemplos
0.013738 - PALABRAS 11.000000 / 153.000000
- NUMSILABAS 4.000000 / 666.000000
- FONEMAS 40.000000 / 3364.000000
- ACENTOS 3.000000 / 668.000000
- NUMFONEMAS 14.000000 / 668.000000
- SILABAS 23000000 / 1399.000000
- Puertos error absoluto medio con 150 ejemplos
0.018307 - PALABRAS 3.000000 / 151.000000
- NUMSILABAS 5.000000 / 271.000000
- FONEMAS 25.000000 / 1377.000000
- ACENTOS 2.000000 / 272.000000
- NUMFONEMAS 4.000000 / 274.000000
- SILABAS 14.000000 / 550.000000
26Algoritmos voraces (X)Errores graves
- El error desciende con el número de ejemplos,
pero no su gravedad - Apellidos y pueblos error absoluto medio con 100
ejemplos 0.013738 - Apellidos y pueblos error absoluto medio con
300 ejemplos 0.008713 - Apellidos y pueblos error absoluto medio con 600
ejemplos 0.004558 - Apellidos y pueblos error absoluto medio con
1000 ejemplos 0.0031610 - Apellidos y pueblos error absoluto medio con
5000 ejemplos 0.0012886 - Apellidos y pueblos errores con 100 ejemplos 18
(2 del 100) - Apellidos y pueblos errores con 300 ejemplos 7
(2 del 100) - Apellidos y pueblos errores con 600 ejemplos 6
(1 del 100) - Apellidos y pueblos errores con 1000 ejemplos 5
(1 del 100) - Apellidos y pueblos errores con 5000 ejemplos 5
(3 del 100)
27Algoritmos voraces (X)Búsqueda por pasos
- Si en vez de buscar el objetivo directamente nos
planteamos pasos intermedios, los resultados
mejoran considerablemente, sobre todo si la ratio
es baja - Pueblos
- error con 100 ej. y 1 paso 60/21310.028155
- error con 100 ej. y 100 pasos 27/21310.012760
- error con 150 ej. y 1 paso 53/31980.016572
- error con 150 ej. y 100 pasos 38/319800.011882
- error con 250 ej. y 1 paso 48/53300.009005
- error con 250 ej. y 100 pasos 44/53300.008255
28MarcadoF0 y segmentación manuales
- 2 becarios a media jornada, 2 meses
- Formación inicial durante 2 semanas
- Marcaron las frases 1, 2, 3, 4, 5, 6, 7, 8, 9
incompleta, 10, 11, 12, 14, 17 y 19 658296
ficheros - Tras las grabaciones de las frases 2, 3 y 4, se
corrigieron defectos en las condiciones de
grabación (sin re-grabar). - Durante las primeras semanas, se hacía una
revisión del marcado de los ficheros para
corregir defectos (JMM, JGA) - Natural Vox marcó las interrogativas 600
ficheros (menos de 2 meses)
29MarcadoSegmentación automática
- Modelos HMM semicontinuos, independientes del
contexto - Frecuencia de muestreo 8 KHz,
- Desplazamiento de trama 10 ms,
- Tamaño de trama 25 ms,
- Pre-énfasis 1.00
- Parametrización MFCC (101)
- Parámetros 11 parámetros estáticos y 11
dinámicos - Alfabeto de 28 alófonos y 1 silencio
- Base de datos 16062 alófonos para entrenar y
evaluar - Tasa de aciertos 89.12 (error por debajo de 20
ms) - Error medio por marca 8.995290
- Haremos pruebas de síntesis por selección
30Modelado duraciones (I)
- Usamos ANN, aunque hemos hecho un experimento con
modelo multiplicativo - La toma inicial de contacto con el sistema de
desarrollo fue larga y con modificaciones
intermedias (el PFC no estaba acabado) - Finalmente, los parámetros para las red se
generan con un conjunto de scripts y programas,
compartidos con el PFC de síntesis por selección
de unidades - extracción de duraciones
- extracción de F0
- extracción de difonemas
- generación de la base de datos de unidades
- Entrenamos en LINUX con MUME
- Evaluamos en MATLAB (con el entorno de
desarrollo)
31Modelado duraciones (II)
- 117 parámetros (como en PFC previo, salvo los
tipos de grupos) - ventana de 5 fonemas 38 alófonos, 14 clases
- fonema acentuado
- ventana de 3 sílabas acentuadas
- sílaba tónica
- sílaba en diptongo
- sílaba abierta
- palabra acentuada
- posición del fonema en la sílaba, en la palabra
y en el grupo - número de fonemas en la sílaba, sílabas en la
palabra, palabras en el grupo - 5 tipos de grupos ( , . - ?)
32Modelado duraciones (y III)
- Mejor experimento 560/32000 (17.5ms) 0.6363
- Empleando los valores medios de los fonemas 25.1
ms - Modelo multiplicativo 19.8 ms
- El error en velocidad de elocución es importante
(15.82) es necesario normalizar por la
velocidad media de cada tipo de frase - El error es mayor en las frases 2, 7, 12, 13
- Las interrogativas son más homogéneas
- Modelando cada tipo por separado
- propios 20.07 ms
- sintagmas 16.68 ms
- interrogativas falta realizar el experimento
33Modelado F0 (I)
- Usamos modelo de picos y valles, aunque hemos
hecho experimentos con ANN - Se desarrolló un programa para generar la base de
datos usando PERL (aunque finalmente se integró
en el conjunto de scripts por homogeneidad y
seguridad) - Entrenamos en LINUX con MUME
- Evaluamos en MATLAB (con el entorno de
desarrollo) - Usamos la parametrización propuesta por Vallejo
en su tesis, pero reducida 43 parámetros - ventana de 11 sílabas (tónica, inicial, final)
- Número de sílabas (5 niveles)
- Grupos fónicos 5 tipos ( , . ? -)
34Modelado F0 (II)
- Valor medio 180 Hz (47 Hz - 283 Hz)
- Desviación 32 Hz
- Número de muestras 5582 sílabas
- Variantes
- Menos parámetros tarea más simple.
- Normalización lineal (A.8/179, B13.5/179)
16.47 Hz (0.6849) - Normalización con Z-score 16,12 Hz (0.6424)
- Codificación logarítmicaZ-score 15.47 Hz
(0.6982) - Limitando el rango a
- gt130 Hz 15.91 Hz (0.6763)
- gt150 Hz 14.55 Hz (0.6748)
35Modelado F0 (III)
- Distribución del error en general
- 14.26 Hz en iniciales
- 14.42 Hz en iniciales y finales
- 16.21 Hz en finales
- 19.74 Hz en intermedias (menos datos, más
difíciles) - Distribución del error en las tónicas
- 16.37 Hz en iniciales
- 15.53 Hz en iniciales y finales
- 16.04 Hz en finales
- 16.55 Hz en intermedias
36Modelado F0 (y IV)
- Error por tipos de frases
- Propios 16 Hz
- Sintagmas 16.63 Hz
- Interrogativas falta por realizar el experimento