更新日:
22/10/2026

Nemotron 3 Diarizationの使い方|CPU・GPU必要スペックと日本語会議の話者分離

blog header image

目次

この記事のポイント

●
NVIDIAのDiarizationは音声を文字へ変換するASRではなく、「誰がいつ話したか」を区間として識別する技術。
●
Nemotron 3 Diarizationは最大8話者に対応する話者分離モデルです。旧Streaming Sortformerの4話者モデルとは、対応人数と使用するモデルが異なります。
●
出力は発言の開始・終了時刻と話者ラベルで、参加者の実名は自動では付きません。議事録で名前を表示するには、録音と照合して対応付けます。
●
WhisperなどのASRと組み合わせることで「Speaker 1: 発言内容」という議事録へ変換できる。
●
ローカル処理は機密音声を外部APIへ送らずに済む利点がある一方、録音同意・社内規程・個人情報の確認は別途必要。

Whisperなどを使えば会議音声を高精度に文字起こしできる。

‍

しかし3人、4人と参加者が増えると、「この発言は誰のものか」が分からない議事録になりやすい。

‍

そこで使われるのがSpeaker Diarization、つまり話者分離だ。

NVIDIAのNeMo Speechでは、Sortformerを使って音声の時間軸に話者ラベルを付けられる。

‍

リアルタイム処理向けのStreaming Sortformerと、録音後にまとめて処理するOffline Sortformerが用意されている。

‍

ここで注意したいのは、話者分離と文字起こしは別工程だという点だ。

Diarizationだけでは発言内容はテキストにならない。

ASRと組み合わせて初めて「誰が、何を話したか」を扱える。

Nemotron 3 Diarizationとは何か

Nemotron 3 Diarizationは、NVIDIAが公開した「誰がいつ話したか」を推定する音声モデルです。

‍

録音ファイルの処理とストリーミング推論に対応し、最大8話者を扱います。

‍

発言内容を文字にするモデルではないため、話者付きの文字起こしを作るには、ASRと呼ばれる音声認識モデルを組み合わせます。

話者分離と文字起こしは何が違う?

ASRは「何を話したか」を文字へ変換する。

一方、Diarizationは「いつ、誰が話したか」を推定する。同じ音声を入力しても出力の目的が違う。

処理 主な入力 主な出力 代表用途
ASR 音声 発言内容のテキスト 文字起こし・字幕
Speaker Diarization 音声 話者ラベル+時間区間 誰がいつ話したか
ASR+Diarization 音声 話者付きテキスト 会議議事録・インタビュー

実務では両方を統合する。

たとえばASRが「次の施策は来週決めます」と文字化し、Diarizationがその時間帯をspeaker_2と判定すれば、「Speaker 2:次の施策は来週決めます」という形にできる。

最大8話者に対応|旧Sortformerの4話者モデルとの違い

Nemotron 3 Diarizationは最大8話者に対応しています。

‍

一方、旧モデルの「diar_streaming_sortformer_4spk-v2.1」は4話者対応です。

‍

旧モデルや、それを利用したVoice Agentの仕様を、Nemotron 3 Diarizationの制限として扱わないようにしてください。

‍

ただし、最大8話者対応は、8人の会議を常に正確に識別できるという意味ではありません。

‍

似た声、短い相づち、同時発話、録音環境によって話者の取り違えが起こり得ます。

‍

出力される話者ラベルは、参加者の実名ではありません。

‍

議事録に名前を付ける場合は、録音と照合してラベルと参加者を対応付けます。

CPUだけでも動く?必要RAM・GPUの考え方

NVIDIAのVoice Agent標準設定はdeviceにcudaを使う。

‍

ASRとDiarizationが同じdevice設定を共有するため、リアルタイム音声エージェント用途ではCUDA GPUを前提にした構成が分かりやすい。

‍

一方、録音ファイルを後処理する用途ではリアルタイム性が必須ではない。

