Agentes de voz en tiempo real con inteligencia de vanguardia — Bohan Li, EliseAI

AAI Engineer
컴퓨터/소프트웨어AI/미래기술

스크립트

00:00:00Mi nombre es Bo. Voy a presentar Agentes de Voz en Tiempo Real con Inteligencia de Frontera.
00:00:18Básicamente voy a hablar un poco sobre cómo nosotros en
00:00:22Elise AI diseñamos nuestro sistema de agentes de voz para lograr voz en tiempo real con el
00:00:28nivel de inteligencia de frontera que necesitamos. Así que antes de empezar, creo que quería
00:00:36establecer algunos paralelismos sobre por qué decidimos optar por agentes de voz en cascada
00:00:42y especialmente compararlo con los coches autónomos, en los que trabajaba
00:00:48antes. Para mí, los agentes de voz en cascada tienen mucho sentido cuando se ven bajo
00:00:53la óptica de dividirlo en percepción, que para los coches autónomos
00:00:59son, ya sabes, las cajas delimitadoras, la cámara, el lidar. Para la voz, va a ser la
00:01:05transcripción, básicamente convirtiendo estas señales del mundo real
00:01:09en elementos de datos que el modelo de lenguaje o cualquier cerebro con el que estés trabajando pueda
00:01:17procesar. El segundo es la pila de planificación, que es bastante sencilla.
00:01:23Aquí es donde el modelo de lenguaje tomará las salidas de la etapa de percepción y producirá
00:01:29las salidas que deseas generar de regreso hacia el mundo real. Y finalmente está la capa de control
00:01:36donde, en la conducción autónoma, tomarías la trayectoria que emite el planificador y la convertirías
00:01:43en los controles reales para conducir el coche. Aquí estamos convirtiendo el texto en
00:01:50el audio que usamos para expresar los pensamientos de nuestros agentes de voz. Y sí, aquí profundizaré en
00:02:00cada uno de estos elementos y hemos hecho algunos trucos interesantes en cada una de estas áreas para
00:02:08mejorar la velocidad de nuestros agentes de voz sin sacrificar la inteligencia.
00:02:13El primero va a ser la capa de transcripción. Se nos ocurrió este concepto llamado
00:02:19transcriptor especulativo en streaming, donde efectivamente superponemos un transcriptor rápido
00:02:24en streaming como Flux sobre o debajo de un Scribe v2, que es una transcripción por lotes precisa
00:02:33que toma más contexto. Es un poco más lenta, pero ofrece detecciones más precisas.
00:02:39Vamos a recorrer un escenario ahora. En este caso, el agente acaba de preguntar
00:02:44¿Puede escribir su nombre y fecha de nacimiento? Y el usuario va a decir esto y veremos cómo se desarrolla
00:02:49en términos de tiempo. Primero obtendremos la detección inicial. La obtendremos
00:02:57de la capa de streaming. La capa precisa, la capa correctiva, no se va a activar porque es el mismo texto.
00:03:05Obtendremos más detecciones de texto en streaming y en este caso la capa correctiva en realidad es
00:03:11cancelada porque obtuvimos texto nuevo, así que más contexto y más audio van a superar al anterior y preciso.
00:03:21Y aquí es donde entra la primera corrección. Como la capa Scribe v2 comprende
00:03:27el contexto de la pregunta, es capaz de entender que esto habla de un nombre y que esto es una fecha de nacimiento.
00:03:34Y luego un par de detecciones más. Son solo puntuación. No nos importan.
00:03:37Y al final enviamos este texto al agente.
00:03:44Pasando al modelo de lenguaje. Aquí, dado que estamos usando estos LLM lentos pero
00:03:52inteligentes, realmente queremos reducir el número de viajes de ida y vuelta, y lo que nos hace hacer
00:03:58muchas inferencias son las llamadas a herramientas. Una forma de eliminar eso es haciendo que los agentes en segundo plano hagan
00:04:05las llamadas a herramientas por ti y devuelvan las herramientas al contexto del agente principal para que piense
00:04:13que hizo la llamada a la herramienta, pero en realidad no lo hizo. Recuerda la detección anterior. Lo que sucederá es que cada una de estas detecciones activará
00:04:26una generación temprana por parte del agente, pero no la emitiremos hasta confirmar que
00:04:38el usuario ha terminado de hablar. En este caso el usuario dice claro. El agente sabe que el usuario está a punto de decir algo más.
00:04:45Nuestra llamada a herramientas en segundo plano aquí, que nos ayudará a averiguar el nombre y la fecha de nacimiento a partir de la detección del usuario,
00:04:51no se está disparando, así que no hay mucho ahí. Llega la siguiente detección instantánea. Dice que todavía no es realmente un nombre.
00:05:02Nuestro agente le sigue la corriente y continúa.
00:05:06Ahora llega más contexto. El agente siente que debería haber un nombre.
00:05:11Va a pedir que lo deletreen porque probablemente piensa que hay algún error de transcripción.
00:05:16Todavía no hay nombre ni fecha de nacimiento. Y finalmente esta, recuerda que es nuestra
00:05:22detección instantánea final corregida del transcriptor de Scribe v2.
00:05:27Aquí nuestra ansiosa generación de agentes que se hizo sin llamadas a herramientas va a ser cancelada
00:05:34porque el agente en segundo plano finalmente puede encontrar el nombre y la fecha de nacimiento que busca.
00:05:38Así que se reactivará y ahora el agente tiene el contexto que necesita.
00:05:45Y ves que aquí lo estamos haciendo. La llamada a la herramienta aquí es un poco
00:05:49más inteligente. Vamos a corregir errores de transcripción del nombre,
00:05:53haciendo una coincidencia fonética aquí.
00:05:57Y una vez que hayamos entendido que este es el final de la intervención del usuario,
00:06:02la emitiremos. Así que bastante estándar.
00:06:06Bien, la siguiente capa aquí será la conversión de texto a voz. Con esta, el objetivo
00:06:12es tomar lo que dijo el agente, que lo estará emitiendo de manera
00:06:16continua. Necesitamos producir audio lo más rápido posible. Lo ideal es que
00:06:24antes de que el agente termine de generar todo el texto, puedas reproducir el audio. Así se
00:06:31oculta la latencia de finalizar la generación. Voy a reproducir la salida
00:06:39del agente en streaming ahora. Comienza con U. Y antes de profundizar, hay
00:06:46un nuevo concepto que introducimos aquí llamado caché de prefijo. La caché de prefijo
00:06:52analizará el flujo del agente para ver si ya hemos generado audio para esa secuencia de palabras
00:07:02de una generación previa o quizás de la misma generación en esta llamada.
00:07:10Ve la palabra U. Con esta caché de prefijo no queremos
00:07:17acertar inmediatamente en cada palabra. Esperaremos un poco más de palabras. Así que después
00:07:24de tres palabras, la caché de prefijo tiene su primer acierto. A la derecha tenemos nuestro
00:07:31proveedor estándar de texto a voz, Cartesia, que es un motor de texto a voz con soporte de WebSocket.
00:07:36Enviamos al agente a través de la caché y también a través de WebSocket.
00:07:45Llegan más tokens, más caché, más envíos al WebSocket. Nada más que decir.
00:07:51Y bien, ahora tenemos nuestra primera situación única: encontramos un token que
00:07:59provoca un fallo en la caché. Tiene sentido si guardamos en caché generaciones anteriores. “Usted dijo que su nombre
00:08:05es” es muy común, pero al añadir el nombre, de repente eso causará un fallo en la caché.
00:08:12En este punto vamos a emitir nuestro audio almacenado en caché. “Usted dijo que su nombre es” se
00:08:19emitirá mientras llega el resto del texto en streaming. En este punto el usuario escucha al agente.
00:08:25El usuario no sabe lo que pasa, solo percibe tiempos de respuesta muy rápidos.
00:08:32Ahora fluye el texto restante. Llegados a este punto ya hemos emitido desde la caché.
00:08:38La caché hizo su trabajo. El resto lo enviamos a Cartesia. Aquí está el truco
00:08:46donde Cartesia ha visto toda la transcripción hasta este momento. Para Cartesia es como si no supiera
00:08:56de la existencia de esta caché de prefijo. Generará toda la oración con
00:09:01una entonación natural estándar. Pero lo que hacemos es que, cuando regresa la generación, dado que ya reprodujimos
00:09:08el audio aquí, podemos suprimir el audio de Cartesia en esta parte
00:09:13y reproducir lo restante. Así que el usuario podría notar un pequeño salto. Pondré algo de audio después y
00:09:21verás que probablemente ni lo notes. Tomamos esta parte
00:09:28y la emitimos justo después de que este audio termine de reproducirse, para que parezca fluido al usuario.
00:09:35Y bueno, supongo que a estas alturas hay muchos detalles técnicos. Lo mejor será
00:09:43reproducir una llamada y ver esto en acción. Así que grabé una llamada, escuchemos qué pasa.
00:09:53Aquí vamos a hablar con ustedes. Soy Bo, Ginecobstetricia de Elise.
00:09:59Hola, creo que podría estar embarazada y quiero programar una ecografía para confirmarlo.
00:10:03Es una noticia emocionante. ¿Puede proporcionar su nombre y fecha de nacimiento?
00:10:08Claro, es Elise trial. Fecha de nacimiento, 2303.
00:10:15Gracias. ¿Es usted una paciente nueva con nosotros?
00:10:24Sí. Bienvenida a Bo, Ginecobstetricia. ¿Puedo enviarle un enlace por mensaje para que suba la información de su seguro?
00:10:34Claro. De acuerdo. Enviado. Avíseme cuando lo reciba.
00:10:48He recibido la información de su seguro. La cita más pronta que tengo es el jueves
00:10:532 de julio a las 10 a.m. De hecho, déjeme un segundo. Déjeme revisar mi calendario.
00:11:01Claro. tómese su tiempo. ¿Tiene algo para la próxima semana?
00:11:09Para la próxima semana, puedo ofrecer una ecografía con la Dra. Avery Stone en North Clinic el martes
00:11:147 de julio a las 2 p.m. o 3 p.m. ¿Le sirve alguna de esas opciones?
00:11:20Sí, las 2 p.m. está bien. Genial. Su cita ha sido reservada. Esperamos verla entonces.
00:11:29Gracias. Adiós. Muy bien. Sí, eso es prácticamente todo.
00:11:35Sí, se puede ver todo este streaming y muchas cosas que
00:11:43ocurren en segundo plano. Y esto es lo que realmente hace interesantes a los agentes de voz.
00:11:48Hay mucho esfuerzo que se puede hacer en el sistema para lograr realmente una
00:11:55conversación natural, que es lo que buscamos.
00:11:59Bien. Sí. En la última parte, quiero hablar un poco
00:12:04sobre Elise. Nuestras oficinas centrales están en Nueva York, y estamos
00:12:09intentando expandir nuestra presencia aquí en el Área de la Bahía. Creo que es un estilo diferente
00:12:15de empresa que la gente imagina al pensar en startups de IA en San Francisco,
00:12:23donde realmente nos enfocamos en ayudar a las personas y ayudarles donde más lo necesitan,
00:12:31en las áreas más críticas de la vida. Trabajamos en vivienda, salud, y nos va muy
00:12:37bien. Hay un enlace aquí para unirse a nuestro equipo, y
00:12:45estaremos publicando mucho en Twitter, así que pueden seguirnos en @Elyse.ai también. Eso es todo.
00:12:57Por lo tanto, estaremos publicando un poco más en Twitter, y estaremos publicando un poco más en Twitter.

