👄

DGX SparkでVOICEVOXを使った音声合成

に公開
2026/03/01

VOICEVOXで音声合成

VOICEVOXに関しては以下です。
https://zenn.dev/karaage0703/articles/0187d1d1f4d139

DGX Sparkと初期設定に関しては以下実施してください。
https://zenn.dev/karaage0703/articles/985ddbd8fa15d3

最低限 uvのセットアップをしておいてください。

ハードウェア的には、オーディオ機能付きのモニタやUSBスピーカーなどをDGX Sparkに接続して、音が出るようにしておいてください。

ライブラリとして直接呼び出すPython版VOICEVOX Coreを使う方法とDockerを使う方法の2つを紹介します。

Python版VOICEVOX Core

ライブラリとして直接呼び出す方式です。

uvの仮想環境構築

以下で仮想環境を構築します。

$ mkdir voicevox
$ cd voicevox
$ uv venv
$ source .venv/bin/activate

VoiceVoxのセットアップ

以下とほぼ同じです。この記事ではコマンドだけ羅列します。コピーしやすくするために、冒頭の$も省略します。詳細は以下記事を参照ください。CPU動作です。Armアーキテクチャだと多分GPU使うのは難しいと思います。

https://zenn.dev/karaage0703/articles/c616475d67a531

wget https://github.com/VOICEVOX/voicevox_core/releases/download/0.14.0/voicevox_core-0.14.0+cpu-cp38-abi3-linux_aarch64.whl
uv pip install voicevox_core-0.14.0+cpu-cp38-abi3-linux_aarch64.whl
wget http://downloads.sourceforge.net/open-jtalk/open_jtalk_dic_utf_8-1.11.tar.gz
tar xvzf open_jtalk_dic_utf_8-1.11.tar.gz

動作確認

以下コマンドで動作確認します。

uv pip install playsound3
from pathlib import Path

from playsound3 import playsound
from voicevox_core import AccelerationMode, VoicevoxCore

SPEAKER_ID = 2

open_jtalk_dict_dir = "./open_jtalk_dic_utf_8-1.11"
out = Path("output.wav")
acceleration_mode = AccelerationMode.AUTO


def main() -> None:
    core = VoicevoxCore(
        acceleration_mode=acceleration_mode, open_jtalk_dict_dir=open_jtalk_dict_dir
    )
    core.load_model(SPEAKER_ID)

    text = "こんにちは"
    audio_query = core.audio_query(text, SPEAKER_ID)
    wav = core.synthesis(audio_query, SPEAKER_ID)
    out.write_bytes(wav)
    playsound(out)


if __name__ == "__main__":
    main()

動きました。

Docker版 VOICEVOX Engine(HTTP API)

上記のPython版VOICEVOX Coreはライブラリとして直接呼び出す方式ですが、Docker版VOICEVOX Engineを使うとHTTP API経由で音声合成できます。他のツール(Node.js製のmarkdown-to-zundamonなど)との連携にはこちらが便利です。

Docker版のメリット

  • HTTP API(localhost:50021)で言語を問わず利用可能
  • Python環境のセットアップ不要
  • 複数ツールから同時にアクセスできる

セットアップ

ARM64(CPU)版のイメージを使います。

$ docker pull voicevox/voicevox_engine:cpu-arm64-latest

起動

$ docker run --rm -p '127.0.0.1:50021:50021' voicevox/voicevox_engine:cpu-arm64-latest

バックグラウンドで起動したい場合は -d オプションを付けます。

$ docker run --rm -d --name voicevox -p '127.0.0.1:50021:50021' voicevox/voicevox_engine:cpu-arm64-latest

起動まで少し時間がかかります(辞書のビルドで30秒程度)。以下でAPIの応答を確認できます。

$ curl http://localhost:50021/speakers | python3 -m json.tool | head -20
``

### 音声合成(curl)
VOICEVOX EngineのAPIは2ステップです。

1. 音声クエリの生成

```bash
$ curl -s -X POST "http://localhost:50021/audio_query?text=こんにちは&speaker=3" \
  -H "Content-Type: application/json" \
  -o query.json
  1. 音声合成
curl -s -X POST "http://localhost:50021/synthesis?speaker=3" \
  -H "Content-Type: application/json" \
  -d @query.json \
  -o output.wav

speakerパラメータは話者IDです。主なIDは以下の通りです。

speaker ID キャラクター スタイル
2 四国めたん ノーマル
3 ずんだもん ノーマル
1 ずんだもん あまあま
8 春日部つむぎ ノーマル

全話者一覧は GET /speakers で確認できます。

音声合成(Python)

import requests
from pathlib import Path

VOICEVOX_BASE = "http://localhost:50021/"
SPEAKER_ID = 3  # ずんだもん ノーマル

text = "こんにちは! ずんだもんなのだ" 

# 音声クエリ生成
query = requests.post(
    f"{VOICEVOX_BASE}/audio_query",
    params={"text": text, "speaker": SPEAKER_ID}
).json()

# 音声合成
audio = requests.post(
    f"{VOICEVOX_BASE}/synthesis",
    params={"speaker": SPEAKER_ID},
    json=query
).content

Path("output.wav").write_bytes(audio)
print("output.wav に保存しました")

停止

$ docker stop voicevox

GPU対応の現状

2026年2月時点で、ARM64 + CUDA(GPU)の組み合わせは以下の理由で未対応です。

  • ONNX RuntimeがARM64でのCUDA公式サポートを提供していない(Issue #22903)
  • これに伴いVOICEVOX CoreもARM64 GPU版がない(Issue #670)

x86_64環境であれば voicevox/voicevox_engine:nvidia-latest でGPU版が利用可能です。

まとめ

DGX SparkでVOICEVOXを動かす方法をまとめました。

変更履歴

  • 2026/03/01 Dockerでの動かし方について追記

Discussion