‍

CPU実行可能なランタイムやコミュニティ実装を使える場合、GPUなしでも処理できる可能性はあるがNVIDIA公式の特定GPU測定値を一般CPUへそのまま換算してはいけない。

‍

必要スペックは「モデルが読み込めるか」より、音声1分を何秒で処理したいかで決める。

‍

会議終了後に数分待てるならCPUも候補になるが、会話中にspeaker tagを付けたいならGPUの優先度が上がる。

ローカル導入の基本

Nemotron 3 DiarizationをNeMo Speechで実行するには、対応するPython・PyTorch・NeMo Speech環境を用意します。

‍

以下は、録音済みの音声ファイルから話者区間を取得するコード例です。

環境構築後に実行してください。

‍

なお、このコードは公式の使用例に基づくもので、本記事での動作検証は行っていません。

from nemo.collections.asr.models import SortformerEncLabelModel

model = SortformerEncLabelModel.from_pretrained(
    "nvidia/Nemotron-3-Diarization"
)
model.eval()

# 録音ファイル向けの設定例
model.sortformer_modules.chunk_len = 340
model.sortformer_modules.chunk_right_context = 40
model.sortformer_modules.fifo_len = 40
model.sortformer_modules.spkcache_update_period = 300
model._check_streaming_parameters()

results = model.diarize(
    audio=["meeting.wav"],
    batch_size=1
)

for segment in results[0]:
    print(segment)

meeting.wavは、処理したい16kHz・モノラルの音声ファイルに置き換えてください。

初回実行時にはモデルをダウンロードするため通信が発生します。

音声を外部APIへ送らず処理したい場合は、組み合わせる文字起こし側もローカルで実行してください。

‍

‍

録音ファイルを話者分離する流れ

録音済み会議ではリアルタイムモデルにこだわる必要はない。

‍

NVIDIAは「Determine who spoke when」の用途にStreaming SortformerとOffline Sortformerを推奨し、リアルタイムならstreaming、バッチならofflineと使い分けている。

‍

基本フローは、音声ファイルの前処理→Diarization→ASR→タイムスタンプ統合だ。

Diarizationの区間とASRの単語・文タイムスタンプを突き合わせ、各発言へspeaker labelを付ける。

‍

動画制作者なら、この出力を字幕生成へ流用できる。

ポッドキャストなら出演者別の発言時間集計などにも展開できる。

‍

‍

話者分離の結果はどう表示される?

話者分離では、発言区間の開始時刻・終了時刻・話者ラベルを取得します。

次は仕組みを説明するための架空の例です。

実際の出力形式は、利用するツールによって異なります。

‍

開始 終了 話者
0.5秒 3.2秒 speaker_0
3.4秒 6.8秒 speaker_1
7.0秒 9.5秒 speaker_0

※仕組みを説明するための架空の例です。実測結果ではありません。 実際の出力形式は、利用するツールによって異なります。

‍

この段階では、発言内容の文章はありません。

‍

Whisperなどで取得した文字起こしの時刻と照合すると、各発言に話者ラベルを付けられます。

‍

例えば、3.4〜6.8秒の文字起こしが「資料は明日共有します」であれば、「speaker_1:資料は明日共有します」という形に整理できます。

‍

話者交代をまたぐ長い文字起こし区間は、途中で分割するか、単語単位のタイムスタンプを使って対応付けます。

同時発話を含む箇所は、単純な時刻の照合だけでは誤って割り当てる場合があるため、録音を聞いて確認してください。

‍

‍

リアルタイム会議ではバッファと遅延を見る

リアルタイム処理では短い音声を逐次モデルへ渡す。

Voice Agentの標準実装ではraw frameが16msで届き、80ms単位へまとめてモデルを呼び出す。

‍

短いバッファは反応を速くできる一方、話者を判断する音声情報が少なくなる。

