Analizamos la síntesis de voz de Siri

Eibriel
Eibriel
Published in
4 min readOct 17, 2017

Introducción

En el universo de las experiencias conversacionales algo que siempre me fascinó es la producción de las voces sintéticas que ayudan a dar vida a nuestros personajes.

De hecho me entusiasmé mucho al ver los avances realizados por DeepMind con su red neuronal WaveNet. Pero grande fue mi sorpresa cuando una persona cercana a mi me mostró la nueva voz femenina de Siri para el español de México (disponible en iOS 11 para los dispositivos mas modernos). Lograron incluir vida y movimiento a lo que antes era una voz monótona e implacable, a tal punto que llegué a pensar que lo que escuchaba era una grabación. Así que me decidí a descubrir cual era el detrás de escena de este nuevo acto de ilusionismo de Apple.

¿Cómo se genera la voz de Siri?

Voy a intentar describir de manera detallada, pero sencilla, cual es la técnica detrás de la generación de la nueva voz. Confío en que me harán saber en los comentarios si logré mi cometido.

Según se describe en el paper publicado por el equipo responsable del asistente personal el primer paso es, como quizás sospecharán, elegir una actriz (esta vez Siri no fue interpretada por Susan Bennett) que trasmita la personalidad deseada y que tenga una voz tanto agradable como inteligible.

Luego se grabaron unas 20 horas de material en un estudio profesional, lo cual seguramente llevó muchísimo tiempo, ya que para no agotar a la actriz suelen grabarse solo un par de horas por sesión. En cada encuentro ésta persona debió leer audio libros, instrucciones de navegación, y cualquier cosa desde preguntas hasta bromas.

Ésta ilustración muestra la frase a ser sintetizada “Unit selection synthesis” y su transcripción fonética. Debajo se encuentra la forma de audio y espectrograma correspondiente a los diferentes segmentos (unidades) utilizados. Los segmentos se concatenan para formar el audio final.

Éstas grabaciones no se utilizan tal cual fueron registradas, ya que es imposible saber de antemano que frase deberá pronunciar Siri ante cada situación. Lo que se hace es alinear de manera automática el audio grabado con el texto utilizando modelos de reconocimiento de voz. Para luego dividir todo el material en pequeñas secciones, en componentes elementales del habla, llamados fonemas. Un fonema es la articulación mínima de un sonido vocálico o consonántico, por ejemplo, la palabra “casa” se puede dividir en 4 fonemas /k/, /a/, /s/, /a/, no es necesario seguir dividiendo para describir de qué manera suena esa palabra.

Aún así los ingenieros no solo dividieron horas de grabación en éstas unidades mínimas, sino que también dividieron cada fonema a la mitad, nombrando esta nueva unidad half-phones.

El resultado es entre 1 y 2 millones de unidades (half-phones) más el contexto lingüístico y las propiedades acústicas de cada una. Todo ésto organizado en una base de datos especial.

Sé lo que se están preguntando ¿Por qué armar una base de datos con 2 millones de unidades cuando solo tenemos 27 letras? Podríamos simplemente grabar el sonido de cada una y luego concadenárlos en diferente orden para armar diferentes palabras.

Cómo suele ocurrir la realidad es mucho mas compleja, tomemos el ejemplo de la palabra “casa”. En principio parecería que la primer “a” es intercambiable con la “a” final, pero la realidad es que suenan de manera completamente diferente. Pueden haber miles de variaciones para cada letra (fonema).

Es por ello que la base de datos de Siri incluye muchas versiones diferentes de cada half-phone entre los cuales elegir para armar una palabra. La técnica utilizada para elegir el mejor conjunto de unidades para producir el sonido se llama algoritmo de Viterbi.

Ilustración del algoritmo de Viterbi para encontrar el mejor camino entre las unidades en la base de datos. Cada columna contiene las diferentes versiones para cada half-phone, y cada caja corresponde a una unidad. El mejor camino que encontró el algoritmo de Viterbi se muestra como una línea amarilla.

Hay dos criterios que deben cumplirse para que una unidad sea seleccionada entre las diferentes opciones:

  1. La unidad debe tener la prosodia deseada, es decir la entonación, acentuación, etc. (target cost).
  2. La unidades deberán, siempre que sea posible, poder ser concatenadas sin distorsiones apreciables en los límites de cada unidad (concatenation cost).

Para determinar el valor de éstos costos se entrenó una red neuronal especial llamada deep mixture density network (MDN). Capaz de, dado un texto determinado, predecir los costos para cada unidad, en base a los cuales se aplicará el algoritmo de Viterbi para encontrar el mejor camino entre las unidades.

La red neuronal es capaz de predecir en simultáneo la distribución Gaussiana de los costos de las propiedades del habla (espectro, altura y duración) y la distribución Gaussiana de los costos de concatenación.

Finalmente la base de datos, junto a la red neuronal son optimizados al punto de poder correr sin problemas en un dispositivo móvil.

Conclusión

Los resultados hablan por si mismos, hice una recopilación de las frases comparativas presentadas por Apple entre la voz de iOS9, iOS10 e iOS11 y las diferencias son muy claras. Pueden encontrar el archivo en nuestro canal de Telegram ( https://t.me/eibriels/478 ).

Y cómo bonus dejo un audio demostrando la nueva voz para español méxico ( https://t.me/eibriels/476 ).

Me gustaría ver más desarrollo independiente en el tema, por ejemplo el surgimiento de modelos Open Source capaces de recrear éstos resultados. Desde Eibriel esperamos poder contribuir en el futuro, permitiendo darle voz propia a cada experiencia conversacional.

Eibriel
eibriel.eth.limo

--

--

Eibriel
Eibriel
Editor for

Interactive media creator, Artificial Intelligence researcher. Slightly byslexic.