Desarrollo de habilidades para Alice. Experiencia con interfaces de voz, consejos para principiantes.

Hace solo un mes, queríamos probar suerte para crear una extensión para las habilidades funcionales de Alice. Por la experiencia de comunicarme en el chat de soporte Yandex.Dialog , tuve la impresión de que ya hay algo que compartir con las funciones de novatos de trabajar en interfaces de voz.

En la nota quiero contar mis impresiones sobre las tres semanas de Snow Maiden de la habilidad de Año Nuevo de nuestros hijos y sobre las preguntas y respuestas en el chat de desarrolladores de diálogo.



Para un profesional en VUI , la nota no será nada nuevo, pero los buenos consejos y comentarios de los experimentados son bienvenidos. Estoy escribiendo por primera vez, por favor no juzgue estrictamente.

¿Por qué prestarle atención a Alice?
¿Por qué todo esto: voz, habilidades?
¿Cómo crear una habilidad?
Enfoque general y errores comunes.
Defectos actuales de la plataforma.

¿Por qué prestarle atención a Alice?


Si los asistentes de voz en el extranjero ya se han convertido en un lugar común, muchas horas de conversaciones con el robot ya se están filtrando en la red , entonces todavía lo tenemos en el nivel de interacción con el navegador, charla de niños con Alice, mimos de geeks con hogares inteligentes. Pocos de mis amigos ingresan notas y recordatorios usando Siri, aunque, en mi opinión, esta es una de las opciones más convenientes para usarlo. Con una alta probabilidad este año, la situación cambiará para mejor, porque la base ya se ha establecido:

  • Alice solo tenía un año, está estudiando, pero ya sabe cuánto.
  • Salga de la estación Yandex : creo que gradualmente se volverá más inteligente y funcional.
  • La aparición a la venta en diciembre de los primeros mini altavoces de bajo costo.
  • Alice School se lanza para desarrollar habilidades para desarrolladores
  • Se anunciaron importantes mejoras en la infraestructura de Yandex. Los diálogos se anunciaron, en particular, "habilidades de descubrimiento", una herramienta para la búsqueda conveniente y la clasificación de habilidades de desarrolladores externos

Todo esto me dice que estamos en el comienzo del desarrollo de interfaces de voz en Rusia y, por lo tanto, decidimos comenzar a estudiar estas tecnologías.

¿Por qué todo esto: voz, habilidades?


Creo que muchas personas ya entienden la ventaja de las interfaces de voz en algunos casos, pero no será superfluo recordar: a veces esta es la opción más adecuada. Por ejemplo, en el automóvil o en la cocina, cocinar, en cualquier otra actividad donde sus manos estén ocupadas, es más conveniente dar órdenes por voz. Por ejemplo, durante mucho tiempo hay robots-enfermeras, controlados por voz , que ayudan con las operaciones quirúrgicas.

La voz es una interfaz familiar para que las personas interactúen. Las personas mayores y los niños aprenden este método sin ningún problema para obtener información y administrar dispositivos.

Para las personas con discapacidad visual, la voz y la audición son un canal aún más importante de interacción con el medio ambiente. A juzgar por el chat Yandex.Station, esta categoría de personas realmente apreciaba la apariencia de un dispositivo que les facilitaba la vida.

No continuaré enumerando casos, si es interesante, entonces puede aprender más sobre todo esto en la literatura especializada.

Skill es un programa que implementa un cierto diálogo que se inicia mediante un comando de activación dado en Alice y expande las capacidades del asistente de voz de Yandex.

¿Cómo crear una habilidad?


Ya hay una serie de buenas habilidades de terceros, pero hay muchos más nichos que puedes ocupar y crear una habilidad realmente interesante y útil.

Hay varios artículos sobre cómo crearlos, incluso sobre Habré. Hay documentación , hay breves recomendaciones generales . No profundizaré en los detalles técnicos de la implementación, porque Me gustaría compartir enfoques comunes para principiantes.

