Streaming no lado do cliente

Este guia mostra como transcrever áudio em tempo real no lado do cliente usando a ElevenLabs.

Guia prático · Pressupõe que você concluiu o guia de início rápido do Speech to Text .

Visão geral

A API de Transcrição de Voz em Tempo Real da ElevenLabs permite transcrever fluxos de áudio em tempo real com latência ultrabaixa usando o modelo Scribe Realtime v2. Quer você esteja criando assistentes de voz, serviços de transcrição ou qualquer aplicativo que exija reconhecimento de fala ao vivo, esta API baseada em WebSocket fornece transcrições parciais enquanto você fala e transcrições confirmadas quando os segmentos de fala são concluídos.

O Scribe v2 Realtime pode ser implementado no cliente para transcrever áudio em tempo real, pelo microfone ou dividindo manualmente o áudio em partes.

A implementação no cliente difere da implementação no servidor em alguns aspectos:

  • Exige um token de uso único — um token temporário que pode ser usado para se conectar à API sem expor sua chave de API.
  • O áudio do microfone pode ser enviado diretamente para a API para transcrição, sem a necessidade de dividir o áudio manualmente em partes.

Para transmitir áudio de uma URL, consulte o guia de streaming no servidor.

Início rápido

Este guia pressupõe que você configurou sua chave de API. Conclua o início rápido primeiro, caso ainda não tenha feito isso.

1

Instale o SDK

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

Crie um token

Para usar o SDK no cliente, você precisa criar um token de uso único. Esse é um token temporário que pode ser usado para se conectar à API sem expor sua chave de API. Isso pode ser feito pela API da ElevenLabs no servidor.

Nunca exponha sua chave de API ao cliente.

// 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);
});

Um token de uso único expira automaticamente após 15 minutos.

3

Inicie a sessão de transcrição

A transcrição pode ser feita pelo microfone ou dividindo manualmente seu próprio áudio em partes. Seu próprio áudio pode ser um arquivo ou um fluxo.

Para ver uma lista completa dos parâmetros e opções compatíveis com a API, consulte a referência da 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>
);
}

Próximas etapas