RealtimeVAD - Detección de fin de voz 110 ms más rápida

Show HN: RealtimeVAD – trading false positives for 110ms earlier end-of-speech

RealtimeVAD es un detector de actividad de voz que sabe cuándo has dejado de hablar unos 100 ms antes que Silero, el estándar de la industria. Mantiene Silero para decidir qué es habla y añade una comprobación ultrarrápida cada 10 ms comparando el nivel de audio con el ruido de la sala y el nivel del propio hablante. Emite eventos start, pause y end, y su evento pause permite adelantar el reconocimiento, la llamada al LLM y la preparación de la respuesta, cancelando si el habla continúa. Corre en un solo hilo de CPU, solo necesita numpy y onnxruntime, y es compatible con LiveKit Agents y con el VADIterator de Silero.

Sabe que el hablante se ha detenido unos 100 ms antes que Silero.
  1. nowittyusername

    También puedes evitar el problema por completo. Hice una "regeneración especulativa" (al menos así es como lo llamo) un pipeline que he estado usando durante muchos meses y funciona genial. Básicamente, siempre que tengas acceso al servidor de inferencia, estás listo. La idea es la siguiente: cada n milisegundos de silencio (normalmente 300 ms para mí), envías la transcripción del ASR para que el LLM la procese de inmediato. Dejas que el modelo empiece a responder, pero si el usuario vuelve a hablar antes de que se alcance el token de fin de turno, cancelas la generación y esperas de nuevo los 300 ms. Repites el proceso. También tienes que configurar una ventana de seguridad para que la respuesta final del LLM se finalice independientemente de sus velocidades de inferencia. Funciona de maravilla. Básicamente, el usuario obtiene como máximo 300 ms de latencia en esa ventana de "silencio". Así que lo único que te queda por preocupar en cuanto a latencia son las velocidades de inferencia del LLM y las latencias del ASR y TTS. En mi pipeline, en el momento en que el usuario deja de hablar, el modelo ya está respondiendo en aproximadamente 900 ms - 1,2 s. Es mi modelo gemma 26b moe, con cuantización de 4 bits y pensamiento activado... con mtp alcanzando unos 300 tokens por segundo... tanto el ASR como el TTS están por debajo de los 350 ms en total... en fin, las velocidades podrían mejorar si se desactiva el pensamiento, pero me gusta que mi agente de voz sea inteligente, ya que tiene llamada a herramientas y la capacidad de sentido común se reduce cuando el pensamiento está desactivado... ¡buenos tiempos!

  2. com2kid

    Esta es la tercera o cuarta vez que publico esto: ejecuta un LLM pequeño y malucho, uno que sea súper rápido. O mejor aún, prueba un modelo de decisión hoy en día. Aliméntalo con el turno de conversación anterior y todo el STT (salida del ASR) que tengas hasta ahora y simplemente pídele una probabilidad de que el usuario haya terminado de hablar. Usa esa probabilidad para acortar tu tiempo de VAD. No es tan bueno como un modelo real de voz a voz, pero esto recortará unos cientos de ms en comparación con el VAD puro. Ah, como bonus, también te permite esperar más tiempo cuando el usuario aún no ha terminado de hablar.

Más de este día

2026-11-13