10 min read

Introducción a las interfaces de voz

¿Qué es una interfaz de voz? ¿Cómo podemos diseñar experiencias conversacionales? ¿Qué caracteriza a este proceso de diseño? ¿Qué principios de diseño debemos aplicar?
Introducción a las interfaces de voz

Las interfaces de voz han existido desde los años 50, pero nunca con una tecnología tan capaz de crear verdaderas experiencias conversacionales tan fluidas y naturales como las actuales.

Desde la creación de los Interactive Voice Response (IVR) más elementales capaces de entender a una persona desde un teléfono para ejecutar instrucciones básicas, las interfaces de voz se han instalado en nuestros dispositivos móviles para asistirnos en casi cualquier actividad de la vida cotidiana: conducir, reservar un hotel, consultar internet, conversar por redes sociales, etc.

Actualmente, los términos de interfaz de voz e interfaz conversacional son prácticamente intercambiables. Aunque en lo conversacional podríamos incluir también a los chatbots (interfaces que permiten un diálogo desde el texto y que no tienen por qué tener una voz artificial), cada vez más vemos que el desarrollo de interfaces de voz, incluidos los IVR, se mueven en el espacio conversacional para aprovechar algunas de las características que tiene este paradigma:

  • Es más rápido en algunos contextos (hablamos más rápido que escribimos).
  • No necesita capacidades físicas más allá de la voz, liberando nuestras manos y vista del dispositivo.
  • Es más intuitiva considerando que el lenguaje es una habilidad aprendida y es lo único que necesitamos.
  • Facilita la comprensión reduciendo la ambigüedad de los textos escritos.

Al mismo tiempo, no debemos olvidar que el medio y la interacción por voz suponen algunas limitaciones para la gente:

  • Hablar con una máquina no es una actividad con la que todo el mundo se sienta cómodo/a.
  • Los espacios públicos pueden generar mucho ruido a la conversación y dificultar el entendimiento.
  • La falta de privacidad puede suponer una barrera importante en relación a la información que se intercambia.
  • La tecnología puede limitar la capacidad de comprensión para según qué acentos o estilos de habla.

Conversaciones entre personas y máquinas

La interacción mediante el lenguaje natural con una máquina debe seguir las mismas reglas que una conversación entre personas para poder considerarla 'natural'. Esto es lo que se conoce como pragmática conversacional y se expone con las Máximas de Grice, que nos proponen cuatro principios básicos sobre los cuales diseñar conversaciones efectivas:

  1. Cantidad: usa sólo las palabras que sean necesarias.
  2. Calidad: intenta que lo digas sea verdad.
  3. Relevancia: da una respuesta pertinente en cada momento.
  4. Modo: ofrece una respuesta clara y sin ambigüedad.
Experiencias conversacionales por voz - Fonos, Editor Online TTS creado por Monoceros Labs
Las máquinas llevan años intentando hablarnos, y no sólo en el mundo de la ciencia ficción. Google Assistant, Siri o Alexa son algunos de los asistentes más cercanos con los que podemos comunicarnos por voz. Sus respuestas suelen estar diseñadas para satisfacer de manera eficiente las peticiones que les lanzamos.…

Si bien es cierto, el lenguaje y la comunicación son más complejos. Las figuras retóricas como el sarcasmo o la ironía tienden a romper estas máximas y siguen siendo recursos comunicativos útiles en algunos contextos.

En cualquier caso, no debemos olvidarnos de que podemos diseñar experiencias conversacionales útiles y usables sin entrar en el hiperrealismo.


¿Cómo funciona la tecnología por voz?

Para entender qué y cómo podemos diseñar interfaces conversacionales debemos primero conocer algunos conceptos básicos de la tecnología que las hace posibles, ya que desde ahí podremos intervenir y configurar el modelo de diálogo que queramos.

Nos centraremos en el funcionamiento de asistentes como Siri, Google o Alexa para poder comprender qué es necesario para su funcionamiento y analizaremos, también, qué novedades traen a este proceso la incorporación de los grandes modelos de lenguaje (LLMs) que se vienen popularizando desde 2022 con la salida de ChatGPT.

Despertar a la máquina

Existe un concepto llamado wake-up word que es aquella palabra que activa el modo escucha de un asistente.

💡
Ejemplos como 'Ok, Google' o 'Alexa' son las palabras de invocación de estos asistentes.

Normalmente, los dispositivos donde se instalan estos asistentes no están permanentemente escuchando y procesando nuestra voz, es sólo cuando lo invocamos cuando comienza la interacción.

Dependiendo del dispositivo, esta activación también puede hacerse por un botón físico o digital, o más recientemente, puede activarse por preferencias desde el inicio de alguna aplicación destinada a ello como la transcripción de llamadas con Apple Intelligence.

La forma de activar este modo es una de las decisiones de diseño que tomaremos:

  • ¿Tiene nuestro asistente un nombre propio o forma parte de una plataforma?
  • ¿Hay botones físicos o digitales que lo activen?
  • ¿En qué momento comenzará la escucha?

