話者ダイアライゼーションとは?仕組みと活用例
- 公開日
- 最終更新日
話者ダイアライゼーションは、話者数が不明なオーディオストリームから、ラベル付きセグメントのタイムラインを生成します。たとえば、0:00〜0:42は話者A、0:42〜1:15は話者B、1:15以降は再び話者Aといった形です。システムは話者が誰なのかは認識しませんが、別人であることを識別し、録音全体でラベルの一貫性を保ちます。
この処理により、複数話者のオーディオを活用できるようになります。会議メモ、コールセンターの分析、インタビューの文字起こし、ポッドキャスト編集、法的記録では、何が話されたかだけでなく、誰が話したかを把握することが重要です。
このガイドでは、ダイアライゼーションの仕組み、セグメンテーションや識別といった関連技術との違い、対応するオープンソースツール、ダイアライゼーションシステムの性能測定方法を解説します。
概要
- 話者ダイアライゼーションは、誰が話しているかに基づいて録音を区切り、実名を特定せずにラベル付きの話者ターンを生成します。
- 話者ダイアライゼーションは、話者の切り替わり時点を見つける話者セグメンテーションや、声を実名に照合する話者識別とは異なります。
- ダイアライゼーションの性能は、全体的な精度を示すダイアライゼーションエラー率(DER)と、各話者で精度が維持されているかを確認するJaccardエラー率(JER)で測定します。
話者ダイアライゼーションとは?仕組みとユースケース
話者ダイアライゼーションとは、誰が話しているかに応じてオーディオストリームをセグメントに分割する処理です。話者ダイアライゼーション付きの文字起こしでは、各オーディオセグメントに話者IDが付与されます。簡単に言えば、「誰がいつ話したか?」という問いに答えるものです。
会議の生の文字起こしでは発話内容のみが分かります。一方、ダイアライゼーション済みの文字起こしなら、話者1が質問し、話者2が答え、話者3が途中で割り込んだことまで分かります。
ほとんどの話者ダイアライゼーションシステムは、次の4段階のパイプラインに従います。

各段階を詳しく見ていきましょう。
音声区間検出(VAD)
音声区間検出では、発話をそれ以外の要素、つまり無音、バックグラウンドノイズ、音楽、キーボードのクリック音から分離します。実際の発話を含むオーディオセグメントだけが次の段階に進みます。
この段階でのエラーは、後続のすべての段階に波及します。
セグメンテーション
次に、発話を含むセグメントを、話者が切り替わる可能性が高い箇所で分割します。たとえば、声のトーンの変化、発話ターン間の間、ピッチパターンの変化などです。多くのシステムは、候補となる境界の両側にある音響特性を比較して、こうした変化点を直接検出します。
一部のセグメンテーションツールは、オーディオを2秒ごとなどの短い均一なウィンドウに分割し、同じ話者に属する隣接ウィンドウをクラスタリング段階で統合します。
埋め込み抽出
各発話セグメントは、話者埋め込み、つまりそのセグメントで話している人の声の特徴を捉えた数値ベクトルに変換されます。同じ話者の埋め込みはベクトル空間内で近くに集まり、異なる話者の埋め込みはより離れた位置になります。
クラスタリング
次に埋め込みをグループ化し、同じ話者のセグメントに同じラベルを付与します。通常、システムは話者数を事前に把握していないため、クラスタリングアルゴリズムが推定する必要があります。少し異なる声に聞こえるセグメントが新しい話者なのか、それとも同じ人物が異なるトーンで話しているだけなのかを判断します。

出力は、通常は文字起こしと組み合わせた、時間範囲に付与された話者ラベルのセットです。たとえば、2人通話のダイアライゼーション済み文字起こしは次のようになります。
- [speaker_0] お電話ありがとうございます。どのようなご用件でしょうか?
- [speaker_1] こんにちは。先月の請求書についてお電話しました。
- [speaker_0] かしこまりました。確認します。
ラベルは匿名で、内部的な一貫性があります。Speaker_0は出現するたびに同じ声を指しますが、システムはspeaker_0の名前がFergalであることまでは知りません。実際の人物IDを付与することは別のタスクであり、後ほど解説します。
話者セグメンテーションと話者識別の主な違い
話者セグメンテーションと話者識別はどちらもダイアライゼーションと密接に関連しているため、この3つは混同されがちです。
それぞれが解決する問題は少しずつ異なるため、ツールを評価する際には違いを理解することが重要です。
前述のとおり、話者セグメンテーションはパイプラインの初期に行われるダイアライゼーションの一工程です。ラベルを付与せずに、話者がある声から別の声へ切り替わる境界を検出します。セグメンテーションでは、0:42で変化が起きたことが分かります。ダイアライゼーションでは、さらにそのセグメントをグループ化して完全にラベル付けされた出力を生成するため、1:15の声が録音の冒頭で話していた声と同じだと分かります。
話者識別はダイアライゼーションとは別の機能ですが、両者はよく組み合わせて使われます。識別では、それらの話者が実際に誰なのかを特定します。識別システムは、既知の話者を参照して声を登録済みの声紋と比較し、本人のIDを返します。識別後、speaker_0とspeaker_1は「Fergal」と「Eric」になります。
多くのプロダクトは、より包括的な最終文字起こしを生成するために、これらのツールを組み合わせています。会議ツールでは、TeamsやMeetで設定された名前などの文字列を取得して、この処理を自動で行うこともあります。これにより、手動レビューなしで各参加者の発言に名前を付与できます。

