ローカル音声認識・音声合成

LocalAI 4.11で会議録音の話者名と周囲の音を確認する

会議録音に話者名を付け、同じ音声から文字起こしと周囲の音も確認します

LocalAI 4.11はオープンソースのローカルAIサーバーです。会議録音を送ると発話区間と文字起こしを取得でき、話者区間を聞いて名前を保存すると次の録音で再表示できます。音響シーンモデルは咳や拍手など発話以外のイベントと時刻も返します。

実行条件と要点
  • diarizationは誰がいつ話したかを区切り、ASRはその発話を文字にします。
  • Studioで話者の音声をプレビューし、名前を付けて保存を確定すると、次の録音で再利用できます。
  • 音イベントには、咳や拍手など発話以外の音のラベルと時間区間が含まれます。
  • 保存した声は再起動時に消え、同じLocalAIインスタンスのユーザー間で共有されます。

会議録音から文字・話者・周囲の音をそれぞれ取得します

LocalAI 4.11のdiarization1は発話の開始・終了を区切り、声ごとにSPEAKER_00のような仮ラベルを付けます。ASR2を併用すると、各区間に文字起こしも含まれます。

音イベント分析は文字起こしとは別の役割です。同じ録音から、咳や拍手などの音の種類と発生区間を取得できます。誰が何を話したかだけでなく、発表中に拍手が起きた時刻や周囲で警告音が鳴った時刻を探す際に使えます。

話者名は参加者名簿から自動で取り込まれません。音声区間を聞いて名前を保存すると、次の録音で同じ声にその名前を表示できます。モデルの初回インストールでは重みのダウンロードにインターネット接続が必要です。

中央にマイクが置かれ、4脚の椅子に囲まれた木製の会議テーブル
議事録を確認するには、文字起こしと各発話の時刻を併せて見られると便利です。

Studioで短い録音を使って話者を確認します

LocalAI 4.11以降を起動し、Models → Exploreでparakeet-cpp-nemotron-3-diarization-asr-speakersを検索してインストールします。このギャラリー項目には文字起こし、話者区間、話者認識に必要なモデルが含まれます。インストールが止まったり失敗したりした場合は、Operate → Activityで進行状況とエラーを確認してください。

参加者から音声プロファイルの準備・登録への同意を得てから、Studio → Diarizationで導入したモデルと短い録音を選びます。文字起こしも読む場合は、初回テストからPrepare speakers to rememberを有効にしてDiarizeを押します。この設定が文字起こしと話者プロファイルを同時に要求します。まず匿名の話者ラベルと発言を読み、名前の登録は次の段階で行います。

結果が出たら文字起こしを一文ずつ読み、話者ラベルが切り替わる箇所や発話が重なる箇所を録音で聞き直します。議事録に担当者や決定根拠を記録する前に該当箇所を再生してラベルを確認し、曖昧な場合は名前を付けず確認対象として残します。

プレビューして名前を保存し、次の録音で再利用します

前の手順で結果が出たら、Speakersで登録する人のPreviewを再生します。本人の声が明瞭な区間を選び、Name and rememberから名前を入力してRememberを押します。サーバーが登録を確認すると、その人の発言に名前が表示されます。

発話が短すぎたり他の人と重なったりしてプレビューが不明瞭な場合は、名前を保存しにくいことがあります。より長く明瞭に話した区間を含む録音でやり直してください。名前が表示された後も重要な発言は録音と照合してください。

次の録音でも同じ話者認識対応モデルを選びます。保存した声が見つかると、匿名ラベルの代わりに保存した名前を表示できます。

3色の音声トラックを表示したノートPCとヘッドホン、携帯録音機
タイムラインで、重なった発話の開始と終了を探します。

周囲の音も確認するには音響シーンモデルを選びます

話者名の保存に使うモデルと、周囲の音イベントも返すモデルはギャラリー内で別の名前です。発話と咳・拍手などのイベントを同時に確認するには、parakeet-cpp-multilingual-diarization-speakers-soundsをインストールします。このモデルはオフライン録音向けで、文字起こし、話者区間、保存済みの声の照合、音イベントをまとめて扱います。