Al igual que el inicio de la escucha, deberemos pensar en qué momento dejaremos de escuchar. Para los asistentes conversacionales clásicos existe un tiempo máximo en el que escucharán y de no recibir señales, se apagarán solos.

Reconocimiento del habla (ASR, Automatic Speech Recognition)

Una vez invocado el modo escucha, la primera etapa de funcionamiento es el reconocimiento del habla. En este punto, el sistema intenta reconocer y transcribir todo lo que escuche de la persona en texto para su procesamiento, incluido el reconocimiento del idioma.

💬
"Quiero escuchar a Residente en Spotify."
Revisiting the Boundary between ASR and NLU in the Age of Conversational Dialog Systems
Abstract. As more users across the world are interacting with dialog agents in their daily life, there is a need for better speech understanding that calls for renewed attention to the dynamics between research in automatic speech recognition (ASR) and natural language understanding (NLU). We briefly review these research areas and lay out the current relationship between them. In light of the observations we make in this article, we argue that (1) NLU should be cognizant of the presence of ASR models being used upstream in a dialog system’s pipeline, (2) ASR should be able to learn from errors found in NLU, (3) there is a need for end-to-end data sets that provide semantic annotations on spoken input, (4) there should be stronger collaboration between ASR and NLU research communities.

En este punto no tenemos grandes decisiones de diseño que hacer más que buscar la tecnología que mejor preparada esté (el algoritmo que mejor entrenado esté) para entender bien a nuestra audiencia.

En este caso debemos considerar que las personas pueden tener formas muy diferentes de hablar por su acento, capacidades, edad, contexto cultural, etc. y que todas ellas deberían poder ser reconocidas para una transcripción efectiva. De otro modo, estaríamos forzando a las personas a adaptarse a la máquina y no a la inversa.

Entendimiento del lenguaje (NLU, Natural Language Understanding)

En esta etapa, el sistema intenta procesar el texto obtenido desde el ASR sintáctica y semánticamente para extraer significado del mismo.

🤖
- Frase: Quiero escuchar a Residente en Spotify.
- Acción: escuchar
- Artista: Residente
- Aplicación: Spotify.

Se hace un análisis de cada frase y se estructuran los datos de cada palabra y sus relaciones para poder entender la intención, el sentimiento y el significado.

El NLU es el conjunto de frases diferentes que servirán para entrenar al algoritmo para extraer significado. Por ejemplo, podríamos enseñarle que:

  • Quiero escuchar música,
  • ponme música,
  • y reproduce música,

Son tres variaciones con el mismo significado y, desde ahí, podrá inferir que 'ponme algo de música' o 'reproduce algo' podrían significar lo mismo.

Además podrá identificar si existe falta de información, por ejemplo, si le pedimos 'quiero escuchar música' podrá identificar que falta que le pidamos un artista, un disco, o un género musical.

Gestión del diálogo (DM, Dialogue Management)

Una vez entendido el significado y la intención, durante la fase de gestión del diálogo se activan los mecanismos necesarios para ejecutar la/s tarea/s necesarias y decidir una respuesta oportuna.

🗯️
- Función: abrir la aplicación de Spotify y reproducir la canción más popular de Residente
- Respuesta: Preparar una respuesta de confirmación

Durante la gestión del diálogo debemos definir los flujos y procesos subyacentes, así como la respuesta que dará el asistente al usuario.

Generación del lenguaje (NLG, Natural Language Generation)

En esta fase, se genera una respuesta usando lenguaje natural en modo texto en un idioma determinado.

🗨️
"De acuerdo, reproduciendo Residente en Spotify"

La generación de la respuesta no tiene por qué ser siempre la misma ante las mismas peticiones, de hecho, definir varias respuestas ayudará a crear un diálogo menos monótono.

Generación de la respuesta por voz (TTS, Text-to-speech)

En la última etapa, se utiliza el texto generado para responder al usuario y se sintetiza mediante una voz artificial para que pueda ser escuchado.

La voz tendrá un tono, una velocidad y una prosodia que otorgan significado, por lo que también será un elemento que debamos diseñar.


¿Cómo diseñamos para asistentes conversacionales?

Para diseñar asistentes conversacionales seguiremos un proceso similar al que usaríamos en el caso de cualquier otro tipo de interfaz: un proceso de diseño centrado en el usuario.

La investigación sigue siendo necesaria para comprender quién es nuestra audiencia objetivo, cómo piensa, qué necesidades y expectativas tiene, y cómo es su contexto de uso.

Con esta información podremos ir tomando decisiones de diseño que son claves para el asistente.

Diseño de la personalidad y del comportamiento

La personalidad del asistente nos ayudará a definir las características sobre su comportamiento, su manera de expresarse y su actitud. Al igual que hacemos cuando definimos un sistema de diseño en una GUI, los rasgos de la personalidad del asistente verán reflejados los valores de la marca para mostrar coherencia y continuidad y reforzar la identidad que queremos proyectar.

Durante el proceso de diseño de la personalidad daremos respuesta a las siguientes preguntas:

  • ¿Qué atributos definen a tu asistente?
  • ¿Cómo se representan esos atributos en las palabras y el tono de comunicación?
  • ¿Qué comportamiento sería natural según esos atributos?
  • ¿Cómo debería sonar la voz de acuerdo a estos rasgos?
  • ¿Qué expresiones serían típicas según esos atributos y cuáles serían anormales?

