すべての記事

· Casimiro Ferreira· 1 分で読めます

オープン音声モデルを実際に動かす: エクスポートと量子化

  • ONNX
  • CoreML
  • GGUF
  • ASR
  • OVOS
  • OpenVoiceOS
  • Quantization
  • Open Source

研究用チェックポイントとして公開された音声認識モデルは、たいてい PyTorch の重みが入ったフォルダ一つ、学習スクリプト一つ、そしてどの GPU で学習したかというメモから成っています。それはベンチマークスコアを再現するには十分です。しかし、Raspberry Pi や携帯電話、インターネットのないノートパソコンに載せるには不十分です。一方から他方へ至る過程こそが変換作業であり、それこそがオープン音声モデルが実際のデバイスに届くかどうかを決める大部分です。

私たちはこの変換作業を生業としています。オープンな ASR(自動音声認識、つまり音声からテキストへの変換)と TTS(テキスト音声変換)モデルを取り込み、実行時に Python の学習スタックを一切必要とせず、通常の CPU やオンデバイスアクセラレータでオフライン動作するファイルに変えます。その結果の多くは、私たち自身のアカウントではなく Hugging Face の OpenVoiceOS 組織 の下に公開されます。これは意図的な選択です — 理由は以下で説明します。

なぜチェックポイントはデプロイではないのか

PyTorch や NeMo のチェックポイントは特定の Python 環境を必要とします。正確なライブラリのバージョン、たいていは GPU、そして推論のためだけにも学習フレームワークそのものが必要です。そのスタックは大きく、絶えず変化し、小さなボードで起動しなければならない音声アシスタントの中に入れたいものではありません。

モデルエクスポートは、学習済みのネットワークを純粋に推論のための形式に変換することでこれを解決します — 学習コードも、自動微分も、フレームワークへの依存もありません。私たちは、それぞれ異なるデプロイ形態のために三つの形式を対象とします。

  • ONNX(Open Neural Network Exchange)は、CPU でも GPU でも、Linux、Windows、macOS、あるいは組み込みボードでも、幅広いランタイムが実行できる可搬なグラフ形式です。onnxruntime が動く場所であればほぼどこでも — つまりほぼどこでも — 動くため、私たちの既定の対象です。
  • CoreML はアップルのオンデバイス推論形式です。CoreML パッケージは CPU の代わりに Mac や iPhone の Neural Engine や GPU で実行され、これはアップルのハードウェア上でのリアルタイム音声認識にとって重要です。
  • GGUFllama.cpp とそのエコシステムが使う形式で、少ないメモリフットプリントで動作する必要がある、量子化された LLM 風のモデルのために作られています。私たちはこれを、古典的な音響モデルよりもアーキテクチャ的に言語モデルに近い、より新しいトランスフォーマーベースの音声モデルに使います。

正しい対象を選ぶことは見た目だけの話ではありません。コンフォーマーベースの ASR モデル(畳み込みと自己注意を組み合わせた、現代の音声認識器のほとんどの背後にあるアーキテクチャ)は ONNX や CoreML にきれいに変換されます。Qwen3 ベースの音声モデルは、内部的には言語モデルであるため、代わりに GGUF/llama.cpp パイプラインに自然に収まります。

量子化の代償と見返り

量子化とは、モデルの重みを、学習時に使った 32 ビット浮動小数点の代わりに、数値あたりより少ないビット数 — 16 ビット、8 ビット、あるいは 4 ビット — で保存することを意味します。数値が小さくなればファイルも小さくなり、適したハードウェアでは移動させるデータが少なく演算も安価になるため、推論も速くなります。

実際のモデル一つで正確な数字を示せます。nvidia/parakeet-tdt-0.6b-v3 は 6 億パラメータ規模の ASR モデルです。その CoreML メルエンコーダ構成要素は、フル精度で 1132.5 MB あり、4 ビットにパレット化すると 284.2 MB になります — 三つの下位構成要素(エンコーダ、デコーダ、結合判定ネットワーク)全体でほぼ正確に一致する 3.99 倍の削減です。パッケージ全体で見ると、量子化されていない CoreML エクスポートは約 1.14 GB、4 ビット版は約 293 MB です。これが、携帯電話に楽に収まるモデルと、かろうじて収まるモデルの違いです。

その代償は精度です。重みあたりのビット数が少なくなれば精度も下がり、ある点を超えるとそれはより多くの認識誤りとして現れます。ASR でこれを測る標準的な方法は WER(単語誤り率 — 正しい書き起こしと比較してモデルが間違える単語の割合)です。だからこそ私たちは、一つだけ選んですべてのデバイスに十分であることを願う代わりに、同じモデルの複数の量子化レベル — 4 ビット、6 ビット、8 ビット(int8)、fp16 — を並べて公開しています。携帯電話とデスクトップでは、その曲線上の異なる地点を許容できるからです。

