Scribe v2 Realtimeの仕組み

Scribe v2 Realtimeがライブ翻訳や音声アプリ向けに低遅延の文字起こしを実現する方法

Scribe v2 Realtime

Scribe v2 Realtimeは非常に高速なスピーチtoテキストモデルで、ライブ文字起こしに利用できます。スピードと品質の両立により、これまで実現できなかったユースケースも可能になりました。

例えば、Scribe v2 RealtimeとChrome Translator APIを使って、このリアルタイム言語翻訳ツールを作成できました。

Live transcription on the left and committed transcripts on the right in a list

このデモのステップバイステップのチュートリアルが必要な場合は、 こちらをご覧ください。このガイドでは、Scribe v2 Realtimeの概要と仕組みにフォーカスします。

モデルについて

ElevenLabsでは、音声を文字起こしするためにScribe v2とScribe v2 Realtimeの2つのモデルを提供しています。

Optimized For
Scribe v2
Accuracy
Scribe v2 Realtime
Ultra low latency
Use Case
Scribe v2
Batch transcription, subtitling, and captioning at scale.
Scribe v2 Realtime
Voice agents, meeting notetakers, and other live applications.

Scribe v2は非同期の文字起こしに最適ですが、Scribe v2 Realtimeはライブで文字起こしが必要な場合に使います。

ライブ翻訳アプリには、Scribe v2 Realtimeが最適です。

APIについて

このモデルを使うには、スピーチtoテキストAPIを利用します。始めるには、次の2つのステップが必要です。

  1. Scribeインスタンスの初期化
  2. APIへの接続

APIをどこから呼び出すかによって、初期化方法が異なります。サーバーサイドで呼び出す場合は、APIキーで直接初期化し、そのインスタンスを使ってScribe v2 Realtimeに接続できます。

ただし、APIキーをクライアントに公開するのは大きなセキュリティリスクです。そのため、クライアントサイドでストリーミングする場合は、ワンタイムトークンで初期化する必要があります。

このトークンはAPIキーを守るためにサーバーサイドで生成する必要があります。

今回はReactアプリを作成するので、トークン方式を使います。このトークンは接続時に渡すため、Scribeインスタンスの作成も簡単です。

1import { useScribe } from "@elevenlabs/react";
2
3function MyComponent() {
4 const scribe = useScribe({
5 modelId: "scribe_v2_realtime",
6 });
7
8 //...
9}

Scribe v2 Realtimeへの接続

適切に初期化できたら、Scribe v2 Realtimeに接続できます。Reactの翻訳プロジェクトではクライアントサイドストリーミングを使うため、バックエンドからワンタイムトークンが必要です。このトークンはAPIに接続するたびに生成して渡します。

1const 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};


コミット戦略

Scribe v2 Realtimeでは、文字起こしには「部分」と「コミット済み」の2種類があります。

部分文字起こしは「ライブ文字起こし」です。これはWebSocket経由でリアルタイムに返されます。たとえば「The cat is ...」と言うと、その言葉がすぐに表示されます。

もう一つはコミット済み文字起こしです。文字起こしはセグメントごとに行われます。どのタイミングでコミットするかによって、セグメントの分け方が決まります。そのため、コミット戦略を決める必要があります。

コミット戦略には2つの方法があります。1つ目は手動で、好きなタイミングでコミットできます。おすすめは無音時や会話の切れ目など、論理的なポイントでコミットすることです。

もう1つは、Scribe v2 RealtimeがVoice Activity Detection(VAD)を使って自動でセグメントを判断する方法です。この方法では、音声や無音を自動検出し、無音のしきい値に達すると自動でコミットされます。

なぜコミット戦略が必要なのでしょうか?

話している間、Scribe v2 Realtimeは一語ずつ文字起こしします。たとえば「I scream...」と言うと「Ice cream...」と認識されることもありますが、「I scream every time I see a spider in the bathroom.」という文全体が分かると、より正確に変換できます。

つまり、部分文字起こしはリアルタイム表示に使い、コミット済み文字起こしは会話履歴としてより正確な内容になります。

文字起こしの表示

Scribe v2 Realtimeに接続すると、文字起こしが始まります。partialTranscriptと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は現在セグメントのリアルタイム文字起こしです。committedTranscriptは会話履歴で、Scribe v2 Realtime接続中にコミットされたセグメントのリストです。

AIで翻訳

これで会話のリアルタイム文字起こしができます。あとはUIを工夫したり、ライブ翻訳などの機能を追加することも可能です。

デモのリアルタイム翻訳ツールを作るには、文字起こしデータを Chrome AI Translator APIに渡して、リアルタイムで出力を表示します。

開発を始めましょう

ご覧いただきありがとうございました! ElevenLabsにサインアップして アプリ開発を始めましょう!

ElevenLabsチームによる記事をもっと見る

ElevenLabs

最高品質のAIオーディオで制作を

無料で始める

すでにアカウントをお持ちですか? ログイン