Article

Foundry LocalとC#でライブ音声文字起こしを動かす

Microsoft の .NET Blog は、Foundry Local と C# でマイク音声をリアルタイムに文字起こしするサンプルを紹介しました。チャット用途だけでなく、ローカル実行の音声認識モデルをアプリに組み込む流れが見えてきます。

Share

こはるの読みどころ

モデルの取得、ロード、ライブセッション、マイク入力の流し込みまでが一つの C# サンプルにまとまっています。Windows 前提や SDK/ドキュメント間の対象 .NET バージョン差分は、試す前に見ておきたいところです。

こはるの読みどころ

Foundry LocalとC#でライブ音声文字起こしを実装

Microsoft の .NET Blog は 2026年8月4日、Foundry Local と C# を使ってマイク音声をリアルタイムに文字起こしするサンプル記事を公開しました。中心になるのは、Microsoft.AI.Foundry.Local.WinMLNAudio、そして Foundry Local カタログの nemotron-speech-streaming-en-0.6b を使う小さなコンソールアプリです。

一次ソースによると、このアプリは Foundry Local を初期化し、音声モデルを解決してダウンロードとロードを行い、ライブ転写セッションへ 16kHz・16bit・モノラルの PCM 音声を流します。結果は話している途中の interim result と、発話区切り後の final result として受け取る構成です。チャットだけではないローカル AI の使い道が、かなり具体的に見える内容ですね。

背景として、Microsoft Learn の Foundry Local の説明では、Foundry Local はローカルデバイス上で AI を実行するための SDK、モデルカタログ、ハードウェアアクセラレーションを含む仕組みだと説明されています。クラウド AI リソースや Azure サブスクリプションなしで動かせる点は、音声データを外へ出したくない用途では読みどころになります。

Microsoft.Extensions.AIではなくFoundry Local SDKの音声機能を使う

一次ソースは、以前のローカルチャット例では Microsoft.Extensions.AIIChatClient を使っていた一方、今回のライブ音声文字起こしでは Foundry Local SDK のネイティブな AudioClient を使う、と切り分けています。理由はシンプルで、ライブ転写セッション、raw PCM streaming、途中結果の受信が Foundry Local 固有の機能だからです。

この整理は .NET AI アプリの設計にも役立ちます。.NET + AI ecosystem tools and SDKs では、Microsoft.Extensions.AI は AI サービスとやり取りするための C# 抽象化レイヤーだと説明されています。つまり、共通化できるチャットや埋め込みは抽象化へ寄せ、プロバイダー固有の音声ストリーミングは SDK を直接使う、という住み分けです。

koharu tone="note" portrait="characters/deformed/thinking.webp" 抽象化に乗せられるところと、SDK 固有機能を使うところを分けて読むと分かりやすいね。音声のライブ処理は、無理に共通 API へ寄せない判断も大事だよ。

Nemotron 0.6Bモデルをカタログから取得してローカルで動かす

一次ソースのサンプルでは、catalog.GetModelAsync("nemotron-speech-streaming-en-0.6b") で英語向けのストリーミング ASR モデルを取得します。モデルはアプリが個別に Hugging Face などから直接落とすのではなく、Foundry Local のカタログから解決し、model.DownloadAsync()model.LoadAsync() を通して扱います。

Microsoft Learn の Foundry Local SDK reference も、SDK が C#、JavaScript、Python、Rust の実装を持ち、モデル取得、ハードウェア検出、実行プロバイダー管理などを扱うと説明しています。特に Windows 向けには Microsoft.AI.Foundry.Local.WinML、それ以外には Microsoft.AI.Foundry.Local というパッケージの使い分けが示されています。

NuGet の Microsoft.AI.Foundry.Local.WinML ページでは、2026年8月時点で 1.2.4 が表示され、.NET 8.0 以上との互換性や、モデルカタログ、ライフサイクル管理、音声文字起こし、WinML アクセラレーションなどの機能が説明されています。一次ソースのサンプルを試すときは、ブログ本文だけでなく現在のパッケージ情報も確認しておくと安心です。

マイク入力は16kHz PCMとしてセッションへ流す

ライブ転写の要点は、完了済み音声ファイルを一括で渡すのではなく、開いたセッションへ音声チャンクを継続的に追加するところです。一次ソースでは CreateLiveTranscriptionSession() でセッションを作り、SampleRate = 16000Channels = 1Language = "en" を設定してから開始しています。

Microsoft Learn の Live transcribe audio from a microphone with Foundry Local でも、マイク音声をローカル音声モデルへストリーミングし、リアルタイムに結果を受け取る流れが示されています。同ページでは C# の前提として .NET 9.0 SDK 以降とマイクが挙げられ、Windows パッケージでは Windows ML ランタイムを使うことも説明されています。

実装上の細部として、一次ソースは NAudio の同期コールバックから session.AppendAsync() を直接乱発しないために、bounded channel へ音声チャンクを積み、専用タスクで SDK へ送る構成を紹介しています。音声入力は止まらず流れてくるので、バックプレッシャーとメモリ増加を意識した形にしている、と分かります。

Windows前提とサンプル差分を導入前に見ておく

一次ソースは、この C# サンプルを Windows-only と明記しています。理由は、Microsoft.AI.Foundry.Local.WinML が Windows ML を対象にしており、NAudio.WaveInEvent が Windows の音声 API を使うためです。Foundry Local 自体は Microsoft Learn 上で Windows、Apple silicon の macOS、Linux をサポートすると説明されていますが、このブログ記事の実装そのものは Windows 前提として読むのが安全です。

また、参照先のサンプル情報には少し差があります。一次ソースは complete sample が .NET 10 を対象とすると述べていますが、Microsoft Learn のライブ転写ページは .NET 9.0 SDK 以降を前提にし、公式 GitHub の 11-foundrylocal-live-transcription README は .NET SDK 8.0+ と net8.0-windows10.0.18362 を示しています。実際に動かす段階では、ブログ本文、README、.csproj、インストールする NuGet バージョンをそろえて見るのがよさそうです。

用途としては、一次ソースが挙げるライブキャプション、会議メモ、音声操作デスクトップアプリ、アクセシビリティツール、接続が限られるエッジ環境が分かりやすい例です。クラウドの大規模モデルや集中管理を置き換える話ではなく、ローカルで完結させたい音声処理の選択肢が増えた、と捉えるのがちょうどよいですね。

出典

Share

Related Articles

カテゴリやタグが近い記事を続けて読めるように並べています。