Noticias

AssemblyAI detalla la construcción bruta del agente de voz WebSocket sin SDK

AssemblyAI publicó un tutorial para construir un agente de voz directamente en WebSockets con streaming STT, LLM Gateway y TTS.

Ilustración editorial temática
Ilustración editorial; no es una fotografía del suceso.

Artículo traducido. Consultar el artículo original.

AssemblyAI publicó un tutorial el 29 de octubre de 2026 que explica cómo construir un agente de voz directamente en WebSockets en bruto, sin usar su SDK. La publicación vincula la conversión de voz en streaming, una llamada HTTP LLM y la reproducción de texto a voz, y presenta el enfoque como una forma de mantener el control total sobre cada trama de protocolo y transición de estado.

Evidencia y contexto

La guía utiliza tres conexiones y uno clave API: el WebSocket de voz a texto Universal-3.6 Pro Realtime, la pasarela LLM sobre HTTPS simple y el WebSocket de texto a voz AssemblyAI. Según el tutorial, el socket de voz a texto recibe audio PCM binario de 16 kHz y devuelve tramas como Inicio, Iniciado en Habla, Giro y Terminación, mientras que el socket de texto a voz acepta Generar, Vaciar, Cancelar, Mantener Vivo y Terminar, y devuelve Audio, FlushDone, Cancelled, Termination y Error.

AssemblyAI dice que el ejemplo está diseñado para desarrolladores que quieren entender o poseer cada byte del flujo, incluyendo el comportamiento de barge-in y la llamada a herramientas. La publicación dice que la muestra cabe en unas 300 líneas de Python y utiliza solo las bibliotecas websocket, httpx y sounddevice. También dice que la misma clave API autentica todos los servicios tres, con LLM Gateway usando un formato de chat-completions compatible con OpenAI.

El agente de ejemplo del tutorial está configurado para responder preguntas meteorológicas mediante una llamada a get_weather herramienta. En el código de ejemplo, la solicitud de modelo se envía con herramientas en la carga útil de mensajes, el resultado de la función se añade como un mensaje de herramienta y se llama al LLM de nuevo hasta que devuelva texto plano. El ejemplo de AssemblyAI envía ese texto al socket TTS, donde cada respuesta debe ser seguida por Flush para producir audio.

El artículo también documenta el manejo de entrada por interrupción: cuando el usuario habla por encima del agente, el programa borra la reproducción local y envía Cancelar en el socket TTS, eliminando cualquier trama de audio final hasta que llegue Cancelled. Añade un filtro de backchannel para que reconocimientos cortos como "mhm", "okay" o "yes" no interrumpan al agente a mitad de frase. El tutorial dice que la sesión TTS puede permanecer abierta durante toda la conversación, pero debe mantenerse viva con frames periódicos durante los periodos de inactividad.

La publicación de AssemblyAI incluye detalles operativos y orientación para el manejo de errores, incluyendo la nota de que el socket TTS envía un frame de error antes de que se cierre el fallo y que el socket STT se cierra con códigos de cierre y razones del websocket. La guía también dice que la voz TTS en la muestra usa el ID de voz de Audrey, que el formato de salida es 24 kHz pcm_s16le, y que la entrada del micrófono debe coincidir con la tasa de muestreo de 16 kHz configurada en el lado de voz a texto.

Más artículos en español · Datos e investigación