핵심 요약

La arquitectura de agentes de voz en tiempo real de Elise AI combina transcripción especulativa, llamadas a herramientas en segundo plano y caché de prefijo en texto a voz para optimizar la velocidad de respuesta sin sacrificar inteligencia.

하이라이트

  • Los agentes de voz en cascada dividen su arquitectura en tres capas: percepción con un transcriptor especulativo en streaming, planificación mediante modelos de lenguaje y control con conversión de texto a voz.

  • El transcriptor especulativo en streaming superpone un transcriptor rápido como Flux debajo de Scribe v2 para lograr detecciones más precisas basadas en el contexto.

  • Las llamadas a herramientas en segundo plano eliminan los viajes de ida y vuelta innecesarios del modelo de lenguaje principal para reducir la latencia.

  • La caché de prefijo en la conversión de texto a voz reutiliza audio generado previamente para ocultar la latencia de respuesta antes de recurrir a proveedores externos como Cartesia.

타임라인

Arquitectura y capa de percepción en agentes de voz

  • Los agentes de voz se estructuran en tres capas equivalentes a las de los coches autónomos: percepción, planificación y control.
  • El transcriptor especulativo en streaming superpone un motor rápido como Flux con el transcriptor preciso Scribe v2.
  • El sistema cancela capas correctivas anteriores cuando recibe texto nuevo con mayor contexto y audio.

