文字起こしAIの精度は、この数年で目に見えて上がりました。録音を放り込めば、数分でほぼ正確なテキストが返ってくる。ところが、それを議事録や対談記事に整えようとした瞬間、手が止まります。発言の中身は合っているのに、どこからどこまでが誰の発言なのか、テキストのどこにも書かれていないからです。
この「誰が・いつ話したか」を推定する技術を話者分離と呼びます。英語ではスピーカーダイアライゼーション(speaker diarization)といいます。音声認識とひとまとめに語られがちですが、実は別のタスクです。この記事では、その仕組みと限界、オープンソース実装の現在地、そして字幕制作や議事録の現場で精度がどう効いてくるかを整理します。
音声認識は「何を」、話者分離は「誰が・いつ」
音声認識が推定するのは「何を話したか」です。音声をテキストに変換する。それだけなら、話者が3人いても出力はひと続きの文字列です。一方の話者分離は、録音を発言のまとまりに区切り、それぞれに「Speaker 1」「Speaker 2」といった匿名ラベルとタイムスタンプを付けます。発言の中身のテキストには関与しません。
つまり両者は役割分担の関係にあります。「何を」と「誰が・いつ」。この二つが揃って初めて、話者ごとに発言が整理された、人が読める文字起こしになります。音声認識の単語精度がどれだけ高くても、話者ラベルがなければ対談記事は書けません。逆に、話者ラベルだけ正確でも中身のテキストが崩れていれば使いものにならない。音声認識そのものについては、 AI字幕生成の仕組み で詳しく解説しています。
声を数値にして、似た者同士を束ねる
では機械は、声の違いをどう見分けているのでしょうか。伝統的な話者分離のパイプラインは、三つの段階でできています。
音声区間検出(VAD): まず、録音の中から「人が話している区間」だけを切り出します。無音や環境音、BGMを除く工程で、ここで発話を取りこぼすと後段では取り返せません。
話者埋め込み: 切り出した各区間の声の特徴を、数百次元のベクトルに変換します。x-vectorと呼ばれる方式が代表的で、声質が近い区間ほどベクトル同士も近くなるように学習されています。
クラスタリング: 得られたベクトルを、似た者同士でグループにまとめます。凝集型クラスタリングやスペクトラルクラスタリングが定番で、グループの数がそのまま話者の数になり、各グループに匿名のラベルが振られます。
注意したいのは、この時点で機械が知っているのは「この声とこの声は同一人物らしい」ということだけだ、という点です。それが誰なのかは知りません。Speaker 1が田中さんであることは、人間が後から名前を付けて初めて確定します。
現場の録音は、教科書どおりに進まない
仕組みだけ見れば素直な技術です。しかし実際の録音は、この素直なパイプラインを何度も裏切ります。
かぶり発話: 対談が盛り上がると、発話は重なります。一つの区間に二人の声が混ざると、埋め込みベクトルはどちらの話者にも似ない中間的な値になり、誤分類の温床になります。
短い相槌: 「ええ」「はい」のような一秒足らずの発話は、声の特徴を安定して取り出すには短すぎます。聞き手の相槌が話し手側の発言として付いてしまう誤りは、インタビュー起こしの定番です。
話者数が未知: 会議の録音では、何人が発言するか事前に分かりません。クラスタ数の推定を誤ると、声の似た二人が一人に融合したり、同じ人の声が体調や声量の変化で別人扱いされたりします。
収録環境: 電話回線の狭い帯域、遠いマイク、空調音。声の特徴を薄めるものはすべて、分離の精度を削ります。
難しさの多くは、人間なら文脈で補ってしまう部分です。機械にとっての難所は、人間の耳には難所に見えないのかもしれません。
「声で個人を特定する」のとは違う
話者分離と混同されやすい言葉に、話者認識(speaker identification)があります。こちらは、事前に登録された声と照合して「この声はあの人だ」と個人を特定する技術です。話者分離は登録なしでどんな録音にも使える代わりに、匿名のラベルしか返さない。話者認識は名前を返す代わりに、事前の声の登録が要る。報道番組で出演者名を自動付与したいなら認識、初見の会議録音を切り分けたいなら分離、という使い分けになります。
オープンソースはどこまで来ているか、二つの設計思想
ここまで描いてきたVAD→話者埋め込み→クラスタリングという流れは、「クラスタリング型」と呼ばれる設計です。部品ごとに改良できる素直な構成ですが、一区間一話者の前提を抱えたままでもある。かぶり発話に弱いのは、前節で見たとおりです。これに対して、区間の切り出しもグループ化も一つのニューラルネットワークに任せてしまう設計もあります。これはend-to-end型と呼ばれ、EEND(End-to-End Neural Diarization)の系譜にあたります。各フレームについて「誰が話しているか」を多ラベルで直接出力するため、かぶり発話を最初から問題の定義に含められます。NVIDIAのNeMoに収録されたSortformerは、Transformerエンコーダで話者ラベルを到着順に直接出力する、この系譜の実装です。
では現場で使われているオープンソースはどちらの型なのか。実際には、両者の折衷が主流になりつつあります。pyannote.audioの3.x系は、短い窓の中をpowerset表現(話者の組み合わせ自体を一つのクラスとして扱う表現)でend-to-end的に分離し、その結果を話者埋め込みとクラスタリングで全体に束ねる二段構えです。AlibabaのModelScopeチームが公開する3D-Speakerプロジェクトは、CAM++、ERes2Net、ERes2NetV2といった話者埋め込みモデル群とクラスタリング型の話者分離レシピを揃えた、埋め込み系の代表格です。WhisperXのように、音声認識(Whisper)と話者分離(pyannote)を束ねて「誰が何を言ったか」を単語単位のタイムスタンプ付きで出すパイプラインもあります。冒頭で述べた役割分担を、ツールのレベルで組み立てた例です。
精度の物差しにも触れておきます。この分野の標準指標はDER(Diarization Error Rate)といい、発話の取りこぼし、誤検出、話者の取り違えの時間を合算し、総発話時間で割った値です。ベンチマークの数字を眺めるとき、この三つのどれで失点しているかまで見ると、モデルの性格が読めてきます。
テレビ番組には、映像という手がかりもある
ここまでの話者分離は、音声だけを材料にしてきました。しかしテレビ番組の素材には、音声と同期した映像が必ず付いています。声で迷ったら、顔を見ればいい。字幕オペレーターが自然にやっていることを機械にもやらせる、音声・映像統合型(audio-visual)の話者分離が研究・実装の両面で進んでいます。組み合わされる部品は、おおよそ次の三種類です。
話者埋め込みモデル: 声の特徴をベクトル化する音声側の部品です。x-vectorの系譜に連なるものとして、3D-SpeakerプロジェクトのCAM++やERes2Netといった公開モデルがあります。
アクティブスピーカー検出: 「いま口を動かして話しているのは画面内の誰か」を映像から判定する部品です。TalkNetやLR-ASDといった軽量なモデルが知られています。
顔認識モデル: 検出した顔同士が同一人物かどうかを突き合わせる部品です。ArcFaceやAdaFaceなどの顔埋め込みモデルが使われます。
音声の類似度と映像側の証拠、これらの出力を重み付きで統合する構成はlate fusionと呼ばれます。声質の似た二人やかぶり発話のように音声だけでは決めきれない場面を、映像の側から崩せるのが強みです。もちろん、顔が映らないナレーションや電話コメントでは音声だけが頼りになるため、万能ではありません。
字幕と議事録では、話者ラベルが工数を左右する
放送字幕には、話者ごとに文字色を変える慣行があります。基本の白に加えて黄・水色・緑などを使い、メインの出演者に黄色を割り当てる、といった具合です(基準は局や番組によって異なります)。つまり放送字幕の制作では、「誰の発言か」の判定が一文ごとに必要になる。対談やバラエティのように発言が交錯する番組ほど、この判定と色の割り当てが編集工数の大きな塊になります。話者分離の精度は、そのままこの工数に跳ね返ります。
議事録やインタビュー起こしでも事情は同じです。話者ラベルの誤りは、読めば違和感には気づけても、直すには結局録音を聞き直すことになりがちです。ラベルの精度が一定の線を越えて初めて、「AIの出力を直す」作業は「AIの出力を確かめる」作業に変わります。
NAXAの取り組み
NAXAのSubtitle Generatorは、放送番組の字幕制作に向けたAI字幕生成・文字起こしサービスです。ARIB STD-B36 / NABやSRT / WebVTT、XMEMLといった出力形式に対応し、テレビ大阪や北海道文化放送(UHB)などの放送現場で使われています。その話者分離は、音声の特徴に加えて映像の手がかりも組み合わせる構成を採っており、字幕の色分けや話者名表記の下書きを自動で用意します。
冒頭の問いに戻るなら、「誰が話したか」を機械がどこまで下ごしらえできるかが、字幕編集に残る工数を決めます。かぶり発話や相槌のような難所は今も残っていますが、その精度を放送の現場と一緒に詰めていくことにこそ、この技術の伸びしろがあると考えています。