
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.
Jak Scribe v2 Realtime umożliwia szybkie transkrypcje na żywo do tłumaczeń i aplikacji głosowych
Scribe v2 Realtime to bardzo szybki model Speech to Text, który sprawdza się przy transkrypcjach na żywo. Połączenie szybkości i jakości pozwala na zastosowania, które wcześniej były niemożliwe.
Na przykład, dzięki Scribe v2 Realtime i Chrome Translator API zbudowaliśmy tłumacza językowego działającego w czasie rzeczywistym.

Jeśli chcesz zobaczyć instrukcję krok po kroku do tego demo, znajdziesz ją tutaj. Ten przewodnik skupia się na ogólnym działaniu Scribe v2 Realtime i tym, jak to działa.
W ElevenLabs masz dwa modele do transkrypcji audio: Scribe v2 i Scribe v2 Realtime.
Scribe v2 sprawdza się, gdy transkrypcja nie musi być na żywo, a Scribe v2 Realtime jest do transkrypcji w czasie rzeczywistym.
Do tłumaczenia języka na żywo najlepszy będzie Scribe v2 Realtime.
Aby korzystać z tego modelu, użyj Speech to Text API. Na start musisz wykonać dwa kroki:
W zależności od tego, gdzie wywołujesz API, inicjalizacja wygląda inaczej. Jeśli robisz to po stronie serwera, możesz użyć klucza API i połączyć się z Scribe v2 Realtime.
Ale udostępnianie klucza API po stronie klienta to duże ryzyko. Dlatego jeśli streamujesz po stronie klienta, musisz użyć tokena jednorazowego.
Ten token trzeba wygenerować po stronie serwera, żeby chronić klucz API.
Ponieważ budujemy aplikację w React, użyjemy tokena. Token przekazujesz podczas łączenia, więc stworzenie instancji Scribe jest bardzo proste.
| 1 | import { useScribe } from "@elevenlabs/react"; |
| 2 | |
| 3 | function MyComponent() { |
| 4 | const scribe = useScribe({ |
| 5 | modelId: "scribe_v2_realtime", |
| 6 | }); |
| 7 | |
| 8 | //... |
| 9 | } |
Po poprawnej inicjalizacji możesz połączyć się z Scribe v2 Realtime. W projekcie tłumacza w React użyliśmy streamingu po stronie klienta, więc potrzebny był token z backendu. Token trzeba generować i przekazywać za każdym razem, gdy łączysz się z 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 | }; |
W Scribe v2 Realtime są dwa typy transkrypcji: częściowe i zatwierdzone.
Częściowe transkrypcje to „transkrypcje na żywo”. Powstają przez websocket i pojawiają się na bieżąco, gdy mówisz. Jeśli powiesz „Kot jest...”, te słowa zobaczysz od razu.
Drugi typ to transkrypcje zatwierdzone. Transkrypcje dzielą się na segmenty. To, kiedy i jak je zatwierdzasz, decyduje o podziale tekstu. Do tego potrzebujesz strategii commitowania.
Są dwie opcje strategii commitowania. Pierwsza to ręczna – masz pełną kontrolę, kiedy zatwierdzasz transkrypcje. Najlepiej robić to podczas pauz lub w logicznych momentach, np. po zakończeniu wypowiedzi.
Druga opcja to automatyczne zatwierdzanie przez Scribe v2 Realtime z użyciem Voice Activity Detection (VAD). Ten sposób sam wykrywa mowę i ciszę. Gdy wykryje ciszę, transkrypcja zostaje zatwierdzona automatycznie.
Podczas mówienia Scribe v2 Realtime transkrybuje każde słowo. Jeśli powiesz „I scream...”, może to rozpoznać jako „Ice cream...”. Ale mając cały segment „I scream every time I see a spider in the bathroom”, wynik jest dokładniejszy.
Częściowe transkrypcje możesz pokazywać na żywo, a zatwierdzone będą dokładniejszym zapisem rozmowy.
Po połączeniu z Scribe v2 Realtime transkrypcja działa. Dostęp do transkrypcji masz przez właściwości partialTranscript i 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 to transkrypcja na żywo aktualnego segmentu. committedTranscript to historia rozmowy, czyli lista zatwierdzonych segmentów podczas połączenia z Scribe v2 Realtime.
To wszystko, czego potrzebujesz, by mieć transkrypcje rozmów na żywo. Teraz możesz dodać ładny interfejs albo kolejne funkcje, np. tłumaczenie języka na żywo.
Aby stworzyć tłumacza językowego z demo, przekaż transkrypcje doChrome AI Translator API i wyświetlaj wynik na żywo.
Dzięki za przeczytanie! Zarejestruj się w ElevenLabs i zacznij budować swoje aplikacje!

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.