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

FluidAudioとは?Macで文字起こし・話者分離・音声生成

文字起こし、話者分離、音声生成から必要な機能をMacアプリに組み込めます。

FluidAudioはApple機器で音声モデルを実行するSwift SDKです。ASR1、話者分離2、TTS3をローカルアプリへ組み込めます。対応言語とモデルを選び、必要な機能1つから実行してください。

まず短い録音から必要な結果を決めます。発言を読むならASR、誰がいつ話したか分けるなら話者分離です。機能ごとにモデルと言語対応があるので、実際の音声と言語を基準に選びます。 FluidAudio

対応言語を選んでから文字起こしする

FluidAudioの標準Parakeet v3は欧州の25言語に対応し、v2は英語用です。韓国語の文字起こしは多言語WhisperKitモデルから始められます。使う言語がモデルの対応一覧に含まれることを先に確認してください。音声モデル一覧

Apple Silicon搭載MacとXcodeのSwift環境を用意し、以下のCLI4を使うならソースのPackage.swiftに合うツール版を選びます。短い英語のaudio.wavをリポジトリのフォルダーへ置き、まず文字起こしだけ実行してください。初回はモデルの取得と準備が入ります。

英語の録音でASRを開始
git clone --depth 1 https://github.com/FluidInference/FluidAudio.git
cd FluidAudio
swift run fluidaudiocli transcribe ./audio.wav
小型デスクトップの横に録音機とノートが置かれた机
文字起こしモデルを録音の言語に合わせます。

FluidAudioのANE経路とモデル別の言語一覧を確認する

FluidAudio の README は Apple デバイスでローカル推論を ANE5 にオフロード6する方法を説明しています。ASR の対応言語はモデルごとに異なります。Parakeet の一部モデルは欧州 25 言語と日本語に対応し、Parakeet EOU は英語のリアルタイム文字起こし用です。

TTS も対応言語はモデルによって異なります。使用するモデルの表で、対応言語とリアルタイム処理への対応を確認します。FluidAudio 公式 README · API ドキュメント

話者分離で発言時間を分ける

話者分離は録音で同じ人が話した区間をまとめ、話者IDを付けます。そのIDを実際の参加者名に対応させ、ASRの文字起こしと時間区間を合わせると、誰が何を話したか読める議事録を作れます。

録音済みの会議で話者を分けるには、offlineモードから試します。次のコマンドはaudio.wavから話者ごとの発言時間を探します。発話が重なる部分や声が似た人の区間が正しく分かれているか、原音と比べてください。CLI案内

話者分離
swift run fluidaudiocli process ./audio.wav --mode offline --threshold 0.6

文字を読み上げる音声も作れる

TTSは原稿を音声へ変える機能です。FluidAudioではKokoro、PocketTTSなどの経路を選べます。以下はKokoro ANE v3で短い英語案内をen.wavへ保存する例です。v3はmacOS 15以降でCPU7・ANE・GPU8を分担する固定経路を使います。

英語の案内をWAVへ保存
swift run -c release fluidaudiocli tts "The meeting starts at four." \
  --backend kokoro-ane --kokoro-version v3 --voice af_heart --output en.wav

完了したら作業フォルダーのen.wavを再生します。声と発音を聞き、言語に合うvariantとvoiceを選んでください。日本語の例は--variant ja --voice jf_alphaです。他言語の原稿でも、先にその言語のモデルと声を合わせます。

ノートPC、マイク、ノートが置かれた会議テーブル
話者区間と文字起こしを時刻で結び付けます。

音声アシスタントの待機を段階別に測る

音声アシスタントはVAD9で発話区間を探し、ASRで文字に変え、LLM10が回答を作ってTTSが読み上げます。VAD・ASR・LLM・TTSにかかる時間を分けて記録すると、応答が遅れる段階を見つけやすくなります。

ファイル処理は全体の完了時間、会話は発話終了から最初の回答音声までを記録します。実際のアプリを同時に動かし、GPUのLLMと音声経路の資源共有も含めて比べます。モデル準備を含む初回は分け、複数の文で認識と発音を確認してください。

必要な機能だけアプリへ組み込む

CLIの結果が合ったらSwift Package ManagerでFluidAudioを追加し、必要なマネージャーを呼び出します。繰り返し使うモデルは読み込み済み状態を保ち、準備とユーザー要求を分けて処理中の再取得を避けます。

オフライン専用アプリはモデルを事前に配置し、ModelHub.offlineMode = trueを設定します。必要なファイルが不足するとエラーになるため、配布するアプリが使うモデルフォルダーをそのまま接続し、実際の依頼まで試してください。必要な言語の文字起こしが最後まで成功してから、話者分離やTTSを一つずつ追加すると問題を見つけやすくなります。

マイクと2つの音声波形を表示するノートPCが置かれた机
生成した音声ファイルで発音を確認し、音声生成にかかった時間は別に記録します。

用語の注釈

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

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

    本文に戻る
  3. 音声合成 — テキストを発音や韻律を伴う音声信号に変換する技術です。

    本文に戻る
  4. CLI — Command-Line Interfaceの略です。ターミナルにコマンドを入力してプログラムを操作する方式です。

    本文に戻る
  5. Neural Engine — Apple Siliconに搭載されたニューラルネットワーク計算用の専用装置です。

    本文に戻る
  6. オフロード — 容量が足りないとき、モデルデータの一部をGPUメモリからシステムRAMやストレージへ移して処理する方法です。データ転送が追加されます。

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

    本文に戻る
  8. GPU — 多くの計算を並列に処理するプロセッサーです。AIモデルの実行ではモデル計算を担います。

    本文に戻る
  9. 音声区間検出 — 信号のどの区間に音声が含まれるかを検出する処理です。

    本文に戻る
  10. 大規模言語モデル — 大量のテキストデータから言語パターンを学び、文脈に沿ったテキストを処理・生成するモデルです。

    本文に戻る

よくある質問

この記事で最初に確認すべきことは何ですか?
FluidAudioはApple機器で音声モデルを実行するSwift SDKです。ASR、話者分離、TTSをローカルアプリへ組み込めます。対応言語とモデルを選び、必要な機能1つから実行してください。