LocalAIを起動し音響シーンモデルの導入が終わったら、meeting.wavのあるフォルダーで新しいターミナルを開きます。別のファイルならfile=@meeting.wavの名前を変えます。/v1/audio/diarizationへ送り、include_text・include_speaker_profiles・include_soundsを有効にし、response_format=verbose_jsonを指定します。

会議WAVから文字起こし・話者・音イベントを取得
curl http://localhost:8080/v1/audio/diarization -F model=parakeet-cpp-multilingual-diarization-speakers-sounds -F file=@meeting.wav -F include_text=true -F include_speaker_profiles=true -F include_sounds=true -F response_format=verbose_json

応答のsegmentsには発話時間と文字起こし、soundsには非音声イベントのラベルと時刻が入ります。該当区間を録音で再生し、議事録に必要な出来事か判断できます。音イベントは標準のjsonとverbose_jsonで返せますが、rttmには該当フィールドがありません。

ファイルを読めない場合はターミナルの現在のフォルダーとファイル名を確認します。HTTP 501とinclude_sounds_unsupportedなら、選んだモデルが音イベントに対応しているか確認します。音の分析が必要ならparakeet-cpp-multilingual-diarization-speakers-soundsを選び、サーバーのモデル読み込みエラーも確認します。

保存範囲とサーバーの稼働状態を確認します

保存した声は現在、サーバーを再起動すると失われます。同じLocalAIインスタンスを使う利用者間では登録情報も共有されます。登録対象・利用権限・録音の保存方針を運用者と決めて利用します。

Operate → This machineではVRAM3・RAM4・CPU5・モデル用ディスクの使用量と、ロード済みモデルのプロセスを確認できます。モデルが表示されない場合やロード後にメモリが不足する場合は、この画面でプロセスと資源使用量を調べてください。CPUの初回測定は計算に必要な情報が集まるまでMeasuring…と表示されることがあります。

Failoverは設定した順序と条件に従って、リクエストを別のモデル対象へルーティングします。チェーンに別のLocalAIサーバーやリモート対象があると、録音やリクエストデータが送信されることがあります。デプロイ設定の対象を確認し、音声を外部へ送れない場合はリモート経路を外します。

小型デスクトップPCと音声トラック画面、白紙のノート、ヘッドホンが置かれた机
録音のタイムラインで発話時点を見つけ、文字起こしと照合します。

用語の注釈

  1. 話者ダイアリゼーション — 録音を「誰がいつ話したか」の区間に分け、話者ごとにラベル付けする処理です。

    本文に戻る
  2. 自動音声認識 — 音声中の発話を認識してテキストに変換する技術です。

    本文に戻る
  3. VRAM — グラフィックカードのGPUが使うメモリです。モデルの重みや計算途中の値を保存します。

    本文に戻る
  4. システムRAM — プログラムの実行中にデータを一時保存するシステムメモリです。

    本文に戻る
  5. CPU — OSや一般的なプログラム命令を実行する中央処理装置です。AIでは前処理やデータ転送などの汎用処理も担います。

    本文に戻る

よくある質問

この記事で最初に確認すべきことは何ですか?
LocalAI 4.11はオープンソースのローカルAIサーバーです。会議録音を送ると発話区間と文字起こしを取得でき、話者区間を聞いて名前を保存すると次の録音で再表示できます。音響シーンモデルは咳や拍手など発話以外のイベントと時刻も返します。
必要なメモリはどのくらいですか?
Operate → This machineではVRAM・RAM・CPU・モデル用ディスクの使用量と、ロード済みモデルのプロセスを確認できます。モデルが表示されない場合やロード後にメモリが不足する場合は、この画面でプロセスと資源使用量を調べてください。CPUの初回測定は計算に必要な情報が集まるまでMeasuring…と表示されることがあります。