Técnicamente, la habilidad es muy similar a un bot, con la diferencia de que no puede enviar un mensaje en sí, sino que solo responde a la solicitud de un usuario.

Aquí hay una breve lista de recursos para ayudarlo a comenzar: Bibliotecas y recursos para Yandex Dialogs

Preguntas frecuentes no oficiales sobre el trabajo con Yandex Dialogs.

El documento contiene enlaces relevantes y no muy, y preguntas y respuestas.
El chat de arriba Yandex Dialogs .

Para comenzar el desarrollo, necesita una cuenta en Yandex, un servidor en el que se ubicará y ejecutará el código de nuestro programa, un servidor web y la propia aplicación, escritos en cualquier idioma conveniente para usted que pueda proporcionarle trabajo a través del protocolo https .

No daré detalles sobre la implementación de mis habilidades aquí, si hay una solicitud de la comunidad, prestaré atención a esto en un artículo separado. Además, tales materiales ya existen.

Dejaré solo un ejemplo de una habilidad simple en PHP con comentarios que, creo, permitirán a un principiante comenzar rápidamente.

El repositorio contiene un script para crear un entorno de desarrollo simple que ejecuta el servidor web integrado en PHP y el uso del servicio serveo.net hace que el puerto local sea accesible desde Internet:



Guarde la URL https: //******.serveo.net: esta será su URL de webhook. A diferencia de ngrok, esta URL no cambia con el tiempo, no necesita cambiarla en la configuración del cuadro de diálogo. Puede verificar la disponibilidad del webhook ingresando esta URL en el navegador; json debería regresar con un error. Esto es normal, no pasamos los parámetros necesarios al script.

A continuación, registre la habilidad en sí a través del enlace :



Seleccione el elemento "Habilidad en Alicia"



Completamos todos los campos de acuerdo con las indicaciones y la documentación de los cuadros de diálogo:



En el campo de URL de webhook, ingrese la URL recibida anteriormente.

Intentamos guardarlo, si seguimos las instrucciones dadas, todo debería funcionar la primera vez.

En este artículo sobre implementación, solo le aconsejo que preste especial atención al sistema de registro de acciones del usuario. Tengo todas las áreas problemáticas de la interacción del usuario, por ejemplo, espero "sí | no, pero obtengo algo más, lo escribo en el registro y lo transmito inmediatamente (como un proceso separado para la velocidad del webhook) al canal de telegramas para el seguimiento y la respuesta operacionales.

Enfoque general y errores comunes.


Como esperaba, los enfoques habituales para el desarrollo web convencional o el desarrollo de bot de telegramas no son adecuados aquí. La principal diferencia es la imprevisibilidad frecuente de las respuestas. La plataforma de diálogo le permite agregar botones con respuestas claras a la pregunta, pero el usuario a menudo no responde en absoluto lo que espera un programador que está acostumbrado a seguir una lógica clara.

Un ejemplo

¿Quieres aprender otro poema?
[sí] [no]

Esperamos que la persona responda sí o no, pero se nos presentaron muchas otras opciones:

  • Si
  • si si
  • por supuesto que quiero
  • Sí, mamá, ¿qué tenemos que comer?
  • cansado de
  • ¿Qué tiempo hace en Novosibirsk?

Todo esto sucede por varias razones. Una persona puede usar varias frases afirmativas: "por supuesto", "sí", "sí", "vamos", etc. así como los negativos. Sucede que él no comenzó a responder la pregunta a tiempo, Alice todavía no escucha la respuesta y la persona ya está comenzando a hablar, al final escuchamos parte de la frase. O viceversa, después de que una persona responde, continúa la conversación con otro interlocutor "en la vida real". Además, el usuario de la habilidad puede simplemente no entender lo que está dentro del diálogo de terceros, y hace las solicitudes habituales de aliso sin dejar el comando "suficiente".

