Eleven v4を発表これまでで最も感情豊かなモデル、Eleven v4をご紹介します。

コンテンツへ移動

Scribe v2 Realtimeの仕組み

執筆者
Tadas Petra
公開日
最終更新日

聴くこの記事を聴く

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では、オーディオを書き起こすための2つのモデル、Scribe v2とScribe v2 Realtimeを提供しています。

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インスタンスの作成は簡単です。

import { useScribe } from "@elevenlabs/react";

function MyComponent() {
  const scribe = useScribe({
    modelId: "scribe_v2_realtime",
  });
  
  //...
}

Scribe v2 Realtimeへの接続

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

const handleStart = async () => {
  const token = await fetchTokenFromServer();

  await scribe.connect({
    token,
    microphone: {
	  echoCancellation: true,
	  noiseSuppression: true,
    },
  });
};


コミット戦略

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

部分文字起こしは「ライブ文字起こし」です。この文字起こしはWebSocket経由で行われ、話している間に返されます。たとえば「The cat is ...」と言うと、その言葉がリアルタイムでストリーミング表示されます。

もう1つは、コミット済み文字起こしです。文字起こしはセグメント単位で処理されます。いつ、どのように文字起こしをコミットするかによって、文字起こしの分割方法が決まります。そのためには、コミット戦略を定義する必要があります。

コミット戦略には2つの選択肢があります。1つ目は手動で、文字起こしをコミットするタイミングを完全に制御できます。無音時や、話者交代などの論理的な区切りで行うのがベストプラクティスです。

もう1つは、Scribe v2 Realtimeに音声アクティビティ検出(VAD)を使って適切なセグメントを自動で判断させる方法です。このアプローチでは、発話と無音のセグメントを自動的に検出します。無音のしきい値に達すると、文字起こしエンジンが文字起こしセグメントを自動的にコミットします。

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

話している間、Scribe v2 Realtimeは単語ごとに文字起こしを行います。たとえば「I scream...」と言うと、「Ice cream...」と認識されることがあります。しかし、「I scream every time I see a spider in the bathroom,」というセグメント全体の文脈があれば、出力の精度はより高くなります。

そのため、部分文字起こしはリアルタイムで表示でき、コミット済み文字起こしは会話履歴をより正確に書き起こしたものになります。

文字起こしを表示する

Scribe v2 Realtimeに接続すると、文字起こしが開始されます。partialTranscriptプロパティとcommittedTranscriptsプロパティを使って、文字起こしにアクセスできます。

<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>

partialTranscriptは、現在文字起こし中のセグメントのリアルタイム文字起こしです。committedTranscriptは会話履歴であり、Scribe v2 Realtimeへの接続中にコミットされたセグメントのリストです。

AIで翻訳する

これだけで、会話のリアルタイム文字起こしを取得できます。あとは、このアプリに見やすいUIを追加したり、ライブ言語翻訳などの機能を加えたりできます。

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

開発を始める

お読みいただきありがとうございます! ElevenLabsに登録して、アプリケーションの開発を始めましょう!

執筆者

Tadas Petraは、ElevenLabsのプロダクトスイートを使った開発をサポートするデベロッパーリレーションズエンジニアです。また、デベロッパー向け教育プラットフォーム「Hungrimind」の創設者でもあります。以前はAgoraでリードデベロッパーアドボケイト、Zero To Masteryでインストラクターを務めていました。

関連記事

最高品質のAIオーディオで創造する