長く取れば判断材料は増えるが、speaker labelが確定するまでの遅延が増える。

‍

会議用途では「最小遅延」を目指すより、誤って話者が頻繁に切り替わらない範囲でバッファを調整する方が実用的だ。

‍

‍

Whisperと組み合わせて議事録を作る

Whisperやfaster-whisperは発言内容を文字へ変換する役割を担当し、Sortformerは話者区間を担当する。

両方がタイムスタンプを持てば統合できる。

‍

実装では、ASRセグメントの開始・終了時刻とDiarizationの話者区間の重なりを計算し、最も長く重なる話者を割り当てる方法が分かりやすい。

単語タイムスタンプを使えば、発言途中で話者が変わるケースも細かく処理できる。

‍

LLMへ渡す前に「speaker_0」「speaker_1」のラベルを実名へ対応付ければ、会議要約、決定事項、担当者別ToDoの抽出まで自動化しやすくなる。

‍

‍

日本語会議で確認すべき精度

Diarizationは音声の言語内容そのものより声の特徴や時間構造を扱うため、ASRほど「日本語モデルか」が直接の条件にはなりにくい。

ただし、日本語会議で高精度だと無条件に断定することもできない。

‍

アクセント、似た声質、短い相づち、重なり発話、会議室の反響、遠いマイクなどで誤認識が増える可能性がある。

NVIDIAのVoice Agentドキュメントもノイズや似た声で混同しやすい点を明記している。

‍

導入前には実際の会議室、マイク、参加人数で録音し、DERだけでなく「議事録を人が直す時間がどれだけ減るか」を測るとよい。

‍

‍

ローカル処理とプライバシー

機密会議では、音声そのものが重要情報になる。

ローカルDiarizationとローカルASRを組み合わせれば、音声を外部APIへ送らずに処理できる構成を作れる。

‍

ただし「ローカルだからプライバシー問題がなくなる」わけではない。

録音ファイルの保存場所、アクセス権、バックアップ、削除期限、モデルが生成した議事録の共有範囲まで設計する必要がある。

‍

クラウドストレージへ自動同期するPCなら、処理自体がローカルでも録音ファイルが外部へアップロードされる可能性がある。

‍

‍

商用利用・録音同意の注意点

モデルの利用条件は使用するチェックポイントごとに確認する。

NVIDIAのモデルカードに記載されたライセンスだけでなく、NeMo、ASR、周辺ライブラリのライセンスも企業利用では記録しておきたい。

‍

会議録音では技術的に録音できることと、録音してよいことは別問題だ。

社内規程、就業規則、取引先との秘密保持、個人情報の扱いを確認し、必要に応じて参加者へ録音・AI処理を伝える。

‍

特に顧客相談、採用面接、医療・金融などセンシティブな情報を含む場面では保存期間と利用目的を明確にすることが重要になる。

NVIDIAのSpeaker Diarizationを使うと、Whisperだけでは不足しがちな「誰が話したか」を会議音声へ追加できる。

‍

文字起こしと話者分離を別工程として考えることが、最初のポイントだ。

‍

Nemotron 3 Diarizationは最大8話者に対応し、録音ファイルの処理とストリーミング推論に利用できます。

‍

旧Sortformerの4話者モデルや、それを利用したVoice Agentの仕様とは区別してください。

‍

参加人数だけでなく、同時発話や録音環境を含めて精度を確認しましょう。

‍

ローカル処理の価値は、音声を外へ出さず議事録を作れることにある。

‍

まず実際の会議音声で話者精度と処理速度を測り、その後Whisperなどと統合する方が失敗しにくい。

他の記事も読む

X account logo
Xアカウントをフォロー!
最新の情報をいち早くゲット!
フォローする
back to article page
記事一覧に戻る
シェア
share link icon
‍無料会員登録
支持投票やブックマークなど、すべての機能にアクセスできます。
登録はほんの数秒で完了します!
無料会員登録
ログイン