Transcrições e estratégias de confirmação

Este guia mostra como lidar com transcrições e estratégias de confirmação usando a API de Transcrição de Voz em Tempo Real da ElevenLabs.

Guia prático · Pressupõe que você concluiu o guia de streaming do lado do cliente ou de streaming do lado do servidor.

Visão geral

Ao transcrever áudio, você receberá transcrições parciais e confirmadas.

  • Transcrições parciais - os resultados provisórios da transcrição
  • Transcrições confirmadas - os resultados finais do segmento de transcrição enviados quando uma mensagem de “commit” é recebida. Uma sessão pode ter várias transcrições confirmadas.

A transcrição confirmada pode conter, opcionalmente, timestamps por palavra. Isso é recebido apenas quando a opção “include timestamps” está definida como true.

# Initialize the connection
connection = await elevenlabs.speech_to_text.realtime.connect(RealtimeUrlOptions(
model_id="scribe_v2_realtime",
include_timestamps=True, # Include this to receive the RealtimeEvents.COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS event with word-level timestamps
))

Estratégias de confirmação

Ao enviar blocos de áudio pelo WebSocket, os segmentos de transcrição podem ser confirmados de duas formas: confirmação manual ou detecção de atividade de voz (VAD).

Confirmação manual

Com a estratégia de confirmação manual, você controla quando confirmar segmentos de transcrição. Essa é a estratégia usada por padrão. Confirmar um segmento limpará a transcrição acumulada processada e iniciará um novo segmento sem perder o contexto. Confirmar a cada 20 a 30 segundos é uma boa prática para melhorar a latência. Mesmo que você não confirme manualmente, o modelo confirma automaticamente após aproximadamente 36 segundos de áudio acumulado.

Para melhores resultados, confirme durante períodos de silêncio ou em outro ponto lógico, como uma troca de turno.

O processamento da transcrição começa após o envio dos primeiros 2 segundos de áudio.
await connection.send({
"audio_base_64": audio_base_64,
"sample_rate": 16000,
})
# When ready to finalize the segment
await connection.commit()

Fazer confirmações manuais várias vezes em uma sequência curta pode reduzir o desempenho do modelo.

Envio de contexto de texto anterior

Ao enviar áudio para transcrição, você pode enviar o contexto de texto anterior junto com o primeiro bloco de áudio para ajudar o modelo a entender o contexto da fala. Isso é útil em alguns cenários:

  • Texto do agente em casos de uso de IA conversacional - Permite que o modelo entenda mais facilmente o contexto da conversa e produza transcrições melhores.
  • Reconexão após um erro de rede - Permite que o modelo continue transcrevendo, usando o texto anterior como orientação.
  • Informações contextuais gerais - Uma breve descrição do assunto da transcrição ajuda o modelo a entender o contexto.

O envio do contexto previous_text só é possível ao enviar o primeiro bloco de áudio por meio de connection.send(). Enviá-lo em blocos posteriores resultará em um erro. O texto anterior funciona melhor quando tem menos de 50 caracteres.

await connection.send({
"audio_base_64": audio_base_64,
"previous_text": "The previous text context",
})

Detecção de atividade de voz (VAD)

Com a estratégia VAD, o mecanismo de transcrição detecta automaticamente segmentos de fala e silêncio. Quando um limite de silêncio é atingido, o mecanismo de transcrição confirma o segmento automaticamente.

Ao transcrever áudio do microfone na integração do lado do cliente, recomendamos usar a estratégia VAD.

import { Scribe, AudioFormat, CommitStrategy } from "@elevenlabs/client";
const connection = Scribe.connect({
token: "sutkn_1234567890",
modelId: "scribe_v2_realtime",
audioFormat: AudioFormat.PCM_16000,
commitStrategy: CommitStrategy.VAD,
vadSilenceThresholdSecs: 1.5,
vadThreshold: 0.4,
minSpeechDurationMs: 100,
minSilenceDurationMs: 100,
});

Formatos de áudio compatíveis

FormatoTaxa de amostragemDescrição
pcm_80008 kHzPCM de 16 bits, little-endian
pcm_1600016 kHzPCM de 16 bits, little-endian (recomendado)
pcm_2205022.05 kHzPCM de 16 bits, little-endian
pcm_2400024 kHzPCM de 16 bits, little-endian
pcm_4410044.1 kHzPCM de 16 bits, little-endian
pcm_4800048 kHzPCM de 16 bits, little-endian
ulaw_80008 kHzCodificação μ-law de 8 bits

Boas práticas

Qualidade do áudio

  • Para melhores resultados, use uma taxa de amostragem de 16 kHz para um equilíbrio ideal entre qualidade e largura de banda.
  • Garanta uma entrada de áudio limpa, com o mínimo de ruído de fundo.
  • Use um ganho de microfone adequado para evitar clipping.
  • No momento, apenas áudio mono é compatível.

Tamanho do bloco

  • Envie blocos de áudio de 0,1 a 1 segundo de duração para um streaming fluido.
  • Blocos menores resultam em menor latência, mas mais sobrecarga.
  • Blocos maiores são mais eficientes, mas podem introduzir latência.

Próximas etapas