Transcripciones y estrategias de confirmación

Esta guía te muestra cómo gestionar transcripciones y estrategias de confirmación con la API de Voz a Texto en Tiempo Real de ElevenLabs.

Guía práctica · Se da por hecho que has completado la guía de lado del cliente o de streaming del lado del servidor.

Resumen

Al transcribir audio, recibirás transcripciones parciales y confirmadas.

  • Transcripciones parciales: los resultados provisionales de la transcripción.
  • Transcripciones confirmadas: los resultados finales del segmento de transcripción que se envían al recibir un mensaje de “confirmación”. Una sesión puede tener varias transcripciones confirmadas.

La transcripción confirmada puede incluir opcionalmente marcas de tiempo por palabra. Solo se recibe cuando la opción “incluir marcas de tiempo” está configurada 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
))

Estrategias de confirmación

Al enviar fragmentos de audio mediante WebSocket, los segmentos de transcripción se pueden confirmar de dos formas: confirmación manual o detección de actividad de voz (VAD).

Confirmación manual

Con la estrategia de confirmación manual, tú controlas cuándo confirmar los segmentos de transcripción. Esta es la estrategia que se usa de forma predeterminada. Al confirmar un segmento, se borra la transcripción acumulada procesada y se inicia un nuevo segmento sin perder el contexto. Confirmar cada 20-30 segundos es una buena práctica para mejorar la latencia. Aunque no confirmes manualmente, el modelo confirma automáticamente después de unos 36 segundos de audio acumulado.

Para obtener mejores resultados, confirma durante los periodos de silencio o en otro punto lógico, como al cambiar de turno.

El procesamiento de la transcripción comienza después de enviar los primeros 2 segundos de audio.
await connection.send({
"audio_base_64": audio_base_64,
"sample_rate": 16000,
})
# When ready to finalize the segment
await connection.commit()

Confirmar manualmente varias veces en una secuencia corta puede reducir el rendimiento del modelo.

Envío de contexto de texto anterior

Al enviar audio para transcribir, puedes enviar contexto de texto anterior junto con el primer fragmento de audio para ayudar al modelo a comprender el contexto del habla. Esto resulta útil en algunos casos:

  • Texto del agente para casos de uso de IA conversacional: permite al modelo comprender más fácilmente el contexto de la conversación y generar mejores transcripciones.
  • Reconexión tras un error de red: permite al modelo continuar transcribiendo mediante el texto anterior como guía.
  • Información contextual general: una breve descripción de qué tratará la transcripción ayuda al modelo a entender el contexto.

Solo puedes enviar el contexto previous_text con el primer fragmento de audio mediante connection.send(). Enviarlo en fragmentos posteriores provocará un error. El texto anterior funciona mejor cuando tiene menos de 50 caracteres.

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

Detección de actividad de voz (VAD)

Con la estrategia VAD, el motor de transcripción detecta automáticamente los segmentos de voz y silencio. Cuando se alcanza un umbral de silencio, el motor de transcripción confirma el segmento de transcripción automáticamente.

Al transcribir audio desde el micrófono en la integración del lado del cliente, se recomienda usar la estrategia 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 audio compatibles

FormatoFrecuencia de muestreoDescripción
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 kHzCodificación μ-law de 8 bits

Buenas prácticas

Calidad del audio

  • Para obtener mejores resultados, usa una frecuencia de muestreo de 16 kHz para lograr un equilibrio óptimo entre calidad y ancho de banda.
  • Asegúrate de que la entrada de audio sea limpia y tenga el mínimo ruido de fondo.
  • Usa una ganancia de micrófono adecuada para evitar la saturación.
  • Por el momento, solo se admite audio mono.

Tamaño de los fragmentos

  • Envía fragmentos de audio de entre 0,1 y 1 segundo para una transmisión fluida.
  • Los fragmentos más pequeños reducen la latencia, pero añaden más sobrecarga.
  • Los fragmentos más grandes son más eficientes, pero pueden introducir latencia.

Próximos pasos