Streaming po stronie klienta

Ten przewodnik pokazuje, jak transkrybować audio w czasie rzeczywistym po stronie klienta z ElevenLabs.

Przewodnik krok po kroku · Zakłada, że masz za sobą krótki przewodnik po Speech to Text .

Omówienie

API ElevenLabs Realtime Speech to Text pozwala transkrybować strumienie audio w czasie rzeczywistym z bardzo niskim opóźnieniem, używając modelu Scribe Realtime v2. Niezależnie od tego, czy tworzysz asystentów głosowych, usługi transkrypcji czy aplikację wymagającą rozpoznawania mowy na żywo, to oparte na WebSocket API dostarcza częściowe transkrypcje podczas mówienia i zatwierdzone transkrypcje po zakończeniu segmentów mowy.

Scribe v2 Realtime można wdrożyć po stronie klienta, aby transkrybować audio w czasie rzeczywistym — z mikrofonu lub przez ręczne dzielenie audio na fragmenty.

Wdrożenie po stronie klienta różni się od wdrożenia po stronie serwera pod kilkoma względami:

  • Wymaga tokenu jednorazowego użytku — to tymczasowy token, który pozwala połączyć się z API bez ujawniania klucza API.
  • Audio z mikrofonu można przesyłać bezpośrednio do API do transkrypcji, bez ręcznego dzielenia go na fragmenty.

Aby przesyłać strumieniowo audio z adresu URL, zobacz przewodnik streaming po stronie serwera.

Szybki start

Ten przewodnik zakłada, że skonfigurowałeś klucz API. Jeśli jeszcze tego nie zrobiłeś, najpierw ukończ szybki start.

1

Zainstaluj SDK

npm install @elevenlabs/react @elevenlabs/elevenlabs-js
2

Utwórz token

Aby użyć SDK po stronie klienta, musisz utworzyć token jednorazowego użytku. To tymczasowy token, który pozwala połączyć się z API bez ujawniania klucza API. Możesz to zrobić przez API ElevenLabs po stronie serwera.

Nigdy nie ujawniaj klucza API po stronie klienta.

// Node.js server
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
const elevenlabs = new ElevenLabsClient({
apiKey: process.env.ELEVENLABS_API_KEY,
});
app.get("/scribe-token", yourAuthMiddleware, async (req, res) => {
const token = await elevenlabs.tokens.singleUse.create("realtime_scribe");
res.json(token);
});

Token jednorazowego użytku automatycznie wygasa po 15 minutach.

3

Rozpocznij sesję transkrypcji

Transkrypcję możesz wykonać z mikrofonu lub przez ręczne dzielenie własnego audio na fragmenty. Własne audio może być plikiem lub strumieniem.

Pełną listę obsługiwanych przez API parametrów i opcji znajdziesz w dokumentacji API.

import { useScribe } from "@elevenlabs/react";
function MyComponent() {
const scribe = useScribe({
modelId: "scribe_v2_realtime",
onPartialTranscript: (data) => {
console.log("Partial:", data.text);
},
onCommittedTranscript: (data) => {
console.log("Committed:", data.text);
},
onCommittedTranscriptWithTimestamps: (data) => {
console.log("Committed with timestamps:", data.text);
console.log("Timestamps:", data.words);
},
});
const handleStart = async () => {
// Fetch a single use token from the server
const token = await fetchTokenFromServer();
await scribe.connect({
token,
microphone: {
echoCancellation: true,
noiseSuppression: true,
},
});
};
return (
<div>
<button onClick={handleStart} disabled={scribe.isConnected}>
Start Recording
</button>
<button onClick={scribe.disconnect} disabled={!scribe.isConnected}>
Stop
</button>
{scribe.partialTranscript && <p>Live: {scribe.partialTranscript}</p>}
<div>
{scribe.committedTranscripts.map((t) => (
<p key={t.id}>{t.text}</p>
))}
</div>
</div>
);
}

Kolejne kroki