人気のオープンソース話者ダイアライゼーションツールとライブラリ
制御性、柔軟性、ローカルデプロイメントが必要な場合は、オープンソースの話者ダイアライゼーションツールを検討する価値があります。最適な選択肢は、扱うオーディオの種類(通話、会議、ポッドキャスト、放送)、レイテンシー要件、投資できるエンジニアリング時間によって異なります。
代表的な選択肢を紹介します。
Pyannote.audio
Pyannote.audioは、話者ダイアライゼーション専用に構築されたPyTorchベースのツールキットで、最も広く使われているオープンソースの選択肢の一つです。VAD、セグメンテーション、埋め込み、クラスタリングを含むダイアライゼーションスタック全体をカバーする事前学習済みパイプラインと、自社データでモデルをトレーニングまたは微調整するための構成要素を提供します。
事前学習済みモデルはHugging Faceを通じて配布されており、大規模な文字起こしプロジェクトではダイアライゼーション層として広く利用されています。
WhisperX
WhisperXは、OpenAIのWhisperとASRを、ダイアライゼーションおよび強制アラインメントと組み合わせます。Whisper単体でも高品質な文字起こしを生成できますが、話者ラベルは付与せず、タイムスタンプもおおよそのものです。WhisperXは単語単位のタイムスタンプアラインメントを追加し、pyannoteベースのダイアライゼーションを統合することで、各単語に正確なタイムスタンプと話者ラベルの両方が付いた文字起こしを生成します。
NVIDIA NeMo
NVIDIA NeMoは、より広範な会話型AIフレームワークの一部としてダイアライゼーションを提供しています。重複発話を処理するエンドツーエンドのアプローチを含むトレーニング可能なダイアライゼーションモデルを提供し、GPUインフラ上でカスタム音声システムを大規模に構築するチーム向けに設計されています。
これらのツールでは、モデルのデプロイ、スケーリング、監視、更新を含むダイアライゼーションインフラを管理する必要があります。こうした運用負荷を避けたいチームにとって、マネージド型の音声ダイアライゼーションAPIはよりシンプルな選択肢です。既存のワークフローに統合することも、ダイアライゼーションパイプライン全体を担うこともでき、カスタマーサポート分析、会議の文字起こし、ポッドキャスト処理といった本番ユースケースに適しています。
リアルタイムダイアライゼーション:課題とユースケース
リアルタイムダイアライゼーションは、システムが不完全なコンテキストで判断しなければならないため、完成した録音を対象とするダイアライゼーションよりも大幅に困難です。
オフラインシステムは、判断を確定する前に録音全体を確認できます。2分時点の声と40分時点の声を比較し、両方の時点を同時に参照できるため、同じ話者だと確信を持って判断できます。リアルタイムシステムにはこの余裕がありません。音声が届いた瞬間にラベル付けする必要があり、次に何が話されるかにはアクセスできず、一度下した判断を修正する機会もほとんど、またはまったくありません。
この将来のコンテキストが欠けていることが、特に次の3つの問題をリアルタイムで解決するのを難しくしています。
- レイテンシーと精度:会話全体を前後に確認できないため、より厳しい応答時間の要件を満たすには、精度を直接犠牲にする必要があります。
- 重複発話:複数人が同時に話す場合、オーディオを再処理できるシステムなら分離できる可能性があります。リアルタイムシステムでは、単一のラベルに強制的に割り当てるか、その場で重複発話対応の専用モデルに頼る必要があります。
- 短い発話:「はい」や「どうぞ」といった短い発話では、システムが判断に使える声の情報はほとんど得られません。周囲のコンテキストも利用できないなかで、すぐにラベルを確定する必要があります。
難しさはあるものの、録音の終了を待てないアプリケーションもあります。ライブキャプションでは、会議や放送で話者が話すのに合わせて話者ラベルが必要です。コンタクトセンターソフトウェアでは、通話中にエージェントにガイダンスを提示するため、顧客がどの言葉を使っているかをリアルタイムで把握する必要があります。ボイスエージェントは、複数参加者との通話を処理する際に、誰が何を尋ねているかを遅延なく追跡する必要があります。どの場合でも、わずかに精度が低くても即時に結果を出すシステムの方が、高精度でも遅延するシステムより優れています。
分析、コンプライアンスレビュー、文字起こし生成など、リアルタイムのラベルを本当に必要としないワークロードでは、大幅に精度が高いため、バッチダイアライゼーションの方が適しています。
話者ダイアライゼーションの性能評価方法
ダイアライゼーション精度の測定では、全体的な精度を示すダイアライゼーションエラー率(DER)と、各話者で精度が維持されているかを確認するJaccardエラー率(JER)の2つが特に重要です。
DERは、誤って帰属された発話時間が全発話時間に占める割合を計算します。次の3種類のエラーを組み合わせた指標です。
- 誤検出発話:誰も話していないセグメントを、システムが発話としてラベル付けした状態です。
- 発話の見逃し:誰かが話していたにもかかわらず、システムが無音とラベル付けした状態です。
- 話者の混同:発話は検出されたものの、誤った話者に帰属された状態です。
DER = (誤検出 + 発話の見逃し + 話者の混同)/ 総発話時間
DERが10%の場合、これら3種類のエラーを合計すると全発話時間の10分の1に相当します。低いほど良く、スコアを比較できるのは、同じ条件下で同じデータを測定した場合のみです。DERは、オーディオ品質、話者数、録音に含まれる重複発話の量によって大きく変わります。
Jaccardエラー率(JER)は、話者ごとにダイアライゼーションの精度を個別に測定し、その結果を全話者で平均します。各参照話者について、評価器はシステム内で最も近い話者ラベルを対応付け、正しく重なった時間と、いずれかの話者に割り当てられた合計時間を比較します。
たとえば、話者Aが50分、話者Bが10分話す60分間の会議を考えてみましょう。ダイアライゼーションシステムは、話者Aの50分のうち48分を正しくラベル付けしましたが、話者Bの10分のうち正しくラベル付けできたのは4分だけでした。会議の大部分は話者Aの発話であるため、全体のDERは比較的良好に見えるかもしれません。JERでは、話者Aと話者Bを個別に評価してからスコアを平均するため、話者Bの低い結果も同じ重みで反映されます。
JER_speaker = 1 - (correct_overlap / (ref_time + sys_time - correct_overlap))
最終的なJERは、話者ごとのエラー率の平均です。
JER = (1 / N)* Σ[JER_speaker_i]、i = 1..N
DERとJERの両方を追跡することで、ダイアライゼーション精度をより包括的に把握できます。DERは全体的な精度、JERは発言の少ない参加者を含むすべての参加者で精度が維持されているかを示します。
本番環境を代表するオーディオでのテスト
話者ダイアライゼーションシステムを評価する際は、実際のデプロイ環境に合ったオーディオでDERとJERの両方を算出してください。典型的な話者数、オーディオ品質、クロストークの量を反映させることが重要です。
公開されているベンチマークスコアは、スタジオ録音のような、実際の通話録音やライブ会議の音とはほとんど一致しない、クリーンで制御されたデータセットで測定されている場合があります。ベンチマークで高スコアのシステムでも、ノイズや重複発話のある実環境のオーディオでは性能が大きく低下する可能性があります。ダイアライゼーションプロダクトを採用する前に、自社データでテストしてください。
ElevenAPIで話者ダイアライゼーションを始める
複数話者対応の文字起こし機能を構築する準備ができているなら、 Scribe v2なら、ElevenLabsの話者ダイアライゼーションを単一のスピーチtoテキストAPIで利用できます。diarize=trueを指定してエンドポイントにオーディオを送信すると、JSONレスポンスで各単語に話者IDが付与されます。最大32話者、90以上の言語、最長10時間のファイルに対応しています。
標準のダイアライゼーション出力は、2つのオプションで拡張できます。通話録音では、detect_speaker_roles=trueを指定すると、匿名の番号ではなくagentとcustomerとして話者をラベル付けします。ワークスペースに話者プロファイルが登録されている場合は、use_speaker_library=trueで検出された話者を登録済みの声と照合でき、1回のリクエストでダイアライゼーションと識別を組み合わせられます。
ダイアライゼーションしきい値パラメータでは、話者を過剰に分割するか統合するかのトレードオフを調整できます。また、ステレオ通話録音のように話者がすでに別々のオーディオチャンネルに分離されている場合は、マルチチャンネル文字起こしによりチャンネルごとに話者を割り当て、ダイアライゼーションを完全に省略できます。
スピーチtoテキストのクイックスタートでは、最初のインテグレーションを手順ごとに解説しています。規制対象のデプロイメント向けに、プラットフォームはSOC 2、ISO 27001、PCI DSS L1、HIPAAに準拠しており、EUデータレジデンシーとゼロ保持モードも利用できます。
システムに話者ダイアライゼーションを組み込む準備はできましたか?まずはAPIキーを取得するか、詳細についてはElevenLabsドキュメントをご覧ください。




