
Cascaded vs Fused Models: Comparing the architectures behind conversational agents
A breakdown of the five main voice agent architectures and the tradeoffs between reasoning, control, and naturalness.
Cómo Scribe v2 Realtime permite transcripción de voz a texto en tiempo real y baja latencia para traducción en directo y aplicaciones de voz
Scribe v2 Realtime es un modelo de Voz a Texto extremadamente rápido, ideal para transcripciones en directo. Su combinación de velocidad y calidad permite casos de uso que antes no eran posibles.
Por ejemplo, hemos creado este traductor de idiomas en tiempo real usando Scribe v2 Realtime y la API de Chrome Translator.

Si quieres el tutorial paso a paso de esta demo, lo tienes aquí. En esta guía nos centraremos en entender cómo funciona Scribe v2 Realtime y sus conceptos clave.
En ElevenLabs ofrecemos dos modelos para transcribir audio: Scribe v2 y Scribe v2 Realtime.
Scribe v2 es una buena opción para transcripciones que pueden hacerse de forma asíncrona, mientras que Scribe v2 Realtime se usa cuando necesitas la transcripción en directo.
Para una aplicación de traducción de idiomas en tiempo real, Scribe v2 Realtime es la mejor opción.
Para usar este modelo, necesitas la API de Voz a Texto. Hay dos pasos que debes seguir para empezar:
Según desde dónde llames a la API, tendrás que inicializarla de forma diferente. Si lo haces desde el servidor, puedes inicializar directamente con la clave de API y luego usar esa instancia para conectar con Scribe v2 Realtime.
Pero, exponer una clave de API al cliente es un gran riesgo de seguridad. Así que, si haces streaming desde el cliente, tendrás que inicializar con un token de un solo uso.
Este token debe generarse en el servidor para proteger la clave de API.
Como estamos creando una aplicación en React, usaremos el método del token. Este token se pasa durante la conexión, así que crear una instancia de Scribe es muy sencillo.
| 1 | import { useScribe } from "@elevenlabs/react"; |
| 2 | |
| 3 | function MyComponent() { |
| 4 | const scribe = useScribe({ |
| 5 | modelId: "scribe_v2_realtime", |
| 6 | }); |
| 7 | |
| 8 | //... |
| 9 | } |
Una vez inicializado correctamente, puedes conectar con Scribe v2 Realtime. Para el proyecto de traducción en React, usamos streaming desde el cliente, por lo que necesitamos un token de un solo uso generado en el backend. Este token debe generarse y pasarse cada vez que conectamos con la API.
| 1 | const handleStart = async () => { |
| 2 | const token = await fetchTokenFromServer(); |
| 3 | |
| 4 | await scribe.connect({ |
| 5 | token, |
| 6 | microphone: { |
| 7 | echoCancellation: true, |
| 8 | noiseSuppression: true, |
| 9 | }, |
| 10 | }); |
| 11 | }; |
Al trabajar con Scribe v2 Realtime, hay dos tipos de transcripciones: parciales y confirmadas.
Las transcripciones parciales son las "transcripciones en directo". Esta transcripción llega por websocket y la recibes mientras hablas. Por ejemplo, si dices "El gato está ...", verás esas palabras aparecer en tiempo real.
El otro tipo es la transcripción confirmada. Las transcripciones funcionan por segmentos. Cuándo y cómo decides confirmar tus transcripciones define cómo se segmenta el texto. Para esto, necesitas definir una estrategia de commit.
Hay dos opciones para la estrategia de commit. La primera es manual, que te da control total para decidir cuándo se confirman las transcripciones. Lo más recomendable es hacerlo durante silencios o en puntos lógicos, como los turnos de palabra.
La otra opción es dejar que Scribe v2 Realtime detecte automáticamente los segmentos de calidad usando Voice Activity Detection (VAD). Este método detecta automáticamente los tramos de voz y silencio. Cuando se alcanza un umbral de silencio, el motor de transcripción confirma el segmento de forma automática.
Mientras hablas, Scribe v2 Realtime transcribe cada palabra. Si dices "I scream..." puede interpretarse como "Ice cream...". Pero cuando tienes el contexto completo del segmento "I scream every time I see a spider in the bathroom", la transcripción es mucho más precisa.
Así que puedes mostrar las transcripciones parciales en tiempo real, y las confirmadas serán una transcripción más precisa del historial de la conversación.
Una vez conectado a Scribe v2 Realtime, la transcripción ya está en marcha. Puedes acceder a las transcripciones usando las propiedades partialTranscript y committedTranscripts.
| 1 | <div> |
| 2 | <button onClick={handleStart} disabled={scribe.isConnected}> |
| 3 | Start Recording |
| 4 | </button> |
| 5 | <button onClick={scribe.disconnect} disabled={!scribe.isConnected}> |
| 6 | Stop |
| 7 | </button> |
| 8 | |
| 9 | {scribe.partialTranscript && <p>Live: {scribe.partialTranscript}</p>} |
| 10 | |
| 11 | <div> |
| 12 | {scribe.committedTranscripts.map((t) => ( |
| 13 | <p key={t.id}>{t.text}</p> |
| 14 | ))} |
| 15 | </div> |
| 16 | </div> |
partialTranscript es la transcripción en tiempo real del segmento actual que se está transcribiendo. committedTranscript es el historial de la conversación, y es una lista de segmentos que se han confirmado mientras estabas conectado a Scribe v2 Realtime.
Eso es todo lo que necesitas para obtener transcripciones en tiempo real de tus conversaciones. Ahora puedes mejorar la app con una buena interfaz o añadir funciones como traducción de idiomas en directo.
Para crear el traductor de idiomas en tiempo real de la demo, solo tienes que pasar las transcripciones a la API de Chrome AI Translator y mostrar el resultado en tiempo real.
¡Gracias por leernos! Regístrate en ElevenLabs y empieza a crear tus aplicaciones!

A breakdown of the five main voice agent architectures and the tradeoffs between reasoning, control, and naturalness.
.webp&w=3840&q=95)
Not every student in Germany grows up with access to academic role models. InteGREATer e.V. was founded to change that.