El diseño de los agentes de voz adopta paralelismos con la conducción autónoma para dividir el procesamiento de señales del mundo real. La capa de percepción convierte las entradas de audio en elementos de datos legibles para el modelo de lenguaje mediante la superposición de un transcriptor rápido en streaming y un transcriptor por lotes más preciso.

Planificación y llamadas a herramientas en segundo plano

  • Los agentes en segundo plano ejecutan llamadas a herramientas para evitar inferencias excesivas en el modelo de lenguaje principal.
  • La generación temprana de respuestas se produce con cada detección pero no se emite hasta confirmar el fin de la intervención del usuario.
  • La corrección fonética de nombres corrige errores de transcripción antes de emitir la salida definitiva.

Para reducir la latencia provocada por los modelos de lenguaje lentos, los agentes secundarios manejan las llamadas a herramientas y devuelven los resultados al contexto principal. El sistema genera respuestas de manera ansiosa durante el discurso del usuario y las cancela o ajusta cuando la capa de transcripción final aporta datos correctos.

Control y conversión de texto a voz con caché de prefijo

  • La caché de prefijo analiza el flujo del agente para reutilizar audio generado en llamadas previas.
  • El sistema emite audio almacenado en caché mientras procesa el resto del texto mediante proveedores externos como Cartesia.
  • El audio generado por Cartesia se suprime parcialmente para fusionarlo con el prefijo y mantener una entonación natural sin saltos perceptibles.

La capa final de control convierte el texto generado en audio antes de que el agente termine toda su producción para ocultar la latencia. La utilización de caché de prefijo permite reproducir frases comunes de manera instantánea, combinándolas con la salida de motores de WebSocket mediante la supresión y sincronización de fragmentos de audio.

커뮤니티 글

아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!

이 영상에 대해 글쓰기