Si simplemente repetimos la misma pregunta sin reconocer la respuesta correcta, esto puede molestar al usuario y provocar desilusión en su habilidad y en las interfaces de voz en general. Por lo tanto, debe prestar especial atención a los mensajes de error, a veces es mejor reformular la pregunta, aclararla y no volver a preguntar. Es probable que el usuario responda la misma pregunta de la misma manera, solo que más fuerte.

También debe intentar proporcionar varias opciones para las respuestas de los usuarios, resaltar la parte semántica. Dependiendo de la situación, a veces es mejor cometer un error una vez a favor del reconocimiento incorrecto de la respuesta, y no obligar al usuario a responder con claridad. Si agrega algo con el patrón a las respuestas esperadas (sí *), a menudo funcionará como debería, y los casos en que se nos dijo "déjenme solo" serán una excepción y no ocurrirá nada crítico en la lógica del programa. Si, por supuesto, necesitamos una respuesta precisa, debido a un reconocimiento incorrecto del cual habrá consecuencias irreversibles en el sistema, entonces deberíamos obtener una respuesta clara del usuario. O, en caso de que no estemos seguros de la respuesta, podemos solicitar información adicional faltante.

Cada uno de los casos de interacción debe considerarse por separado.

En el ejemplo anterior, nos enfrentamos al hecho de que los usuarios piden un poema más corto o sobre algún personaje ("¿hay uno más corto?", "Hablemos de la doncella de nieve").

Aquí tenemos opciones: agregue nuevos niveles de menú, pero no se olvide de la "humanidad" del diálogo o responda a tales solicitudes de acuerdo con las expectativas del usuario, pero no las ofrezca explícitamente.

No importa cómo pensamos en esta parte del diálogo al principio, nos dimos cuenta de que el uso real mostraría mejor los deseos del usuario, porque comenzamos nuestra primera habilidad con una funcionalidad mínima, agregando gradualmente las capacidades de nuestra Doncella de nieve, así como reacciones a las solicitudes que no habíamos solicitado antes.

Usar API de terceros

Notamos que para proporcionar algunas funciones útiles en sus habilidades, los desarrolladores a veces recurren al uso excesivo de API de terceros. Sin embargo, no olvide que el tiempo de respuesta de su webhook no debe exceder los 1,5 segundos. A veces, esto puede causar una experiencia de usuario negativa con una habilidad que responde correctamente o escribe: "algo salió mal".

Características del reconocimiento de entidades con nombre : no todos los nombres, las ciudades se reconocen correctamente y, por lo tanto, es aconsejable proporcionar esto en su habilidad. Hasta ahora, para no privar al niño de un nombre Yandex no reconocido de comunicarse con la Doncella de Nieve, tuvimos que recurrir a algunas "muletas". Inmediatamente tenga esto en cuenta al desarrollar, para no molestar a los usuarios con los nombres Glory o Hope, por ejemplo. Esperamos que Yandex arregle esto pronto.

Pronunciación de palabras

Una herramienta de prueba de síntesis de voz existente no siempre coincide con lo que realmente tiene en su habilidad. No seas perezoso para proporcionar mecanismos para agregar tts a cualquiera de tus respuestas. Confiamos en el motor Yandex, y algunas de las frases en nuestra habilidad ahora son difíciles de etiquetar para una mejor pronunciación (sin cambios importantes en el código). Lo consideraremos para el futuro.

Las funciones PHP simples pero efectivas para la comparación de palabras difusas ayudaron mucho:
similar_text () , levenshtein () , otros idiomas también tienen herramientas similares. Bueno, y, por supuesto, expresiones regulares, sin ellas.

Estas funciones permitieron, por ejemplo, aceptar correctamente la respuesta al acertijo con una respuesta parcialmente correcta, no exactamente reconocida, en diferentes declinaciones.

Esto, por supuesto, para los especialistas en PNL (procesamiento del lenguaje natural) no se verá serio, pero, una vez más, una nota, para principiantes.

Debilidades actuales de la plataforma


Brevemente describiré las principales afirmaciones de los desarrolladores sobre Yandex Dialogs, que noté en el chat.

