
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.
Como o Scribe v2 Realtime permite transcrição de baixa latência para tradução ao vivo e aplicativos de voz
O Scribe v2 Realtime é um modelo de Speech to Text extremamente rápido, ideal para transcrições ao vivo. A combinação de velocidade e qualidade permite usos que antes não eram possíveis.
Por exemplo, conseguimos criar este tradutor de idiomas em tempo real usando o Scribe v2 Realtime e a API do Chrome Translator.

Se você quiser o tutorial passo a passo deste demo, você encontra aqui. Este guia vai focar em explicar de forma geral o Scribe v2 Realtime e como ele funciona.
A ElevenLabs oferece dois modelos para transcrever áudio: Scribe v2 e Scribe v2 Realtime.
O Scribe v2 é uma ótima opção para transcrições que podem ser feitas de forma assíncrona, enquanto o Scribe v2 Realtime é usado quando você precisa da transcrição ao vivo.
Para um aplicativo de tradução de idiomas ao vivo, o Scribe v2 Realtime é a escolha ideal.
Para usar este modelo, você precisa utilizar a API de Speech to Text. São dois passos para começar:
Dependendo de onde você está chamando essa API, a inicialização será diferente. Se for do lado do servidor, basta usar a chave da API para iniciar e depois conectar ao Scribe v2 Realtime.
Mas, expor uma chave de API no cliente é um grande risco de segurança. Por isso, se você for transmitir do lado do cliente, precisa inicializar com um token de uso único.
Esse token precisa ser gerado no servidor para proteger a chave da API.
Como estamos criando um aplicativo em React, vamos usar o token. Esse token é passado na fase de conexão, então criar uma instância do Scribe fica bem simples.
| 1 | import { useScribe } from "@elevenlabs/react"; |
| 2 | |
| 3 | function MyComponent() { |
| 4 | const scribe = useScribe({ |
| 5 | modelId: "scribe_v2_realtime", |
| 6 | }); |
| 7 | |
| 8 | //... |
| 9 | } |
Depois de inicializar corretamente, você pode se conectar ao Scribe v2 Realtime. No projeto de tradução em React, usamos transmissão do lado do cliente, então precisamos de um token de uso único gerado pelo backend. Esse token precisa ser gerado e passado toda vez que conectamos à 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 | }; |
Ao usar o Scribe v2 Realtime, existem dois tipos de transcrição: parcial e confirmada.
As transcrições parciais são as "transcrições ao vivo". Elas acontecem via websocket e são retornadas enquanto você fala. Então, se você disser "O gato está ...", essas palavras vão aparecer em tempo real.
O outro tipo é a transcrição confirmada. As transcrições funcionam em segmentos. Quando e como você decide confirmar as transcrições define como o texto será segmentado. Para isso, é preciso definir uma estratégia de commit.
Existem duas opções de estratégia de commit. A primeira é manual, onde você tem controle total para decidir quando as transcrições serão confirmadas. O ideal é fazer isso em momentos de silêncio ou em pontos lógicos, como a troca de falante.
A outra opção é deixar o Scribe v2 Realtime identificar automaticamente os melhores segmentos usando Voice Activity Detection (VAD). Assim, o sistema detecta automaticamente fala e silêncio. Quando atinge um limite de silêncio, o motor de transcrição confirma o segmento automaticamente.
Enquanto você fala, o Scribe v2 Realtime transcreve cada palavra. Se você disser "Eu grito..." pode ser reconhecido como "Eu grito..." ou "Sorvete...". Mas, com o contexto completo do segmento "Eu grito toda vez que vejo uma aranha no banheiro", a transcrição fica mais precisa.
Assim, as transcrições parciais podem ser exibidas em tempo real, e as transcrições confirmadas trazem uma versão mais precisa do histórico da conversa.
Depois de se conectar ao Scribe v2 Realtime, a transcrição já está acontecendo. Você pode acessar as transcrições usando as propriedades partialTranscript e 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> |
O partialTranscript é a transcrição em tempo real do segmento atual. O committedTranscript é o histórico da conversa, uma lista dos segmentos que foram confirmados enquanto você estava conectado ao Scribe v2 Realtime.
É só isso que você precisa para obter transcrições em tempo real das suas conversas. Agora, você pode personalizar o app com uma interface bonita ou até adicionar recursos como tradução de idiomas ao vivo.
Para criar o tradutor de idiomas em tempo real do demo, basta passar as transcrições para a API do Chrome AI Translator e exibir o resultado em tempo real.
Obrigado por ler! Cadastre-se na ElevenLabs e comece a criar seus aplicativos!

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.