Adaptación de voz

Cuando realizas una solicitud de detección de intent, puedes proporcionar phrase_hints para proporcionar sugerencias al reconocedor de voz. Estas sugerencias pueden ayudarte con el reconocimiento en una situación de conversación específica.

Adaptación de voz automática

La función de adaptación de voz automática mejora la precisión del reconocimiento de voz de tu agente mediante el uso automático del estado de la conversación para pasar entidades relevantes y frases de entrenamiento como sugerencias de contexto de voz en todas las solicitudes de detección de intent. Esta función se inhabilita de forma predeterminada.

Habilita o inhabilita la adaptación automática de voz

Para habilitar o inhabilitar la adaptación automática de voz, haz lo siguiente:

Consola

  1. Abre la consola de Dialogflow CX.
  2. Elige tu proyecto de GCP.
  3. Selecciona el agente.
  4. Haz clic en Configuración del agente.
  5. Haz clic en la pestaña IVR y voz.
  6. Activa o desactiva la opción Habilitar la adaptación de voz automática.
  7. Haz clic en Guardar.

API

Consulta los métodos get y patch/update para el tipo Agent.

Selecciona un protocolo y una versión para la Referencia del agente:

Protocolo V3 V3beta1
REST Recurso de agente Recurso de agente
RPC Interfaz de agente Interfaz de agente
C++ AgentsClient No disponible
C# AgentsClient No disponible
Go AgentsClient No disponible
Java AgentsClient AgentsClient
Node.js AgentsClient AgentsClient
PHP No disponible No disponible
Python AgentsClient AgentsClient
Ruby No disponible No disponible

Diseño de agentes para mejoras en el reconocimiento de voz

Si habilitas la adaptación automática de voz, puedes compilar tu agente para aprovecharla. En las siguientes secciones, se explica cómo se puede mejorar el reconocimiento de voz con ciertos cambios en las frases de entrenamiento y las entidades del agente.

Frases de entrenamiento

  • Si defines frases de entrenamiento con una frase como “es 3 de diciembre”, un enunciado del usuario que suene similar se reconoce de manera correcta como “es 3 de diciembre” y no “estrés de diciembre”.
  • Cuando tienes un parámetro obligatorio que fuerza a Dialogflow a solicitar mensajes de relleno de formularios, la adaptación de voz automática se aplicará a la entidad que se llena.

En todos los casos, la adaptación de voz automática solo restringe el reconocimiento de voz, no la limita. Por ejemplo, aunque Dialogflow le solicite a un usuario un parámetro obligatorio, los usuarios aún podrán activar otros intents, como un intent “hablar con un agente”.

Entidades del sistema

Si defines una frase de entrenamiento que usa la entidad del sistema @sys.number y el usuario final dice “Quiero dos”, esta podría reconocerse como “para”, “demasiado”, “2” o “dos”.

Cuando la adaptación de voz automática está habilitada, Dialogflow usa la entidad @sys.number como pista durante el reconocimiento de voz, y es más probable que el parámetro se extraiga como "100".

Entidades personalizadas

  • Si defines una entidad personalizada para los nombres de productos o servicios que ofrece tu empresa, y el usuario final menciona estos términos en un enunciado, es más probable que se reconozcan. Una frase de entrenamiento “Me encanta Dialogflow”, en la que “Dialogflow” se anota como la entidad @product, le indicará una adaptación de voz automática a la biografía para “Me encanta Dialogflow”, “Me encanta Cloud Speech” y otras entradas en la entidad @product.

  • Es muy importante definir sinónimos de entidad limpia cuando se usa Dialogflow para detectar la voz. Imagina que tienes dos entradas de entidad @product: “Dialogflow” y “Dataflow”. Tus sinónimos de “Dialogflow” pueden ser “Dialogflow”, “flujo de diálogo”, “compilador de diálogo”, “Speakoit”, “hablar con él”, “API.ai”, “IA de punto de API”. Estos son sinónimos adecuados, ya que abarcan las variaciones más comunes. No es necesario que agregues “el compilador de flujo de diálogo” porque el “flujo de diálogo” ya lo cubre.

  • Las declaraciones de usuario con entidades numéricas consecutivas, pero distintas pueden ser ambiguas. Por ejemplo, “Quiero dos dieciséis paquetes” podría significar 2 cantidades de 16 paquetes o 216 cantidades de paquetes. La Adaptación de voz puede ayudar a evitar la ambigüedad de estos casos si configuras las entidades con valores deletreados:
    • Define una entidad quantity con entradas:
      zero
      one
      ...
      twenty
    • Define una entidad product o size con entradas:
      sixteen pack
      two ounce
      ...
      five liter
    • Solo se usan los sinónimos de entidad en la adaptación de voz, por lo que puedes definir una entidad con valor de referencia 1 y sinónimo único one para simplificar tu lógica de entrega.

