- すべての処理を オンデバイスで実行するリアルタイム音声認識フレームワーク
- ストリーミングベースのモデル構造 により、ユーザーが話している間にもリアルタイムでテキストを生成し、Whisper Large v3より低い誤り率(WER 6.65%) を達成
- Python, iOS, Android, MacOS, Linux, Windows, Raspberry Pi など多様なプラットフォームで同一APIで動作し、C++コアとOnnxRuntime をベースに最適化
- 言語別モデル(英語、日本語、中国語、スペイン語など) と コマンド認識(Intent Recognition) 機能を含み、開発者が手軽に音声インターフェースを構築可能
- Whisperの30秒固定入力・キャッシュ不在・言語精度の限界 を改善し、エッジ環境での低遅延音声インターフェース実装 に適した代替として注目
Moonshine Voice 概要
- Moonshine Voiceは リアルタイム音声アプリケーション開発向けのオープンソースAIツールキット
- すべての演算が ローカルデバイスで実行 されるため、高速な応答とプライバシー保護を実現
- ストリーミング処理 により、ユーザーが話している途中でもテキスト更新が可能
- モデルは独自研究に基づく ゼロから学習された構造 で、Whisper Large v3より高い精度 を提供
- 26MBの超小型モデルから245Mパラメータの中型モデルまで 多様なサイズを提供
- 英語、日本語、中国語、スペイン語、ベトナム語、アラビア語、ウクライナ語 など多言語をサポート
Whisperに対する主な改善点
- Whisperの 30秒固定入力ウィンドウ をなくし、可変長入力 をサポート
- キャッシュ機能 を追加してストリーミング中の重複演算を減らし、遅延(latency)を大幅に短縮
- 言語別の単一モデル学習 により、同じサイズ比でより高い精度を確保
- クロスプラットフォームC++コアライブラリ により、Python、Swift、Javaなどで同一APIを利用可能
- Whisper Large v3(1.5Bパラメータ) より小さい 245Mパラメータモデル で、より低い誤り率を達成
主な機能とAPI構造
- 音声認識パイプラインを単一ライブラリに統合し、マイク入力、音声検出(VAD)、テキスト変換、話者識別、コマンド認識 を一括処理
- 主要クラス:
- Transcriber: 音声入力をテキストに変換
- MicTranscriber: マイク入力を自動処理
- IntentRecognizer: 自然言語ベースのコマンド認識
- イベントベース構造で、LineStarted / LineUpdated / LineCompleted などの状態変化をリアルタイムで検知
モデルと性能
- Moonshine Medium Streaming (245M): WER 6.65%、Whisper Large v3(7.44%)より優秀
- Moonshine Small Streaming (123M): WER 7.84%
- Moonshine Tiny Streaming (34M): WER 12.00%
- 日本語Tinyモデル はWER 6.46%と評価
- すべてのモデルは OnnxRuntimeベースの .ort フォーマット で提供され、8ビット量子化 により軽量化
開発とデプロイ
- Python (pip install moonshine-voice)、Swift (SPM)、Android (Maven)、Windows (C++ヘッダー) など主要環境でインストール可能
- Raspberry Pi最適化パッケージ を提供し、USBマイクでリアルタイム認識が可能
- MITライセンス(英語モデル)および Moonshine Community License(その他言語モデル)で公開
- 今後のロードマップ: モバイル向けバイナリの軽量化、追加言語、改善された話者識別、ドメインカスタマイズ
ベンチマークと活用
- Whisper比で5倍以上高速な処理速度 により、リアルタイム音声インターフェースに適合
- 200ms以下の応答遅延を目標 に設計されており、対話型アプリケーションに活用可能
- コマンド認識の例 により、“Turn on the lights” など自然言語の言い換えコマンドも認識可能
- HuggingFace OpenASR Leaderboard で公開性能の検証を完了
1件のコメント
Hacker Newsの意見
OpenASR Leaderboardによると、Parakeet V2/V3とCanary-Qwen(Qwenのファインチューニング版)はMoonshineより性能が高い
3つのモデルはいずれもオープンソースだが、Parakeetが最も小さいモデルである
私はParakeet V3をHandyと一緒にローカルで使っているが、とてもよく動く
だから単純比較は難しいと思う
リーダーボードにモデルサイズ情報がないのは意外だ
この文章も今Handyで話しながら書いている
句読点の自動処理も完璧で、ローカルで音声をそのままテキストに変換してくれるのでGoogle Docsよりずっと便利だ
以前はChromeベースで音声入力を使おうとしてOrionブラウザまで入れたが、今はHandyひとつで十分だ
タイピング速度は100〜120WPMだったが、これはそれより速い
まさにQOL向上ツールだ
macOSでcodex-cliとHandyを一緒に使うと、デフォルトのショートカット(Option+Space)が発話中に空白を入れてしまう問題がある
代わりにLeft Ctrl + Fnの組み合わせはきれいに動作する
他の人がどんなショートカットを使っているのか気になる
実際に使ってみると本当に素晴らしい
これからはすべてのクライアント作業で標準アプリとして使う予定だ
結果おめでとう
個人的にはストリーミング機能がいちばん興味深い
私はVoxtral RealtimeベースでmacOS向けのディクテーションアプリLocalVoxtralを作ったが、ストリーミングとオフラインSTTのUX差は非常に大きい
話している途中で単語がすぐ表示されると、フィードバックループがまったく変わる
リアルタイムで誤りを見つけて文を修正できるので、はるかに自然だ
Moonshineの**ストリーミング遅延(latency)**が実際どの程度なのか気になる
また、OpenAI Realtimeと互換性のあるWebSocketエンドポイントがあるのかも知りたい
Moonshineをデフォルトにしている理由は、精度と遅延時間のバランスが最も良いからだ
今後は複数モデルを同じ音声データで比較する客観的ベンチマークを追加する予定だ
また、Sherpa-onnx APIを参考に作ったカスタムWebSocketサーバー(rift-local)もある
単一接続に最適化されているため、多重接続には向いていない
複数のTwitchストリーマーがobs-localvocalを通じてストリームに文字起こしと翻訳機能を追加できるよう手伝ってきた
主な用途はドイツ語音声を英語字幕に変えることだった
Whisperより速く正確な代替が必要だが、ストリーマーはインストール型のOBSプラグイン形式を好む
Moonshineには翻訳機能がなく、多言語自動検出もサポートしていないため、コードスイッチングが多いストリーマーには限界がある
言語を自動検出してモデルを切り替える機能があれば理想的だと思う
Whisper Large v3より高い精度を主張するのは大胆な試みだ
評価時にWhisperの**幻覚ループ(hallucination loop)**問題を考慮したのか気になる
また、エッジデバイス展開時にVRAM使用量が8GB Macに収まるのかも知りたい
量子化なしで動くならかなり大きな意味がある
ストリーミング環境では単純なWERより**部分安定性(partial stability)**のほうが重要だ
音声アシスタントでは、部分文字起こしが数百msごとに変わるとUXが台無しになる
初回トークン遅延、リアルタイム比率、1秒後/3秒後に修正されたトークン比率のような指標があれば、比較はずっと実用的になると思う
こうした数値が良ければ、ローカルアシスタントのパイプラインに非常に有望だ
私も話しながら自分でさかのぼって解釈し直すことがあるが、無意識にもよく起きている気がする
だとすれば、この比率は低すぎる必要はないのかもしれない
現在の対応言語は英語、アラビア語、日本語、韓国語、中国語、スペイン語、ウクライナ語、ベトナム語で、ほとんどが**Base(58Mパラメータ)**サイズだ
Raspberry Piのインストールガイドで
'sudo pip install --break-system-packages moonshine-voice'を推奨している理由が分からないただし、ドキュメントではuvを使う代替案も示している
uv runを使えば別途sourceコマンドを実行する必要がない
「精度向上」が英語基準なのか、多言語基準なのかが不明だ
言語別のWER表が最低限提供されるべきで、それがあって初めて比較できる
ブラウザでのJavaScript対応計画があるのか気になる
以前はデモがあったが、今は消えている
ローカルで動いていた時期もあったが、いつの間にか理由もなく壊れてしまった
また、ブラウザ内オフライン文字起こしソリューションをまとめた比較ドキュメントもある
transformers.js(WebGPU使用、WASMフォールバック)ベースの別のMoonshineデモも存在する
ブラウザGUIでMoonshineを試すには、以下のコマンドを実行すればよい
これにより、ローカル文字起こし用WebフロントエンドRIFTが開き、コピーボタンも使える
Web Speech APIや他のモデル(クラウドAPIを含む)との比較も可能だ
関連リンク: rift-local, RIFTデモ