ローカル音声認識・音声合成

AMD Radeonで自宅のリアルタイム音声アシスタント:Ming Voiceの20GB VRAM条件

24GBならbf16、16GBならint8。それ未満にはモデルが載りません。

Ming-3.0-audio-tinyは音声入力に音声で返す9.3B MoE1モデルです。20.5GB bf162と12.5GB int8の違い、0.23秒の測定条件、導入手順、Home Assistant連携を順に扱います。

実行条件と要点
  • Ming-3.0-audio-tinyは9.3B MoE・活性2.7Bで、bf16では20.5GBのVRAMを使います。
  • カードのメモリが23GB未満なら、エキスパート層をint8にして12.5GBまで下げます。
  • 0.23秒はRadeon 7900 XTX 24GB・bf16条件で測った値です。

話し終えるとすぐ音声で返します

Ming Voiceはマイクに向かって話すと音声で答えるプログラムです。音声認識・言語モデル・音声合成を別々につなぐのではなく、音声を入力して音声を出すMing-3.0-audio-tinyをGPU3に載せて会話を処理します。

話し終えたかどうかはSmart Turn v3が抑揚と内容から判断します。返答が始まった後に話し続けると、その返答を取り消して1ターンとして処理し直します。スピーカーで聞きながら割り込んでも、自分の声は除外してあなたの声だけに反応します。

マイク、ヘッドホン、音声波形を表示したモニターが見えます。
マイクとスピーカーが1台のGPUにつながり、会話全体を処理します。

VRAMがモデルの精度を決めます

モデルは全体9.3Bのうち2.7Bだけが活性化するMoE構造です。それでもbf16の重みは20.5GBを占めるため24GBのカードが必要です。カードのメモリが23GB未満なら、エキスパート層をint8にして12.5GBまで下げます。

12GBのカードやノートPCの内蔵GPUには載りません。対応はRadeon RX 6800以降とRTX 30シリーズ以降です。16GBに抑えても画面・ドライバ・他のアプリが使うVRAM4を差し引くと余裕は小さく、ゲームや動画編集との同時利用は難しいです。

精度別のVRAM使用量と必要なカード
精度VRAM必要カード
bf1620.5GB24GB
int8エキスパート12.5GB16GB

導入はWSL2かLinuxで行います

Linuxではインストーラを1行で実行します。カードに合わせてPythonとPyTorch5を用意し、20GBのモデルをダウンロードします。ROCm6は別途入れなくても、PyTorchが7.2を一緒に持ち込みます。WindowsはPowerShellでインストーラを実行するとWSL2まで準備します。

重みは約20GBのダウンロードで、導入とキャッシュを含めると30GB前後のディスクを使います。インストール後の初回起動はカーネルのコンパイルで1〜2分かかり、以降はモデルの読み込みに30秒ほどです。その後はブラウザから会話を始められます。

install (Linux / WSL2)
# Linux / WSL2
curl -fsSL https://raw.githubusercontent.com/JMS1717/ming-voice/main/install.sh | bash

# Windows 11 (PowerShell)
irm https://raw.githubusercontent.com/JMS1717/ming-voice/main/install.ps1 | iex
スクリプトがPython・PyTorchと20GBのモデルを用意します。

0.23秒はどんな条件で測った値ですか

作者がRadeon RX 7900 XTX 24GBで測った値です。発話終了から最初の音声まで中央値0.23秒でした。返答は発話が終わる直前の0.2秒ほどの間で先に作られ、その間が終わるとすぐ再生されます。

16GBカードのint8経路では同じ数値をそのまま期待できません。精度を下げると計算は軽くなりますが、カード世代とドライバでばらつきが大きくなります。自分の環境で最初の音声までの時間を測り、1秒を超えるなら返答を短くするのが良いです。

窓辺の机に開いた本、小型コンピューター、スピーカーが置かれています。
VRAMが足りないとモデルが載らないため、カードのメモリを先に確認します。

家の中の機器とつなぎます

Home Assistantをつなぐと、照明やプラグ、音楽、空調を音声で操作できます。「リビングの照明を消して」のような命令はモデルを通さずに実行され、時間指定の予約も扱えます。Jellyfinの再生も同じように接続します。

他のアプリから使うにはOpenAI互換API7かWyoming8ブリッジを使います。ツールを有効にすると検索語と地名だけが外部に出て、無効にすれば完全オフラインで動きます。音声そのものはどの場合も外に出ません。

Macでは動きません

Apple Siliconは未対応です。カーネルがTritonとROCm・CUDA9を前提にしており、MacのMetal10経路では動きません。Macで音声アシスタントを作るなら、MLX11に移植された別のモデルを選ぶ必要があります。

対応言語は英語と中国語です。韓国語には別のモデルが必要で、コードはMITなので改変・再配布は自由です。モデルを読み込んでいる間はVRAMを占有するため、同じGPUで他の作業を並行するのは難しいです。

オーディオプレーヤーとヘッドホンの横に開いたノートがあります。
ツールを無効にすると、音声も会話もローカルに残ります。

用語の注釈

  1. MoE — 複数の専門家サブネットワークから入力に応じて一部を選ぶモデル構造です。総パラメータ数と1トークン処理時に有効な数は異なることがあります。

    本文に戻る
  2. BF16 — モデルの数値に使う16ビット浮動小数点形式です。指数部はFP32と同じ幅で、同程度に広い値の範囲を表せます。

    本文に戻る
  3. GPU — 多くの計算を並列に処理するプロセッサーです。AIモデルの実行ではモデル計算を担います。

    本文に戻る
  4. VRAM — グラフィックカードのGPUが使うメモリです。モデルの重みや計算途中の値を保存します。

    本文に戻る
  5. PyTorch — AIモデルを作成・実行するソフトウェアフレームワークです。モデルと合わせて、対応するPyTorchの版やハードウェアも確認します。

    本文に戻る
  6. ROCm — AMD GPUでAIや高性能計算を実行するソフトウェア基盤です。対応状況はGPUだけでなく、OS・ドライバー・フレームワークの版の組み合わせで確認します。

    本文に戻る
  7. API — 別のコードからプログラムの機能を呼び出すための決められたインターフェースです。

    本文に戻る
  8. Wyoming — Home Assistantと音声サービスが音声とテキストをやり取りするプロトコルです。認証も暗号化もないため、信頼できるネットワークでだけ使います。

    本文に戻る
  9. CUDA — NVIDIA GPUで汎用計算を行うソフトウェア基盤です。

    本文に戻る
  10. Metal — Apple機器でグラフィックスやGPUの並列計算を実行する低水準の技術です。

    本文に戻る
  11. MLX — Appleが開発する機械学習フレームワークで、Apple SiliconのCPUとGPUが共有するメモリを使ってモデルを実行します。

    本文に戻る

よくある質問

この記事で最初に確認すべきことは何ですか?
Ming-3.0-audio-tinyは音声入力に音声で返す9.3B MoEモデルです。20.5GB bf16と12.5GB int8の違い、0.23秒の測定条件、導入手順、Home Assistant連携を順に扱います。
必要なメモリはどのくらいですか?
モデルは全体9.3Bのうち2.7Bだけが活性化するMoE構造です。それでもbf16の重みは20.5GBを占めるため24GBのカードが必要です。カードのメモリが23GB未満なら、エキスパート層をint8にして12.5GBまで下げます。