Transkrypcje i strategie zatwierdzania

Ten przewodnik pokazuje, jak obsługiwać transkrypcje i strategie zatwierdzania za pomocą API ElevenLabs Realtime Speech to Text.

Przewodnik krok po kroku · Zakłada, że masz już za sobą przewodnik o streamingu po stronie klienta lub stronie serwera.

Omówienie

Podczas transkrypcji audio otrzymasz częściowe i zatwierdzone transkrypcje.

  • Częściowe transkrypcje - tymczasowe wyniki transkrypcji
  • Zatwierdzone transkrypcje - końcowe wyniki segmentu transkrypcji wysyłane po otrzymaniu komunikatu „commit”. Sesja może mieć wiele zatwierdzonych transkrypcji.

Zatwierdzona transkrypcja może opcjonalnie zawierać znaczniki czasu na poziomie słów. Otrzymasz je tylko, gdy opcja „include timestamps” ma wartość 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
))

Strategie zatwierdzania

Gdy wysyłasz fragmenty audio przez WebSocket, segmenty transkrypcji możesz zatwierdzać na dwa sposoby: ręcznie lub przez wykrywanie aktywności głosowej (VAD).

Ręczne zatwierdzanie

W strategii ręcznego zatwierdzania to ty decydujesz, kiedy zatwierdzić segmenty transkrypcji. Ta strategia jest używana domyślnie. Zatwierdzenie segmentu wyczyści przetworzoną, zgromadzoną transkrypcję i rozpocznie nowy segment bez utraty kontekstu. Aby zmniejszyć opóźnienie, warto zatwierdzać co 20–30 sekund. Nawet jeśli nie zatwierdzasz ręcznie, model automatycznie zatwierdzi transkrypcję po około 36 sekundach zgromadzonego audio.

Najlepiej zatwierdzaj podczas ciszy lub w innym logicznym momencie, np. na końcu tury rozmowy.

Przetwarzanie transkrypcji zaczyna się po wysłaniu pierwszych 2 sekund audio.
await connection.send({
"audio_base_64": audio_base_64,
"sample_rate": 16000,
})
# When ready to finalize the segment
await connection.commit()

Kilkukrotne ręczne zatwierdzanie w krótkim czasie może pogorszyć działanie modelu.

Wysyłanie kontekstu poprzedniego tekstu

Podczas wysyłania audio do transkrypcji możesz wysłać kontekst poprzedniego tekstu razem z pierwszym fragmentem audio, aby pomóc modelowi zrozumieć kontekst mowy. Jest to przydatne w kilku sytuacjach:

  • Tekst agenta w zastosowaniach konwersacyjnej AI - pozwala modelowi łatwiej zrozumieć kontekst rozmowy i tworzyć lepsze transkrypcje.
  • Ponowne połączenie po błędzie sieciowym - pozwala modelowi kontynuować transkrypcję, używając poprzedniego tekstu jako wskazówki.
  • Ogólne informacje kontekstowe - krótki opis tego, czego będzie dotyczyć transkrypcja, pomaga modelowi zrozumieć kontekst.

Kontekst previous_text możesz wysłać tylko z pierwszym fragmentem audio przez connection.send(). Wysłanie go w kolejnych fragmentach spowoduje błąd. Poprzedni tekst działa najlepiej, gdy ma mniej niż 50 znaków.

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

Wykrywanie aktywności głosowej (VAD)

W strategii VAD silnik transkrypcji automatycznie wykrywa segmenty mowy i ciszy. Gdy zostanie osiągnięty próg ciszy, silnik transkrypcji automatycznie zatwierdzi segment transkrypcji.

Podczas transkrypcji audio z mikrofonu w integracji po stronie klienta zalecamy użycie strategii 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,
});

Obsługiwane formaty audio

FormatCzęstotliwość próbkowaniaOpis
pcm_80008 kHz16-bit PCM, little-endian
pcm_1600016 kHz16-bit PCM, little-endian (zalecane)
pcm_2205022,05 kHz16-bit PCM, little-endian
pcm_2400024 kHz16-bit PCM, little-endian
pcm_4410044,1 kHz16-bit PCM, little-endian
pcm_4800048 kHz16-bit PCM, little-endian
ulaw_80008 kHzKodowanie 8-bit μ-law

Dobre praktyki

Jakość audio

  • Aby najlepiej zrównoważyć jakość i przepustowość, użyj częstotliwości próbkowania 16 kHz.
  • Zadbaj o czysty sygnał audio z minimalnym hałasem w tle.
  • Ustaw odpowiednie wzmocnienie mikrofonu, aby uniknąć przesterowania.
  • Obecnie obsługiwane jest tylko audio mono.

Rozmiar fragmentu

  • Aby streamowanie było płynne, wysyłaj fragmenty audio o długości 0,1–1 sekundy.
  • Mniejsze fragmenty zmniejszają opóźnienie, ale zwiększają narzut.
  • Większe fragmenty są wydajniejsze, ale mogą wprowadzać opóźnienie.

Kolejne kroki