1 / 36

Base de datos para síntesis de dominio restringido

Base de datos para síntesis de dominio restringido. Proyecto Natural Vox: Mejora de calidad de síntesis de voz femenina. Índice. Introducción Diseño de la base de datos Algoritmos voraces ( greedy ) Marcado Modelado prosódico Conclusiones. Introducción. Natural Vox:

savea
Download Presentation

Base de datos para síntesis de dominio restringido

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Base 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

  3. Introducció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

  4. Introducció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.

  5. Diseñ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

  6. Diseñ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.

  7. Diseñ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

  8. Diseñ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)

  9. Diseñ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 frecuentes+80 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

  10. Diseño de la base de datos: Enunciativas • Frases 8 y 9: 4 CV74 frases (36+38): • 150 movimientos bancarios (36+3x38) : • 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 (43+43+43+28+15): • 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.

  11. Diseñ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

  12. Diseñ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)

  13. Diseñ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

  14. Diseñ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

  15. Diseñ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

  16. Diseñ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.

  17. Algoritmos 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)

  18. Algoritmos 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)

  19. Algoritmos 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); • coordenada=MINIMO_RELATIVO(distribLocal, criterioGlobal); • Resta_Distrib_Probab32(distribLocal, distribOptima); • if (coordenada.valor<0) • result= VALOR_CASTIGO*coordenada.valor; • else • result= -ACUMULA_ABS_DISTRIB_PROBAB32(distribLocal);

  20. Algoritmos 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 12 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

  21. Algoritmos 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: difMedia:0.000000 difMax: 1.000000 pearson: 0.999855 • NUMSIL: difMedia:0.006121 difMax:0.040000 pearson: 0.999724 • FONEM:difMedia: 0.002683 difMax: 0.052632 pearson: 0.999587 • ACENT:difMedia: 0.008234 difMax: 0.500000 pearson: 0.999839 • NUMFON:difMedia:0.002464 difMax: 0.333333 pearson: 0.999464 • SILAB:difMedia: 0.002427 difMax: 1.000000 pearson: 0.998990

  22. Algoritmos 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 • NUMSIL:difMedia:-0.002006 difMax:0.000000 pearson:0.999953 • FON: difMedia: 0.000272 difMax: 0.025000 pearson: 0.999861 • ACENT: difMedia:-0.002725 difMax:0.006061 pearson:0.999869 • NUMFON: difMedia:-0.000808 difMax:0.500000 pearson:0.999584 • SIL: difMedia: -0.000319 difMax: 1.000000 pearson:0.999402

  23. Algoritmos 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: difMedia:0.000000 difMax:0.015873 pearson:0.999962 • FON: difMedia: 0.000532 difMax: 0.006623 pearson: 0.999975 • ACENT:difMedia: 0.000000 difMax: 0.250000 pearson:0.999952 • NUMFON: difMedia:0.000000 difMax:0.000000 pearson:1.000000 • SILAB: difMedia:0.000384 difMax: 0.073171 pearson:0.999784

  24. Algoritmos 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

  25. Algoritmos 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

  26. Algoritmos 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%)

  27. Algoritmos 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/2131=0.028155 • error con 100 ej. y 100 pasos: 27/2131=0.012760 • error con 150 ej. y 1 paso: 53/3198=0.016572 • error con 150 ej. y 100 pasos: 38/31980=0.011882 • error con 250 ej. y 1 paso: 48/5330=0.009005 • error con 250 ej. y 100 pasos: 44/5330=0.008255

  28. Marcado:F0 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: 658+296 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)

  29. Marcado:Segmentació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 (10+1) • 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

  30. Modelado: 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)

  31. Modelado: 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 (; , . - ?)

  32. Modelado: 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

  33. Modelado: 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 (; , . ? -)

  34. Modelado: 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, B=13.5/179): 16.47 Hz (0.6849) • Normalización con Z-score: 16,12 Hz (0.6424) • Codificación logarítmica+Z-score: 15.47 Hz (0.6982) • Limitando el rango a • >130 Hz: 15.91 Hz (0.6763) • >150 Hz: 14.55 Hz (0.6748)

  35. Modelado: 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

  36. Modelado: F0 (y IV) • Error por tipos de frases • Propios: 16 Hz • Sintagmas: 16.63 Hz • Interrogativas: falta por realizar el experimento

More Related