Entidades de expresión regular

Las entidades de expresión regular pueden activar la adaptación de voz automática para secuencias alfanuméricas y de dígitos, como “ABC123” o “12345”, cuando se configuran y prueban de forma correcta.

Para reconocer estas secuencias por voz, implementa los cuatro requisitos que se indican a continuación:

1. Requisito de entrada de expresiones regulares

Si bien se puede usar cualquier expresión regular para extraer entidades de las entradas de texto, solo ciertas expresiones indicarán a la adaptación de voz automática a la ordenación de las secuencias alfanuméricas o de dígitos escritas que se reconozcan cuando se reconozca la voz.

En la entidad regexp, al menos una entrada debe seguir todas estas reglas:

  • Debe coincidir con algunos caracteres alfanuméricos, por ejemplo: \d, \w, [a-zA-Z0-9].
  • No debe contener espacios en blanco   ni \s, aunque se permiten \s* y \s?
  • No debe incluir grupos de captura o que no sean de captura ()
  • No debes intentar coincidir con ningún carácter especial o puntuación como los siguientes: ` ~ ! @ # $ % ^ & * ( ) - _ = + , . < > / ? ; ' : " [ ] { } \ |

Esta entrada puede tener grupos de caracteres [] y cuantificadores de repetición como *, ?, + y {3,5}.

Consulta los ejemplos.

2. Requisito de definición de parámetros

Marca la entidad de expresión regular como parámetro del formulario requerido para que pueda recopilarse durante el proceso para completar formularios. Esto permite que la adaptación de voz automática establezca un sesgo sólido para el reconocimiento de secuencias en lugar de intentar reconocer una intención y una secuencia al mismo tiempo. De lo contrario, “Where is my package for ABC123” podría no reconocerse como “Where is my package 4ABC123”?

3. Requisito de anotación de frases de entrenamiento

No uses la entidad regexp para una anotación de frase de entrenamiento de intents. Esto garantiza que el parámetro se resuelva como parte del proceso de relleno de formularios.

4. Requisito de pruebas

Consulta Prueba la adaptación de voz.

Ejemplos

Por ejemplo, una entidad de expresión regular con una sola entrada ([a-zA-Z0-9]\s?){5,9} no activará el reconocedor de la secuencia de voz porque contiene un grupo de captura. Para solucionar este problema, agrega otra entrada para [a-zA-Z0-9]{5,9}. Ahora te beneficiarás del reconocedor de secuencias cuando hagas coincidir "ABC123", pero la CLN seguirá coincidir con entradas como "ABC 123" gracias a la regla original que permite los espacios.

Los siguientes ejemplos de expresiones regulares se adaptan a secuencias alfanuméricas:

^[A-Za-z0-9]{1,10}$
WAC\d+
215[2-8]{3}[A-Z]+
[a-zA-Z]\s?[a-zA-Z]\s?[0-9]\s?[0-9]\s?[0-9]\s?[a-zA-Z]\s?[a-zA-Z]

Los siguientes ejemplos de expresiones regulares se adaptan a las secuencias de dígitos:

\d{2,8}
^[0-9]+$
2[0-9]{7}
[2-9]\d{2}[0-8]{3}\d{4}
Solución alternativa de expresiones regulares

La compatibilidad integrada de la adaptación de voz automática con las entidades de expresión regular varía según el idioma. Verifica los tokens de clase de Speech para ver los idiomas admitidos en $OOV_CLASS_ALPHANUMERIC_SEQUENCE y $OOV_CLASS_DIGIT_SEQUENCE.

Si tu idioma no aparece en la lista, puedes solucionar esta limitación. Por ejemplo, si deseas que se reconozca con precisión un ID de empleado compuesto por tres letras seguidas de tres dígitos, puedes compilar tu agente con los siguientes parámetros y entidades:

  • Define una entidad digit que contenga 10 entradas de entidad (con sinónimos):
    0, 0
    1, 1
    ...
    9, 9
  • Define una entidad letter que contenga 26 entradas de entidad (con sinónimos):
    A, A
    B, B
    ...
    Z, Z
  • Define una entidad employee-id que contenga una sola entrada de entidad (sin sinónimos):
    @letter @letter @letter @digit @digit @digit
  • Usa @employee-id como parámetro en una frase de entrenamiento.

Adaptación de voz manual

La adaptación de voz manual te permite configurar de forma manual frases de adaptación de voz para un flujo o una página. También anula los contextos de voz implícitos generados por la adaptación de voz automática cuando este último está habilitado.

La configuración de la adaptación de voz a nivel de flujo y a nivel de la página tiene una relación jerárquica, lo que significa que una página hereda la configuración de adaptación de voz del nivel de flujo de forma predeterminada, y el nivel más detallado siempre anula el nivel de flujo si la página tiene una configuración personalizada.

Para la configuración de la adaptación de voz, la configuración de nivel de flujo y la configuración a nivel de página se pueden habilitar de forma independiente. Aunque la configuración de adaptación de nivel de flujo no esté habilitada, aún puedes elegir Personalizar a nivel de la página para habilitar la adaptación de voz manual para esa página específica. Del mismo modo, si inhabilitas la adaptación de voz manual en la configuración del nivel de flujo, las páginas en el flujo con la opción Personalizar seleccionada no se verán afectadas.

Sin embargo, las configuraciones a nivel de flujo y a nivel de la página no se pueden inhabilitar de manera independiente. Si un flujo tiene habilitada la adaptación de voz manual, no puedes inhabilitarla para una página dentro del flujo mediante la opción Personalizar. Por lo tanto, si deseas tener un uso mixto de la adaptación de voz manual y la adaptación de voz automática para las páginas dentro de un flujo, no debes habilitar la adaptación de voz manual a nivel de flujo y solo debes usar la configuración de adaptación a nivel de la página. Puedes consultar la tabla a continuación para comprender qué combinación de configuración de flujo y de página debes usar para tu caso de adaptación.

Efecto objetivo Uso recomendado de la configuración de adaptación
Inhabilita la adaptación automática para un flujo Flujo habilitado sin conjuntos de frases (las páginas dentro del flujo usan la configuración de flujo de forma predeterminada)
Cómo inhabilitar la adaptación automática de una página Flujo inhabilitado y página habilitada (se seleccionó la opción Personalizar) sin conjuntos de frases.
Usa la adaptación de voz manual solo para todas las páginas de un flujo Se habilitó el flujo. Personaliza las páginas que necesitan usar conjuntos de frases diferentes del flujo.
Uso mixto de adaptación automática y manual dentro de un flujo El flujo está inhabilitado. Personaliza las páginas a las que quieras aplicar la adaptación manual.
Solo usar la adaptación de voz automática para todas las páginas de un flujo El flujo está inhabilitado.

Habilita o inhabilita la adaptación de voz manual

Para habilitar o inhabilitar la adaptación de voz manual a nivel del flujo o de la página, haz lo siguiente:

Configuración de flujo

  1. Abre la consola de Dialogflow CX.
  2. Elige tu proyecto de GCP.
  3. Desplaza el mouse sobre el flujo en la sección Flujos.
  4. Haz clic en el botón de opciones .
  5. Selecciona Configuración de flujo en el menú desplegable.
  6. Selecciona la casilla de verificación Habilitar la adaptación de voz manual o anula la selección.
  7. Cómo editar, agregar o borrar conjuntos de frases en la tabla de ese conjunto
  8. Haz clic en Guardar.

Configuración de la página

  1. Abre la consola de Dialogflow CX.
  2. Elige tu proyecto de GCP.
  3. Coloca el cursor sobre la página de la sección Páginas.
  4. Haz clic en el botón de opciones .
  5. Selecciona Configuración de la página en el menú desplegable.
  6. La opción Usar el nivel de flujo se elige de forma predeterminada y, cuando lo hagas, se volverán a usar las frases de adaptación del nivel de flujo para esta página. Puedes elegir Personalizar para configurar frases de adaptación diferentes a la configuración del nivel de flujo. Incluso si la adaptación de voz manual está inhabilitada a nivel de flujo, aún puedes habilitarla y configurarla para una página de ese flujo mediante la opción Personalizar.
  7. Editar, agregar o borrar conjunto de frases en la tabla de conjunto de frases de adaptación
  8. Haz clic en Guardar.

Configuración manual de la frase para mejoras del reconocimiento de voz

1. Palabras y frases

En un conjunto de frases de adaptación, puedes definir frases de una o varias palabras con referencias opcionales a los tokens de clase de voz. Por ejemplo, puedes agregar frases como "gran tarifa", "el número de seguimiento es $OOV_CLASS_ALPHANUMERIC_SEQUENCE" o "$FULLPHONENUM". Estas frases proporcionadas aumentan la probabilidad de que se transcriban en lugar de otras frases fonéticamente similares. Cuando agregas una frase de varias palabras sin ninguna mejora, el sesgo se aplica a toda la frase y a las partes continuas dentro de ella. En general, la cantidad de frases debe ser pequeña y solo debes agregar frases que el reconocimiento de voz le cueste lograr correctamente sin adaptación de voz. Si Speech-to-Text ya puede reconocer una frase correctamente, no es necesario agregarla a la configuración de adaptación de voz. Si ves algunas frases que Speech-to-Text suele reconocer de forma errónea en una página o flujo, puedes agregar las frases correctas a sus configuraciones de adaptación correspondientes.

Ejemplo de corrección de error de reconocimiento

Este es un ejemplo de cómo puedes usar la adaptación de voz para corregir problemas de reconocimiento. Supongamos que estás diseñando un agente de intercambio de dispositivos telefónicos, y el usuario podría decir algo que incluya las frases "vender teléfonos" o "teléfono celular" después de que el agente haga su primera pregunta: "¿en qué necesitas ayuda?". Entonces, ¿cómo podemos usar la adaptación de voz para mejorar la precisión del reconocimiento en ambas frases?

Si incluyes ambas frases en la configuración de adaptación, es posible que se confunda Speech-to-Text, ya que suenan similares. Si solo proporcionas una frase de las dos, es posible que Speech-to-Text reconozca erróneamente una frase como la otra. A fin de mejorar la precisión del reconocimiento de voz para ambas frases, debes proporcionar a Speech-to-Text más pistas contextuales a fin de distinguir entre cuándo debe escuchar "vender teléfonos" y cuándo debe escuchar "teléfono celular". Por ejemplo, es posible que notes que las personas suelen usar "vender teléfonos" como parte de expresiones como "cómo vender teléfonos", "quieres vender teléfonos" o "vendes teléfonos", mientras que "teléfono celular" como parte de expresiones como "comprar teléfono celular", "factura de teléfono celular" y "servicio de telefonía celular". Si proporcionas estas frases más precisas al modelo en lugar de las frases originales cortas “celular” y “vender teléfonos”, es más probable que, en Speech-to-Text, “vender teléfono” como frase verbal siga palabras como “cómo”, “quiero” y “haces”, mientras que “teléfono celular” como frase nominal es más probable que siga palabras como “comprar” o que estén seguidas por palabras como “factura”. Por lo tanto, como regla general para configurar frases de adaptación, suele ser mejor proporcionar frases más precisas, como "cómo vender teléfonos" o "vendes teléfonos", que solo incluir "vender teléfono".

2. Tokens de clase de voz

Además de las palabras en lenguaje natural, también puedes incorporar referencias a tokens de clase de voz en una frase. Los tokens de clase de Speech representan conceptos comunes que, por lo general, siguen un formato determinado por escrito. Por ejemplo, para el número de dirección en una dirección como "Calle Principal 123", por lo general, las personas esperan ver el formato numérico "123" de un número de dirección en una dirección, en lugar de la versión escrita completa "ciento veintitrés". Si esperas cierto formato en los resultados de la transcripción, en especial para secuencias alfanuméricas, consulta la lista de tokens de clase admitidos a fin de ver qué tokens están disponibles para tu idioma y tu caso de uso.

Si la página ya tiene rutas de intents o parámetros con referencias a entidades del sistema, a continuación se incluye una tabla de referencia para las asignaciones entre entidades comunes del sistema y tokens de clase de voz:

Entidades del sistema Tokens de clase de voz
@sys.date $MONTH $DAY $YEAR
@sys.date-time $MONTH $DAY $YEAR
@sys.date-period $MONTH $DAY $YEAR
@sys.time $TIME
@sys.time-period $TIME
@sys.age $OPERAND
@sys.number $OPERAND
@sys.number-integer $OPERAND
@sys.cardinal $OPERAND
@sys.ordinal $OPERAND
@sys.percentage $OPERAND
@sys.duration $OPERAND
@sys.currency-name $MONEY
@sys.unit-currency $MONEY
@sys.phone-number $FULLPHONENUM
@sys.zip-code $POSTALCODE o $OOV_CLASS_POSTALCODE
@sys.address $ADDRESSNUM $STREET $POSTALCODE
@sys.street-address $ADDRESSNUM $STREET $POSTALCODE
@sys.temperature $OOV_CLASS_TEMPERATURE
@sys.number-sequence $OOV_CLASS_DIGIT_SEQUENCE
@sys.flight-number $OOV_CLASS_ALPHANUMERIC_SEQUENCE

3. Aumenta el valor

Si agregar frases sin el valor de mejora no proporciona un efecto de personalización lo suficientemente fuerte, puedes usar el valor de mejora para reforzar aún más el efecto de personalización de la adaptación de voz.

El aumento aplica un sesgo adicional cuando se establece en valores mayores que 0 y no más de 20. Cuando la mejora está vacía o es de 0, el efecto de personalización predeterminado ayuda a reconocer la frase completa y las partes continuas dentro de la frase. Por ejemplo, una frase sin mejoras "¿estás abierto a vender teléfonos?" ayuda a reconocer esa frase y también frases similares como "vendo teléfonos" y "Hola, ¿estás abierto?".

Cuando se aplica una mejora positiva, el efecto de personalización es más fuerte, pero solo se aplica a la frase exacta. Por ejemplo, la frase mejorada "vender teléfonos" ayuda a reconocer "¿puedes vender teléfonos?", pero no "vender teléfonos".

Por estos motivos, obtendrás los mejores resultados si proporcionas frases con y sin impulso.

Los valores de mejora más altos pueden dar como resultado menos falsos negativos, que son casos en los que la palabra o frase apareció en el audio, pero no se reconoció correctamente por Speech-to-Text (subsesgo). Sin embargo, la mejora también puede aumentar la probabilidad de falsos positivos, es decir, casos en los que la palabra o frase aparece en la transcripción aunque no haya ocurrido en el audio (sobresesgo). Por lo general, debes ajustar tus frases de personalización para encontrar un buen punto de compensación entre los dos temas de personalización.

Puedes obtener más información sobre cómo ajustar el valor de mejora para las frases en el documento de Cloud Speech sobre el aumento.

Cuándo usar la adaptación de voz automática o manual

En general, si no estás seguro de si la adaptación de voz mejorará la calidad del reconocimiento de voz para tu agente (no hay patrones claros de error de transcripción en mente), te recomendamos que pruebes la adaptación de voz automática antes de recurrir a la adaptación de voz manual. Para tomar decisiones con más matices, considera los siguientes factores para decidir entre la adaptación de voz automática o la adaptación de voz manual:

1. Relleno de formularios

La adaptación de voz automática funciona muy bien con el relleno de formularios, ya que usa el contexto gramatical de ABNF para los parámetros del formulario y aplica reglas gramaticales según sus tipos de entidades. Dado que la adaptación de voz manual aún no admite gramáticas de ABNF, por lo general, se prefiere la adaptación de voz automática en lugar de la adaptación de voz manual para una página que completa un formulario. Para las páginas que solo contienen parámetros de entidad del sistema y entidades regexp simples que son compatibles con los tokens de clase de voz, también puedes usar la adaptación de voz manual para lograr un efecto de personalización similar al de la adaptación de voz automática sin necesidad de ajustar las entidades de regexp.

2. Complejidad de transición de página o flujo

En el caso de una página o un flujo simple con algunas rutas de intents, es probable que la adaptación de voz automática genere frases de personalización representativas y funcione de manera razonable.

Sin embargo, si una página o un flujo tienen una gran cantidad de rutas de intents (para una página, considera también la cantidad de rutas a nivel de flujo) o si alguno de los intents tiene frases de entrenamiento demasiado largas o cortas (por ejemplo, una oración completa o una sola palabra con solo una o dos sílabas), es muy probable que el modelo de adaptación de voz no funcione bien con estas frases. Primero, debes intentar inhabilitar la adaptación de voz para las páginas abiertas con alta complejidad habilitando la adaptación de voz manual con conjuntos de frases vacías (anulación de adaptación vacía). Después, evalúa si hay frases especiales no ambiguas que aún se deban proporcionar a Speech-to-Text para mejorar la calidad del reconocimiento.

Otro síntoma de este problema de complejidad es la existencia de una amplia variedad de problemas de sesgo o sesgo cuando la adaptación de voz automática está habilitada. Al igual que en el caso anterior, primero debes realizar la prueba con la adaptación de voz inhabilitada para la página específica. Si los comportamientos erróneos persisten después de inhabilitar la adaptación de voz, puedes agregar las frases que quieras corregir a la configuración de la adaptación de voz y, también, agregar valores de mejora para reforzar aún más los efectos de personalización cuando sea necesario.

Prueba la adaptación de voz

Cuando pruebas las capacidades de adaptación de voz del agente para una frase de entrenamiento o coincidencia de entidad en particular, no debes pasar directamente a probar la coincidencia con el primer enunciado de voz de una conversación. Debes usar solo entradas de voz o eventos para toda la conversación antes de la coincidencia que deseas probar. El comportamiento de tu agente cuando se prueba de esta manera será similar al comportamiento de las conversaciones de producción reales.

Limitaciones

Se aplica la siguiente limitación:

  • La adaptación de voz no está disponible para todos los modelos de voz ni combinaciones de idiomas. Consulta la página de compatibilidad de Lenguaje de Cloud Speech para verificar si la “adaptación de modelo” está disponible para tu modelo de voz y combinación de idioma.
  • Por el momento, la adaptación de voz manual aún no admite clases personalizadas ni la gramática de ABNF. Puedes habilitar la adaptación de voz automática o usar la solicitud de intent de detección del tiempo de ejecución para usar estas funciones de adaptación.

  • El mismo valor de mejora puede tener un rendimiento diferente en distintos idiomas y modelos de voz, por lo que debes tener cuidado cuando lo configures de forma manual para agentes que usen varios idiomas o modelos de voz. Actualmente, la adaptación de voz manual se aplica a todos los idiomas de un agente, por lo que los agentes multilingües solo deben usar frases independientes del idioma o dividir cada idioma en un agente separado. Dado que el comportamiento de personalización predeterminado (no proporcionar potenciación o realce de 0) suele tener un rendimiento razonablemente bueno para todos los idiomas y modelos, no es necesario que configures los valores de mejora específicos de cada idioma, a menos que se requiera una personalización más fuerte para tu caso de uso de reconocimiento. Puedes obtener más información sobre cómo ajustar el valor de mejora en esta guía de Cloud Speech-to-Text.

  • Es un desafío reconocer secuencias de personajes largos. La cantidad de caracteres que se capturan en un solo turno se relaciona directamente con la calidad del audio de entrada. Si seguiste todos los lineamientos de entidades de regexp y trataste de usar los tokens de clase de voz relevantes en la configuración de adaptación de voz manual y aún tienes problemas para capturar la secuencia completa en un solo turno, puedes considerar algunas alternativas más conversacionales:
    • Cuando valides la secuencia en una base de datos, considera hacer una referencia cruzada de otros parámetros recopilados, como las fechas, los nombres o los números de teléfono, a fin de permitir coincidencias incompletas. Por ejemplo, en lugar de pedir a un usuario a su número de pedido, también pídele su número de teléfono. Ahora, cuando tu webhook consulta a tu base de datos por el estado del pedido, primero puede aparecer en el número de teléfono y, luego, mostrar el orden coincidente más cercano para esa cuenta. Esto podría permitir que Dialogflow escuche incorrectamente “ABC” como “AVC” y aún muestra el estado correcto del pedido para el usuario.
    • Para secuencias más largas, considera diseñar un flujo que aliente a los usuarios finales a pausarse en el medio para que el bot pueda confirmarse a medida que avanzas.