
2026/02/25 6:54
**Show HN:** 「Moonshine Open-Weights STTモデル – Whisper Large v3より高い精度」
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Moonshine Voice は、開発者がデバイス上で完全にリアルタイム音声アプリケーションを構築できるオープンソースAIツールキットです。APIキーやクラウド呼び出しは不要です。
低レイテンシのストリーミング文字起こし、話者分離(ディアライゼーション)、および意図認識を提供し、多くのベンチマークで Whisper Large v3 を上回る精度を実現します。コアは C++ で書かれ、ONNX Runtime を介して動作するため、PC、Mac、Raspberry Pi、IoT ボードだけでなく、モバイル(iOS/Swift、Android/Kotlin)および Windows/MacOS クライアントでも効率的に稼働します。
モデルは複数のサイズで提供されます:Tiny (26 M)、Base (58 M)、Small Streaming (123 M)、Medium Streaming (245 M)。言語別モデルとして、アラビア語、日本語、韓国語、中国語(簡体字)、スペイン語、ウクライナ語、ベトナム語、および基本英語モデルがあり、合計で8つのサポート言語があります。WER は Spanish Base が 4.33 % から Whisper Tiny が 12.81 % の範囲です。Medium Streaming は WER 6.65 % を達成し、Whisper Large v3 の 7.44 % よりも優れています。
インストールは簡単です:
pip install moonshine-voice。他のプラットフォーム向けバイナリは GitHub Releases にあり、言語モデルは python -m moonshine_voice.download --language <lang> で必要に応じてダウンロードできます。高レベル API は Transcriber、MicTranscriber、および IntentRecognizer クラスを提供し、イベントリスナー(TranscriptEventListener)により開始・更新・完了・意図マッチのカスタム処理が可能です。高度なオプションとしては、固定 30 秒チャンクではない柔軟な入力ウィンドウ、ストリーミング用増分キャッシュ、VAD 閾値のカスタマイズ、およびトークンレート制限があります。モデルは 8 ビット量子化された重み/計算を使用し、safetensor チェックポイントは HuggingFace 上の Moonshine Community License の下に保存されています。コードは MIT ライセンスで提供され、非商用モデル配布も同じコミュニティライセンスに準拠します。
サポートは Discord および GitHub Issues で利用可能です。移植・加速・ドメインカスタマイズや言語追加の有料サービスも提供しています。クラウド依存を排除することで、Moonshine Voice は低レイテンシ、運用コスト削減、およびプライバシー強化を実現し、コンシューマデバイス、エンタープライズソリューション、IoT 展開に魅力的です。
本文
Moonshine Voice – すべての人に届く音声インターフェース
クイックスタート
| プラットフォーム | コマンド |
|---|---|
| Python | |
| iOS | https://github.com/moonshine-ai/moonshine/releases/latest/download/ios-examples.tar.gz をダウンロードし、解凍後 Xcode で Transcriber/Transcriber.xcodeproj を開く。 |
| Android | https://github.com/moonshine-ai/moonshine/releases/latest/download/android-examples.tar.gz をダウンロードし、解凍後 Android Studio で Transcriber フォルダーを開く。 |
| Linux | |
| macOS | https://github.com/moonshine-ai/moonshine/releases/latest/download/macos-examples.tar.gz をダウンロードし、解凍後 Xcode で MicTranscription/MicTranscription.xcodeproj を開く。 |
| Windows | https://github.com/moonshine-ai/moonshine/releases/latest/download/windows-examples.tar.gz をダウンロードし、解凍後 Visual Studio で cli-transcriber\cli-transcriber.vcxproj を開く。、 実行後 MSBuild でビルド。 |
| Raspberry Pi | |
Tip: Discord コミュニティに参加してリアルタイムサポートを受けましょう。
Whisper より Moonshine を選ぶべきケース
- ライブ音声 – Whisper の固定 30 秒ウィンドウは計算資源を浪費し、レイテンシが増加します。
- 低遅延 – Moonshine は話すと同時にストリーミングするため、多くのデバイスで応答時間を 200 ms 未満に抑えます。
- 多言語精度 – Arabic(5.63 %)、Japanese(13.62 %)など、Whisper より高い WER を実現しています。
- クロスプラットフォーム一貫性 – C++ コア + Python・Swift・Java・C++ 用ネイティブバインディングで統一。
モデルとベンチマーク
| モデル | WER | パラメータ数 | レイテンシ (ms) |
|---|---|---|---|
| Moonshine Medium Streaming | 6.65 % | 245 M | 107 |
| Whisper Large v3 | 7.44 % | 1.5 B | 11,286 |
| Moonshine Small Streaming | 7.84 % | 123 M | 73 |
| Whisper Small | 8.59 % | 244 M | 1940 |
| Moonshine Tiny Streaming | 12.00 % | 34 M | 34 |
ベンチマークは MacBook Pro、Linux x86、および Raspberry Pi 5 上で実施。
ライブラリ概要
コアクラス
– 音声→テキストパイプラインを管理します。Transcriber
– システムマイクに自動接続(Python では sounddevice を使用)。MicTranscriber
– 複数の音源を単一Stream
に入力します。Transcriber
– イベントコールバックのベースクラス (TranscriptEventListener
,on_line_started
等)。on_line_updated
– ファジーな文埋め込みマッチングでユーザー意図を検出。IntentRecognizer
データ構造
| 名前 | 説明 |
|---|---|
| テキスト、タイミング、話者 ID、音声データを持つ単一の発話セグメント。 |
| の順序付きリスト(各 でリセット)。 |
| イベントオブジェクト (, , , )。 |
| 意図が一致したときに発火:, , 。 |
Python での典型的な使用例
from moonshine_voice import Transcriber, MicTranscriber, TranscriptEventListener class Listener(TranscriptEventListener): def on_line_started(self, event): print(f"Line started: {event.line.text}") def on_line_text_changed(self, event): print(f"Updated: {event.line.text}") def on_line_completed(self, event): print(f"Done: {event.line.text}") transcriber = Transcriber(model_path="path/to/models", model_arch=1) listener = Listener() transcriber.add_listener(listener) # ライブマイク mic = MicTranscriber(transcriber) mic.start() # 音声が到着するとコールバックが呼び出される
設定オプション
| オプション | 用途 |
|---|---|
| デコーダーの無限ループを防止(デフォルト 6.5、非ラテン文字系では ~13 に増やす)。 |
| 音声活動検出感度(デフォルト 0.5)。 |
| VAD スコア平均のウィンドウ長(デフォルト 0.5 s)。 |
| デバッグ用に原音 16 kHz モノラル WAV を保存するディレクトリ。 |
, | 詳細なランタイムログを有効化。 |
意図認識
from moonshine_voice import IntentRecognizer, download_embedding_model emb_path, emb_arch = download_embedding_model() intent_recog = IntentRecognizer( model_path=emb_path, model_arch=emb_arch, threshold=0.7 # 精度/再現率のトレードオフを調整 ) def on_trigger(trigger, utterance, similarity): print(f"'{trigger}' が '{utterance}' ({similarity:.0%}) によって発火") intent_recog.register_intent("Turn on the lights", on_trigger) mic.add_listener(intent_recog) # MicTranscriber インスタンス
ソースからのビルド
cd core mkdir -p build && cd build cmake .. cmake --build .
単体テストは
(Linux/macOS)または scripts/run-core-tests.sh
(Windows)で実行。scripts/run-core-tests.bat
モデルダウンロード
python -m moonshine_voice.download --language en # もしくは "zh", "es" 等 # 任意: --model-arch <num> でアーキテクチャを指定
ダウンロードしたファイルは
$HOME/.cache/moonshine_voice/… にキャッシュされます。MOONSHINE_VOICE_CACHE 環境変数で保存場所を変更可能。
サポート & ロードマップ
- サポート – Discord、GitHub Issues で対応。商用ニーズには有料サポートも提供。
- ロードマップ – モバイルビナリサイズの削減、多言語拡充、追加ストリーミングモデル、話者 ID 改善、軽量ドメインカスタマイズ。
謝辞
Lambda, Stephen Balaban, ONNX Runtime コミュニティ, Silero VAD 開発者, DocTest C++ フレームワーク, UTF8‑CPP ライブラリ, Pyannote チーム等に感謝します。
ライセンス
コアコードは MIT License。
英語モデル: MIT; 他言語モデル: Moonshine Community(非商用)。
サードパーティ依存ライブラリはそれぞれのライセンスに準拠(
参照)。core/third-party