検証の問題

静かにより悪い出力を生み出す変換は、まったく変換しないよりも危険です。なぜなら、見た目には何も壊れていないように見えるからです — ロードされ、実行され、ただ少し音声認識の精度が落ちるだけ、あるいは自分では話せず耳で確認できない言語では大きく落ちるだけです。それを捕まえる唯一の方法は、公開する前に、あらゆる言語とあらゆる量子化レベルについて、実際の音声でエクスポートされたモデルの出力を元の参照実装と比較することです。

私たちが出荷するすべての変換にとって、これは最低限の条件です。同じ音声を元のモデルと変換後のモデルの両方に通し、両者が一致することを確認します。華やかなステップではありませんが、これを省くことこそが「対応言語」が静かに動作しなくなる原因です。

なぜモデルは私たちではなく OpenVoiceOS の下にあるのか

モデルエクスポートは会社としての能力です。チェックポイントと対象デバイスをいただければ、あなたのハードウェアに合った量子化レベルで検証済みのオフライン実行を実現します。しかし、オープンで特定の顧客からの委託ではないチェックポイントから私たちが生み出す変換モデルは、私たち自身の名前空間ではなく、これらのモデルが動作するために作られたオープンな音声アシスタントプラットフォームである OpenVoiceOS に行きます。

理由は単純です。OpenVoiceOS こそが、これらのモデルが実際に使われる場所だからです。会社のアカウントに置かれた変換モデルは、それだけで見れば立派な成果物です。ovos-stt-plugin-onnx-asrovos-stt-plugin-coremlovos-stt-plugin-rover が名前で見つけられる場所に公開された同じモデルは、実際のアシスタントが今や話したり理解したりできる言語です。プラットフォーム自身の組織の下に公開することこそが、変換を研究上の興味深い事例ではなく対応済みの機能に変えるものであり、この作業を一度行うことが、それを依頼した顧客だけでなくすべての OpenVoiceOS インストールに恩恵をもたらすことを保証する方法です。

帰属について明確にしておきます。私たちはこれらの音響モデルをゼロから学習させているわけではなく、そう主張してもいません。その基盤となる研究 — NVIDIA の Parakeet と Conformer モデル、インドの言語向けの AI4Bharat の IndicConformer モデル、ガリシアの Proxecto Nós やバスクの HiTZ センターの Conformer モデルのような大学や公的機関のモデル、そしてアフリカや少数言語向けにモデルを変換する独立した取り組み — は、それを学習させたチームに属します。私たちが加えるのは、変換、量子化、元との正確性チェック、そしてアシスタントが結果を名前で読み込めるようにするプラグインの配線です。

公開されているものから直接数えたその変換作業の規模は次のとおりです。サイズ、言語、量子化レベルにわたって ONNX と CoreML にエクスポートされた 90 以上の Parakeet ASR バリアント、30 以上の NVIDIA Conformer モデル、低資源のインド言語をカバーする 22 の AI4Bharat IndicConformer モデル、スウェーデン語、アイスランド語、フェロー語、フィンランド語、そして二つのノルウェー語書記形式を含む 22 の wav2vec2 モデル、バスク語とガリシア語のための九つの Conformer モデル、そしてショナ語、ズールー語、コサ語、マラガシ語、ハイチクレオール語、カビル語などのアフリカおよびクレオール言語をカバーする独立に変換された Whisper と wav2vec2 モデル。異なる言語コードで確認された ASR 変換だけを数えても、今日オフラインで量子化された音声認識器が利用できる言語は少なくとも 74 あります — バスク語、アラゴン語、アストゥリアス語、ガリシア語、オック語、アラビア語といった言語のためにエクスポートされた別の TTS 音声カタログは数えていません。

あなたの言語やデバイスに今日オフラインの選択肢が何もない場合

ほとんどの言語は商用のオフライン音声オプションを決して得られません。その言語一つだけの市場では、ベンダーが何かを作る正当化にならないからです。上記のパターン — 既存のオープンなチェックポイントを取り、実際に持っているハードウェアで動く形式に変換し、収まるように量子化し、元に対して検証し、プラグインに配線する — は市場規模に依存しません。それは、出発点となるオープンなチェックポイントが存在するかどうかに依存し、それはますます普通のことになりつつあります。

学習用 GPU でしか動かない音声モデルをお持ちの方、あるいは現在その言語でのオフライン音声サポートが何もないデバイスをお持ちの方は、お問い合わせいただくか、サービスページでこの作業が最初から最後までどのようなものかをご覧ください。