Esta página está en construcción: perdonen los errores y temas inacabados.

This page is being developed: I am sorry for errors and unfinished subjects.

Síntesis de habla 5. Independiente.

Los métodos de síntesis de habla natural modificando el tono, descritos en ntesis de habla. nos permiten ya abordar la síntesis independiente, a partir de alófonos previamente grabados a partir de habla natural.

O sea, usamos la misma rutina (una función llamada compone_fragmento_melodia_integer (con el camino ENTONACION SÓLO, pero almacenando en la señal a copiar (SRC_INTEGER3), el alófono correspondiente, o bien colocando un índice de alófono del que tomar el periodo correspondiente al concatenar la señal sintetizada

La lista de alófonos pueden estar almacenados en una structure (variable con varios componentes heterogéneos, usada en los lenguajes C++ y VisualBasic, por ejemplo), que llamaremos Alofonario, con los campos o variables componentes:

Fonema                1 byte
Alófono                2 bytes
Forma de onda.  500 muestras integer
Sonoridad.          1 byte

En ese alófono basta tomar el primer periodo, porque los demás son copia atenuada de él. Almaceno pues solo unas 500 muestras

El Alofonario ocupa 1 k (byte) por alófono, unos 30 k por alofonario

Para los nombres de los alófonos podemos adoptar el sistema de Creative, con nombres usuales de consonante forma más usual o simple; y el mismo seguido de 'x', para otra variedad, como africada, básicamente.

El formato usado allí es, por ejemplo:    a <200,135>

que significa: alófono [a], duración en milisegundos, frecuencia en hertzios.

Por ejemplo, la secuencia generada ‒por reglas‒ en nuestro programa VERSI, es, para la

-_< 250>
ee< 250, 232>
-s< 75, 237>l< 75, 232>aa< 98, 227>
-t< 50, 237>ii< 66, 232>ee< 66, 227>ee< 66, 210>
-rx< 108, 223>aa< 141, 219>
-dx< 108, 219>ee< 141, 214>
-s< 81, 219>oo< 137, 214>oo< 105, 198>
-r< 33, 227>ii< 43, 223>aa< 43, 219>
-aa< 325, 227>
-r< 108, 202>ii< 141, 198>
-dx< 69, 202>aa< 90, 198>ii< 90, 194>
-f< 87, 198>r< 87, 194>ii< 148, 190>
-aa< 250, 125>
"es la tierra de Soria árida y fría"

donde vemos forma 'rx' para rr doble, 'dx, para d interdental, letra doble para vocal, etc. Hay signos adicionales para indicar sílaba, pausa, acento...,

Podemos generar un alofonario con esta nomenclatura de alófonos, o mejor varios, con diferentes voces o matices alofónicos.

Un problema en nuestro sistema: que se genera la señal alófono dependiente de un tono o frecuencia fundamental determinada; aunque es válida para otros tonos, es óptima para esa frecuencia original; de modo que la elección de esa frecuencia ha de decidirse previamente. A priori parece adecuada un baja, porque contiene forma de onda 'original' para frecuencias más altas que ella. El problema puede ser que los formantes de esa baja frecuencia pueden estar adaptados a ella por el hablante, con lo que para altas resultarían poco adecuados. Otra solución pues es elegir un tono medio del hablante.

Las equivalencias entre letra y alófonos, es decir, el alófono que realiza la letra en su contexto, son (tomo de Versi5):

    letras_ta = "a  b  c ch  d    e    f   g   gu  h   i   j   k   l   ll   m  n  ñ   o   p  qu  r  rr  s  t  u   v   w   x   y   z "
 fonema(0) = "aa b  z       dx  ee   f  gx  g    ee ii  hx k   l  yxj m  n ncj oo p  k    r   rx s  t  uu b   oo  ks ii   z "
 fonema(1) = "aa b  k tsx d    ee   f  g    g        j   hx k   l  yxj m  n ncj oo p  k    rx rx s  t  uu b   uu  gs yxj z "
 fonema(2) = "aa bx z tsx dx  ee   f  hx  g        ii  hx k   l  yxj m  n ncj oo p  k    r   rx s  t  uu bx uu  ks ii    z "
Letras y alófonos correspondientes según contexto. en el sistema Versi2000, con síntesis de Creartive.

Adaptación del sistema anterior a nuestro sistema

En este último, de trata de disponer de una cadena de alófonos, cada uno de los cuales está almacenado en un alofonario que incluye la forma de onda de cada uno, como ocurría en SETS

La cadena incluye ítems de ese alofonario dotados en esa cadena particular de rasgos sonoros, como tono, intensidad y duración; y puntuación adicional, sea sobre )acento) o tras (punto coma,,,) el alófono concreto.

Disponemos pues de una cadena de fragmentos alofónicos, señales, en la que cada uno  es generado de manera similar a lo que hacíamos en Entonacion solo en nuestro sistema descrito en estas páginas.

Procederemos pues así:

1.  Generamos una señal grande formada de fragmentos con una forma de onda en principio diferente y tono (periodo) localmente variable.

Es pues esencialmente igual a una señal natural excepto que cada tramo está etiquetada con un nombre y que la forma de onda dentro de ese tramo es la misma, tomada de un alofonario formado previamente.

Nomenclatura

    letras_ta = "a  b  c ch  d   e   f   g  h   i   j   k   l   ll  m  n  ñ  o  p  q  r  rr  s  t  u  v  w   x   y   z "
 fonema(0) =  "a B  z  c    D  e   f  G       i   j   k   l   L  m  n  ñ  o  p  k  r  R  s  t  u  b  u   ks  i   z "
 fonema(1) =  "a  b  k tsx  d  e    f  g       i   j   k   l   L  m  n  N  o  p  k R  R  s  t  u  b  u  gs  y   z "
 
Letras y alófonos correspondientes según contexto.en nuestro sistema de síntesis

 


Vuelta al Principio    Última actualización: viernes, 18 de septiembre de 2015    Visitantes: contador de visitas