LiteVox は、VOICEVOX 互換の音声合成・歌唱音声合成を提供する C++ 製のスタンドアロン CLI / HTTP ランタイムです。
公式の VOICEVOX 配布パッケージ(製品 zip)や ONNX Runtime と組み合わせることで、Python 実行環境や VOICEVOX Core に依存することなく、高速・軽量に音声合成を実行できます。
- 公式 zip の直接利用: 公式配布の
voicevox-*.zipを指定するだけで、自動的に展開・キャッシュして即座に起動可能 - 高速な C++ ネイティブ推論: 依存関係を最小限に抑えた C++17 実装による高速な音声合成
- GPU アクセラレーション: WebGPU(Metal / DirectX / Vulkan)、DirectML、CUDA、CoreML に対応
- 読み上げ・歌唱音声合成: テキスト音声合成(TTS)、AudioQuery 生成、ストリーミング出力に加え、楽譜(Score)からの歌唱音声合成に対応
- VOICEVOX 互換 HTTP サーバー: 既存の VOICEVOX クライアントやエコシステムとそのまま連携可能
- 状態の分離管理: ユーザー辞書やプリセットなどの設定を、モデルデータから分離して永続化可能
LiteVox は、計算負荷の大半を占める波形合成デコーダを GPU(Metal / DirectML / CUDA / WebGPU)にオフロードし、軽量な音長・音高予測モデルを CPU で効率的に実行するハイブリッド推論パイプラインを採用しています。
これにより、公式の CPU 実行と比較して大幅な高速化(レイテンシ短縮・RTF 改善)を実現します。
同一モデル(VOICEVOX 0.25.2)、同一クエリ、同一出力フォーマット(24 kHz / 16-bit PCM)での波形合成レイテンシの比較例です。
| 処理内容 | 公式 VOICEVOX (CPU, 1スレッド) | LiteVox (GPU / Metal) | 高速化倍率 | LiteVox RTF※ |
|---|---|---|---|---|
| 音声合成(読み上げ)波形生成 | 1,432 ms | 263 ms | 約 5.4 倍 | 0.25 |
| 歌唱音声(ソング)波形生成 | 884 ms | 211 ms | 約 4.2 倍 | 0.12 |
※ RTF(Real-Time Factor): 音声の長さに対する生成時間の比率(値が小さいほど高速、1.0 未満で実時間より高速)。
※ CPU 同士の同一スレッド・同一 ONNX Runtime 比較では公式と同等水準の処理速度を維持します。また、CPU 実行時もスレッド数を指定(--cpu-threads 4 など)することで高速化が可能です。
同一条件でのレイテンシ比較には、付属のスクリプト(tools/Benchmark.py)を利用できます。
- C++17 対応コンパイラ(Clang / GCC)
- CMake, GNU Make, Git, pkg-config
- zlib
- libsoxr(音声リサンプリング用)
- macOS (Homebrew):
brew install cmake libsoxr pkg-config
- Ubuntu / Debian:
sudo apt-get install cmake make g++ git pkg-config zlib1g-dev libsoxr-dev
※ Open JTalk(1.11)のソースコードは、初回ビルド時に自動で取得・静的ビルドされます。既存の Open JTalk を使用する場合は、OPEN_JTALK_INCLUDE_DIR と OPEN_JTALK_LIB を指定してください。
# ビルド
make dist
# テスト実行
make checkビルドが完了すると、dist/ ディレクトリに以下のファイルが生成されます:
dist/litevox(実行可能バイナリ)dist/resources/(OpenAPI 定義など)
--runtime オプションにダウンロードした VOICEVOX の配布 zip(macOS 版、Windows DirectML 版など)を直接指定して実行できます。
初回実行時に zip と同じディレクトリに .litevox-runtime-cache/ が自動作成され、必要なランタイムファイルが展開されます。2回目以降はこのキャッシュが再利用されるため、高速に起動します。
各モデルを初めて使うときは、復号した ONNX モデルと ONNX Runtime 形式(.ort)のモデルを model-vvm/.litevox-exported-onnx-cache/ に書き出し、以降はこれを読み込みます(モデル読み込み 約 0.7 秒 → 約 0.03 秒)。書き込めないディレクトリでは従来の読み込みに戻ります。書き出さない場合は --native-model-mode vv-bin を指定してください。
dist/litevox tts \
--runtime /path/to/voicevox-<platform>.zip \
--speaker zunda \
--text 'こんにちは、音声合成のテストです。' \
--out output.wavVOICEVOX 互換の HTTP サーバーを起動します(デフォルトポート: 50021)。
dist/litevox server \
--runtime /path/to/voicevox-<platform>.zip \
--port 50021起動後は、通常の VOICEVOX エディタや API クライアントから接続して利用できます。
dist/litevox models \
--runtime /path/to/voicevox-<platform>.zipdist/litevox tts \
--runtime /path/to/voicevox-<platform>.zip \
--speaker zunda \
--text 'ずんだもんなのだ。' \
--out out.wav--speaker オプションには、従来のスタイル ID(数値)に加えて、キャラクター名(日本語・英語別名) や スタイル名 を指定できます。
- ID 指定:
--speaker 3 - キャラクター名指定:
--speaker zundaまたは--speaker ずんだもん(「ノーマル」または「ふつう」スタイルが自動選択されます) - スタイル明示指定:
--speaker 'zunda:あまあま'、--speaker 'zunda:normal'、--speaker 'ずんだもん:ツンツン' - ID 併用指定:
--speaker 'ritsu:6000'(同一キャラクターでソングとハミングなどの同名スタイルを区別する場合に便利です)
※ キャラクター名や英語別名は大文字・小文字を区別しません(例: zunda, Zunda, ZUNDAMON)。
※ キャラクター名のみで標準スタイルが一意に定まらない場合は、--speaker 'goki:鬼ver.' のようにスタイル名を明示してください。
# 指定例
dist/litevox tts --runtime voicevox.zip --speaker 'zunda:ツンツン' --text 'なのだ!'
dist/litevox tts --runtime voicevox.zip --speaker 'metan:ささやき' --text 'こんにちは。'
dist/litevox tts --runtime voicevox.zip --speaker 'nurse-t:恐怖' --text 'テストです。'対応キャラクターの英語別名一覧(43 キャラクター)
| キャラクター | 英語別名 |
|---|---|
| 四国めたん | metan |
| ずんだもん | zunda / zundamon |
| 春日部つむぎ | tsumugi |
| 雨晴はう | hau |
| 波音リツ | ritsu |
| 玄野武宏 | takehiro |
| 白上虎太郎 | kotaro |
| 青山龍星 | ryusei |
| 冥鳴ひまり | himari |
| 九州そら | sora |
| もち子さん | mochiko |
| ちび式じい | chibi |
| 櫻歌ミコ | miko |
| ナースロボ_タイプT | nurse-t |
| †聖騎士 紅桜† | benizakura |
| 雀松朱司 | akashi |
| 麒ヶ島宗麟 | sorin |
| 春歌ナナ | nana |
| 猫使アル | aru |
| 猫使ビィ | bii |
| 栗田まろん | maron |
| あいえるたん | aierutan |
| 満別花丸 | hanamaru |
| 琴詠ニア | nia |
| 小夜/SAYO | sayo |
| 後鬼 | goki |
| Voidoll | voidoll |
| ぞん子 | zonko |
| 中部つるぎ | tsurugi |
| 離途 | rito |
| 黒沢冴白 | kurosawa |
| ユーレイちゃん | yurei |
| 東北ずん子 | zunko |
| 東北きりたん | kiritan |
| 東北イタコ | itako |
| あんこもん | ankomon |
| 夜語トバリ | tobari |
| 暁記ミタマ | mitama |
| 里石ユカ | yuka |
| 中国うさぎ | usagi |
| 剣崎雌雄 | mesuo |
| No.7 | no7 |
| WhiteCUL | whitecul |
歌唱機能でも同様に名前で指定できます。
# 教師話者に波音リツ、歌唱話者にずんだもんを指定
dist/litevox sing --runtime voicevox.zip --score score.json --teacher ritsu --speaker zunda --out song.wav複数話者を指定するオプション(--speakers)でも、--speakers zunda,metan,8 のように名前と ID を混在して指定可能です。
dist/litevox query \
--runtime /path/to/voicevox-<platform>.zip \
--speaker zunda \
--text 'ずんだもんなのだ。' \
--out query.json長文を文単位で逐次生成しながら標準出力やパイプへ出力します。
dist/litevox stream \
--runtime /path/to/voicevox-<platform>.zip \
--speaker zunda \
--text '第一文です。第二文です。' \
--format wav > out.wav公式の楽譜フォーマット(Score JSON)から歌声を合成できます。
# 歌唱対応話者(シンガー)一覧の表示
dist/litevox singers \
--runtime /path/to/voicevox-<platform>.zip
# 楽譜から直接 WAV を合成
dist/litevox sing \
--runtime /path/to/voicevox-<platform>.zip \
--score score.json \
--teacher 6000 \
--speaker 3000 \
--out song.wav--teacher: 歌唱クエリ(音高・音量予測)用スタイル ID(デフォルト: 6000)--speaker: 波形合成用歌唱スタイル ID(デフォルト: 3000)
楽譜は VOICEVOX 公式の Score 形式に準拠します。歌詞にはモーラ(ひらがな・カタカナ)、frame_length にはフレーム数(93.75 fps: 24,000 Hz / 256 サンプル単位)を指定します。休符は key: null, lyric: "" とします。
{
"notes": [
{"key": null, "frame_length": 15, "lyric": ""},
{"id": "note-1", "key": 60, "frame_length": 45, "lyric": "ド"},
{"id": "note-2", "key": 62, "frame_length": 45, "lyric": "レ"},
{"id": "note-3", "key": 64, "frame_length": 45, "lyric": "ミ"},
{"key": null, "frame_length": 15, "lyric": ""}
]
}HTTP API および CLI では、歌唱クエリの生成、ピッチ(F0)や音量の個別調整、波形生成を段階的に実行できます。
# 1. 歌唱クエリの生成
dist/litevox sing-query \
--runtime runtime-root \
--score score.json \
--speaker 6000 \
--out frame_audio_query.json
# 2. ピッチ (F0) の予測・編集
dist/litevox sing-f0 \
--runtime runtime-root \
--score score.json \
--frame-audio-query frame_audio_query.json \
--speaker 6000
# 3. 音量の予測・編集
dist/litevox sing-volume \
--runtime runtime-root \
--score score.json \
--frame-audio-query frame_audio_query.json \
--speaker 6000
# 4. 波形合成
dist/litevox frame-synthesis \
--runtime runtime-root \
--frame-audio-query frame_audio_query.json \
--speaker 3000 \
--out frame.wavLiteVox は各プラットフォームに応じた GPU アクセラレーションに対応しています。
- macOS: WebGPU (Metal), CoreML
- Windows: DirectML, CUDA, WebGPU (Direct3D 12)
- Linux: CUDA, WebGPU (Vulkan)
推論パイプラインでは、転送オーバーヘッドの小さい音長・音高予測モデルを CPU で処理し、計算負荷の大半を占める波形合成デコーダを GPU に配置するハイブリッド実行を行うことで、高いスループットを実現しています。また、セッションの効率的なキャッシングや、ストリーミング合成時の不要なメモリ複製の削減により、低オーバーヘッドな推論を提供します。
auto: 利用可能な GPU Execution Provider を自動検出し、利用できない場合は CPU で動作(デフォルト)gpu: GPU による実行を要求(対応環境が見つからない場合はエラー)cpu: 常に CPU で実行
特定の Execution Provider を明示的に指定することも可能です:
WebGpuExecutionProvider(macOS Metal / Windows Direct3D 12 / Linux Vulkan)CoreMLExecutionProvider(macOS)CUDAExecutionProvider(Windows / Linux NVIDIA GPU)DmlExecutionProvider(Windows DirectML)
※ 実際に選択されたプロバイダは runtime_info コマンドの native_onnx_providers.selected で確認できます。
※ macOS では、動的形状グラフとの互換性と安定性の観点から WebGPU (Metal) の利用を推奨しています(auto 時も優先されます)。
# GPU モードで実行
dist/litevox tts \
--runtime /path/to/voicevox-<platform>.zip \
--acceleration-mode gpu \
--speaker zunda \
--text 'GPU で合成しています。' \
--out gpu_out.wavmacOS での利用時の注意
macOS 版の VOICEVOX 公式 zip に同梱されている ONNX Runtime は CPU 専用ビルドです。macOS 上で GPU(Metal / WebGPU)を利用する場合は、WebGPU プロバイダを含む ONNX Runtime ライブラリ(公式配布のonnxruntime-osx-arm64-1.31.0以降に同梱)を--onnxruntimeオプションで指定してください。LITEVOX_VV_BIN_ONNXRUNTIME=/path/to/runtime-root/libvoicevox_onnxruntime.dylib \ dist/litevox tts \ --runtime runtime-root \ --onnxruntime /path/to/libonnxruntime.dylib \ --acceleration-mode gpu \ --speaker zunda \ --text 'Metal で合成しています。'
配布 zip を毎回読み込むのではなく、あらかじめ展開されたディレクトリ(runtime root)を作成して運用することができます。
# 公式 zip から runtime root を構築
dist/litevox model-dump \
/path/to/voicevox-<platform>.zip \
--extract-runtime runtime-root
# 標準 ONNX Runtime も同時に組み込む場合
dist/litevox model-dump \
/path/to/voicevox-<platform>.zip \
--add-model /path/to/onnxruntime-<platform>.archive \
--extract-runtime runtime-root
# 展開した runtime root を指定して起動
runtime-root/litevox server \
--runtime runtime-root \
--port 50021--state-dir を指定することで、ユーザー辞書(user_dict.json)、プリセット(presets.json)、設定ファイル(setting.json)をランタイム本体とは別のディレクトリに保存・永続化できます。
dist/litevox server \
--runtime runtime-root \
--state-dir /path/to/user-data \
--port 50021.vvm ファイルや製品 zip から ONNX モデルを抽出するユーティリティも備えています。
dist/litevox vv-bin-export-onnx \
/path/to/model.vvm \
--runtime runtime-root \
--extract-onnx exported-onnx# 単体テストおよび互換性チェック
make check
# 標準配布の全モデルで話者名・別名・全スタイルの対応を検証
make check RUNTIME_ROOT=/path/to/full-runtime-root
# 公式 zip と ONNX Runtime アーカイブからの組み立て検証
tools/verify-runtime-from-archives.sh \
/path/to/voicevox-<platform>.zip \
/path/to/onnxruntime-<platform>.archive \
runtime-root \
verify-output
# CLI の動作検証 (smoke test)
tools/verify-cli-smoke.sh runtime-root cli-smokesrc/: C++ 実装ソースコードresources/openapi.json: VOICEVOX 互換 OpenAPI 定義tools/: 検証・比較用ユーティリティスクリプトREADME.bundle.md: 配布用 Bootstrap Bundle 向けドキュメント
- LiteVox 自体のソースコードは本リポジトリのライセンスに従います。
- 合成に使用する音声モデル、キャラクターボイス、辞書データ等の著作権および利用条件は、VOICEVOX 公式および各キャラクターの利用規約に準拠します。商用利用やクレジット表記等の条件については各モデル・キャラクターの規約をご確認ください。