Whisperを使ったC#の音声認識アプリ開発
はじめに
ネクスタの tetsu.k です。
生産管理システム「SmartF」の開発に携わっています。
今回は、C#で音声を扱う方法を調べてみました。
主に以下の処理を、手元で環境構築してやってみた感じです。
- 音声入力
- 音声認識
- 文字起こし
作ったもの
「文字起こしアプリ」を作りました。

フレームワークは Windows Formsです。
デザインは適当です。
モデル取得以外は、オフラインで動きます。
録音にはNAudioを使用。
これを使ってマイクとPC音の両方を試すと、問題なくキャプチャできました。
録音された音声ファイルはwavとしてセットされます。
次に、音声認識。
OpenAIの開発したWhisperのOSS版を使いました。
Whisper.cppを.NETで扱えるようにしたWhisper.netです。
アプリ上でモデルを選べるようにしています。
モデルを選ぶとHugging Faceからモデルを取得します。
Whisperには複数のモデルがあり、精度と速度がトレードオフの関係になっています。
| モデル | サイズ | 速度 | 精度 | 用途 |
|---|---|---|---|---|
| Tiny | 75MB | ★★★★★ | ★☆☆☆☆ | デモ・リアルタイム処理 |
| Base | 142MB | ★★★★☆ | ★★☆☆☆ | バランス型(推奨) |
| Small | 466MB | ★★★☆☆ | ★★★☆☆ | 高精度が必要な場合 |
| Medium | 1.5GB | ★★☆☆☆ | ★★★★☆ | より高精度 |
| Large V3 | 2.9GB | ★☆☆☆☆ | ★★★★★ | 最高精度 |
| Large V3 Turbo | 1.6GB | ★★☆☆☆ | ★★★★★ | 最新・高精度・高速 |
今回はLarge V3 Turboで試しました。
文字起こし実行ボタンを押すと、音声がテキストに変換されます。
実際に文字起こししてみた
自社プロダクト「SmartF」の紹介動画(2分20秒)を文字起こししてみました。
文字起こし条件:
- モデル: LargeV3Turbo(最新の高速大型モデル)
- 言語: 日本語(ja)
- 音声長さ: 2分20秒
文字起こし結果(全文)
00:01.00 - 00:05.32
スモールスタートできる生産管理システムスマートF
00:05.32 - 00:12.18
日々の生産現場ではたくさんの手書き帳表やエクセル管理など
00:12.18 - 00:15.54
多くの煩雑で非効率な作業があります
00:15.54 - 00:22.22
仕入れ部品の在庫や工程進捗、人や設備の負荷率などがわからず
00:22.22 - 00:25.04
生産計画や発注業務を大変
00:26.98 - 00:30.98
二重入力や都度現場に確認などの無駄な作業や
00:30.98 - 00:36.98
熟練社員の経験による俗人的な業務もたくさんあります
00:36.98 - 00:40.38
スマートFを導入すると
00:40.38 - 00:47.28
今まで手書きで書いていた作業日報をバーコードを活用して現場で簡単入力したり
00:47.28 - 00:53.96
仕入れ部品や製品もバーコードで簡単に入出庫記録を行います
00:53.96 - 00:58.96
これにより工程進捗や在庫管理、負荷率などが見える化され
00:58.96 - 01:03.96
簡単に最適な生産計画や発注業務が可能になります
01:03.96 - 01:08.96
また、各工程の検査結果や設備データなども
01:08.96 - 01:11.96
端末やセンサを使ってデータ化し
01:11.96 - 01:15.96
トレーサビリティや設備稼働監視なども可能になります
01:15.96 - 01:20.96
バーコードやハンディ端末などを利用して
01:20.96 - 01:25.96
現場のあらゆるデータを手間なくスマートFへ集約
01:25.96 - 01:28.96
現場の手書き帳表やExcel管理など
01:28.96 - 01:31.96
多くの無駄やミスなどを減らせると同時に
01:31.96 - 01:34.96
俗人的な業務も解消できます
01:34.96 - 01:39.96
さらに、スマートFで集約したデータで現場の見える化をすると
01:39.96 - 01:44.96
改善すべきポイントが一目瞭然
01:44.96 - 01:48.96
社内の無駄を減らした時間を改善の取り組みの時間に使い
01:48.96 - 01:50.96
それを継続することで
01:50.96 - 01:56.96
生産効率や品質を大きく向上させていくことが可能です
01:56.96 - 01:59.96
スマートFには10の機能があり
01:59.96 - 02:02.96
必要な機能だけを選んで導入が可能
02:02.96 - 02:07.96
後から徐々に機能を追加していくことができるので
02:07.96 - 02:10.96
スモールスタートでシステム導入ができます
02:10.96 - 02:12.96
うまく運用できるまで
02:12.96 - 02:16.96
しっかりと導入サポートを行います
02:16.96 - 02:19.96
ものづくりをスマートに!
02:19.96 - 02:20.96
NEXT
Largeモデルの変換結果は、多少の誤字はあれど高精度でした。
ネクスタがNEXTになっているくらいで、ほぼ正確に文字起こしできています。
わちゃわちゃした雑談の音声が正しく認識できるかは、今後検証してみたいですね。
音声コマンドの検証
最後に、音声入力コマンドを検証してみました。
予め定義されたワードをトリガーに、ダイアログを表示できるか試しました。
私: 「ポップアップを開いて」
検証結果(モデル: Base):

全然伝わっていない…😂
この後、Smallモデルに変更したところ成功しました。
あまり大きなモデルだと処理時間も掛かるので、モデル選定が重要になりそうです。
感想
音声関連の実装は、AI任せで素直に動きました。
Nugetライブラリが充実していて、ありがたいですね。
モデルの使い分けには、もう少し検討が必要そうです。
現状、こんな感じです。
- 文字起こし:Large以上。時間かかるが精度優先
- 音声コマンド:small以上。時間と精度のバランスが求められる
実用面では、色々と活用の幅がありそうです。
- 音声で日報作成
- 業務アプリで音声コマンド入力機能(ハンズフリー操作)
- 自分のPCを音声で操ってみる
等々。
リアルタイム文字起こしや複数人の会話など、まだ試せていない部分もあるので、
時間を見つけて検証してみます。
Discussion