Una moderación larga, a menudo aparentemente ilógica. Sucede que su habilidad no sufre moderación debido al hecho de que, por ejemplo, tiene un nombre de habilidad demasiado común, por ejemplo, "clima en Crimea", a pesar de que ya tiene una habilidad con un nombre similar: "Tiempo en Severodvinsk". Así que entiendo que esto se debe al hecho de que anteriormente los requisitos para los nombres y las palabras de activación eran más simples y que el hijo de la novia de su madre tuvo suerte para el chico, y no tendrá éxito. Busque una frase diferente o intente usar una marca .

La documentación no siempre es verdadera. La plataforma en sí se está desarrollando rápidamente, la documentación no se mantiene, a veces los usuarios y representantes de Yandex la interpretan de manera diferente.

La plataforma hasta ahora solo proporciona herramientas básicas para la depuración de habilidades .
Cuando agrega una habilidad al panel de desarrolladores, su webhook ya debería responder correctamente, o simplemente se producirá un error de validación. Qué tipo de error, qué JSON se envió y cuál vino, no lo veremos. Si lograste agregar la habilidad, tendrás un panel mínimo con el contenido de la última solicitud-respuesta y ¡eso es todo! No hay medios para comprobar cómo funcionará y cómo sonará esto en el dispositivo antes de la moderación. Hay un emulador de terceros que funciona bastante inestable, no en todos los navegadores, y no cumple con el protocolo actual.

Hay otros deseos y solicitudes de los desarrolladores, tales como: integración con un hogar inteligente, determinación del interlocutor por su voz, la capacidad de elegir voces para habilidades con mejor generación, integración de sistemas de pago, integración con cuenta Yandex, incluso para trabajar con una habilidad con diferentes dispositivos bajo un solo usuario, sistema pensado de habilidades privadas. Pero estas son funciones que requieren un estudio cuidadoso y, desde el punto de vista de la seguridad, conveniencia. Creo que Yandex podrá brindar estas oportunidades cuando lo implemente al nivel adecuado. Sin embargo, los problemas de moderación, depuración y documentación a veces irrelevante pueden interferir en gran medida con los principiantes para acostumbrarse a la plataforma.

Ayuda que en el soporte de chat responda constantemente, también se ha organizado una comunidad menos experimentada y receptiva, que me ha ayudado mucho, lo ayudará. El soporte responde a muchos reclamos con bastante rapidez con los mensajes "tomamos nota", "conocemos la documentación, la arreglaremos", "decidimos sobre la moderación". Ok, lo esperamos con ansias.

Para comenzar rápidamente, le aconsejo que publique una habilidad privada , ahora se verifican con los requisitos mínimos:

  • La habilidad se verifica por el nombre y la frase de activación , ya que la base es común para todos los desarrolladores.
  • Webhook debe responder a las solicitudes correctamente .
  • Una habilidad privada debe informar que la habilidad está cerrada en su dirección de bienvenida. Para que el usuario que lo lanzó accidentalmente sea notificado.

Consejo de chat:

Una vez que una habilidad publicada se puede usar para probar sus otros diálogos en anticipación de la moderación, enviando solicitudes de un webhook publicado a uno desarrollado, filtrando por user_id.

Conclusión


En general, las interfaces de voz en sí mismas parecían un tema muy interesante, cada vez más demandado en el futuro, planeo profundizar más en ello, leer literatura especial, instrucciones y consejos de servicios similares extranjeros (Google, Amazon, Siri, etc.).

Déjame recordarte nuevamente sobre la escuela Yandex de Alice, si alguien como yo estaba interesado en este tema.

Algunos enlaces relacionados más:

Blog de Yandex Dialog
Youtube channel Yandex Dialogs
Diálogo fácil
Libro Diseño de interfaces de usuario de voz
Natasha: una biblioteca para extraer entidades con nombre
Canal de Telegram informando sobre nuevas habilidades
Catálogo de habilidades no oficiales

Source: https://habr.com/ru/post/es434194/


All Articles