El proceso de definición de la personalidad incluye:

  1. Crear una lista de atributos que sean relevantes para la marca.
  2. Encuestar a usuarias cuáles de ellos pueden ser más apropiados para el asistente y reducir la lista a los más frecuentes.
  3. Describir dichos atributos y crear rangos de expresión.
  4. Incluir ejemplos de cómo se expresarían y cómo no se expresarían de acuerdo a esos atributos.

Por ejemplo, si tras la investigación hemos decidido que nuestro asistente será 'amigable' podemos definir tanto expresiones que se aceptarían como correctas:

  • ✅¡Hola! me alegra verte.

Como expresiones que no serían aceptables:

  • 🚫Hey colegui, qué pasa.

De esta manera crearemos un consenso sobre qué significa 'amigable' y cuáles su forma de expresión.

Intercambio de roles

Una vez tengamos definida la personalidad, podemos dar paso a un prototipo ágil y sin demasiado coste usando la técnica de Role-Play o intercambio de roles.

El intercambio de roles es una técnica donde una de las personas adquiere el rol de 'asistente' y otra de usuaria y simulan tener una conversación lo más natural y realista posible.

Álvaro Clavero y Enrique Gutiérrez de Idealista interpretando una conversación ficticia entre una persona y un asistente durante el WeyWeyWeb 2022.

En estos momentos no prestaremos demasiada atención aún a la longitud de las respuestas, aunque sí pondremos a prueba si existe un intercambio de turnos coherente y los diferentes caminos que podría tomar una conversación en un contexto real.

Diálogos

Desde el juego del intercambio de roles, ya podemos comenzar a definir diálogos para los llamados happy-path, conversaciones donde 'todo va bien' y las excepciones.

En estas conversaciones podremos decidir:

  • Cómo se presenta el asistente.
  • Cómo ofrece opciones.
  • Cómo ayuda a descubrir lo que puede hacer.
  • Cómo reacciona al contexto.
  • Cómo gestiona la inacción.
  • Cómo pide disculpas (ante fallos o falta de información).
  • Cómo será el diseño sonoro que ayude a la conversación.
  • Cómo se despide.
  • Cómo gestiona el desconocimiento y la ambigüedad.

Además, para evitar la monotonía y crear un asistente algo más interesante, a todas estas respuestas deberemos añadir variaciones: diferentes maneras de decir lo mismo.

Diseñar el NLU

De la misma manera, en los diálogos deberemos ir identificando también cómo serán las diferentes formas en las que las personas hagan peticiones al asistente.

Como hemos visto anteriormente, el NLU ayudará a entrenar el algoritmo capaz de extraer significado.

Utterances e Intents

Para definir variaciones nos basaremos en las utterance, frases que pronuncia una persona para expresarse, más habituales y los iremos mapeando con intents, tareas que se esperan sean reconocidas.

  • Intents: Reproducir música
  • Utterances:
    • Quiero esuchar música
    • Reproduce música
    • ¿Puedo escuchar a Residente?

Ya os podéis imaginar que para proporcionar todas esas variaciones debemos observar a personas en un contexto de uso real. Además, si la plataforma o el asistente es capaz de retener un historial de utterances, debemos consultarlo para ir incorporando nuevos modos. Es algo parecido a lo que hacemos cuando consultamos las palabras clave de búsqueda de una web para conocer en qué términos se expresan nuestras usuarias.

Entites

Las entidades o slots son piezas de información que el asistente debe reconocer y capturar de los usuarios para poder actuar de acuerdo a la intención.

Por ejemplo, en la utterance 'Quiero escuchar música' podemos tener una entidad 'artista' y en caso de no identificarla debemos planificar una respuesta del asistente tipo '¿Qué artista quieres escuchar?'.

NLU design: How to train and use a natural language understanding model | Voiceflow
Learn the basics of NLU models and how teams are training/using them for conversational AI experiences.

Prototipar una conversación

Actualmente existen varias herramientas que podemos usar para prototipar experiencias conversacionales (de más completos a menos):

  1. Rasa
  2. Voiceflow
  3. Dialogflow
  4. Fonos

La más completa es Voiceflow, que permite crear el flujo completo de una conversación, entrenando un NLU, usando lógica de programación con una interfaz visual, aunque dependiendo de la fase de diseño podemos agradecer la simplicidad de Dialogflow o la practicidad de Fonos para simular conversaciones con voces diversas. Rasa es un framework no-code que te permite construir asistentes listos para su publicación.

En fases iniciales nuestros prototipos serán documentos simples donde vayamos escribiendo los diálogos, con Fonos podremos incluso reproducirlos con voces artificiales y escuchar cómo resultarían. De ahí podemos pasar a definir las utterances con sus entities, con Dialogflow podemos entrenar un NLU de manera simple para ir probándolo. Para probar el flujo más completo podemos usar Voiceflow, que nos dará la posibilidad de desplegar el prototipo en un asistente como Alexa o en una web (chatbot).