音楽生成モデルYue2-3Bをaudio.cppを使ってRadeon 7800XTで実行
Linux Fedora 44 + 7800XTでYue2-3BとIrodori-TTSを動かした際の自分用メモです。たぶんNVIDIA GPUでもMacでもaudio.cppをビルドすれば動くと思いますが未検証です。
リアルタイムに作業した内容を書いているので、とっ散らかっていてすみません。
実行エンジン
公式実装はPythonベースでCUDA向けです。
音声合成や音楽生成エンジンとしてaudio.cppがあります。C++で実装されているLLM実行エンジンのllama.cppの音声版のようなものです。2026/9/12時点ではYue2-3Bはmainブランチではなくdevブランチで対応しています。たぶんmainブランチでも動くと思いますがdevで検証しています。2026/9/14時点でdevでの開発が続いていてモデル指定などに仕様変更があるようなので、様子を見ながら動かしてください(2026/9/14修正)。
ビルド
gitで取得しdevブランチに切り替えます。
git clone https://github.com/0xShug0/audio.cpp/
git switch dev
HIP(ROCm)向けビルドは
scripts/build_linux.sh --backend hip --target audiocpp_cli --target audiocpp_server
でも可能ですが、細かいオプションを指定したかったので、次を参考にオプション指定してcmakeでビルドしました。
-DGPU_TARGETS=は使うグラフィックボードに合わせて設定します。7800XTならgfx1101です。本当は`--DGGML_HIP_NO_VMM=OFFを付けてVRAMの効率化をしたかったんですが、実行時に落ちるので外しました。
cmake -S . -B build_hip \
-DENGINE_ENABLE_HIP=ON \
-DGPU_TARGETS=gfx1101 \
-DCMAKE_C_COMPILER="$(hipconfig -l)/clang" \
-DCMAKE_CXX_COMPILER="$(hipconfig -l)/clang++" \
-DCMAKE_BUILD_TYPE=Release
4スレッドで並列ビルド。CPUとメモリに合わせて適当に設定してください。
cmake --build build_hip -j 4
実行
モデルダウンロード
量子化モデルのyue2-3b-q4_0.ggufとyue2-vae-f16.ggufを使います。ggufだけでなくsidecarsフォルダとその中身の設定ファイルも必要なので一緒にダウンロードしてください。
modelsフォルダのファイル配置:
yue2-3b-q4_0.gguf
yue2-vae-f16.gguf
sidecars/yue2-model-config.json
sidecars/yue2-vae-config.json
sidecars/yue2-generation-config.json
sidecars/yue2-qwen.tiktoken
CLIで実行
--modelでの指定は通常のaudio.cppのモデル指定と異なりyue2-3b-q4_0.gguf等が入っているフォルダを指定する必要があります。
なお、Ryzen 5600G APUのようなROCm対応APUを使っている場合HIP_VISIBLE_DEVICES=0等の環境変数を付けてAPUをHIPから見えないようにしないと実行時に問題が起きるかもしれません。
以下歌詞と曲調は適当にgeminiに投げて作ってもらったものでアイドルソングを生成しました。
歌詞
[Verse]
毎朝の星占い チェックして深呼吸
お気に入りのリボン 揺らして出かけよう!
[Chorus]
ときめきスイッチ、オンにして!
世界中に響け、このメロディ
君の笑顔が見たいから
全力で届けるよ、大好きのサイン!
曲調
Japanese, kawaii idol pop, upbeat, sparkling synths, energetic drums, cute female lead vocal, catchy melody, polished mix'
build_hip/bin/audiocpp_cli --task gen --family yue2 \
--model ./models \
--backend hip --threads 8 \
--text $'[Verse]\n毎朝の星占い チェックして深呼吸\nお気に入りのリボン 揺らして出かけよう!\n[Chorus]\nときめきスイッチ、オンにして!\n 世界中に響け、このメロディ\n君の笑顔が見たいから\n全力で届けるよ、大好きのサイン!' \
--request-option 'style=Japanese, kawaii idol pop, upbeat, sparkling synths, energetic drums, cute female lead vocal, catchy melody, polished mix' \
--request-option cot=off --request-option num_inference_steps=8 \
--session-option yue2.model_gguf=yue2-3b-q4_0.gguf \
--session-option yue2.vae_gguf=yue2-vae-f16.gguf \
--out demo1.wav
実際に生成された歌。
代表的なオプション
- --backend Radeonなのでhip(ROCm)を指定。CUDAならcuda
- --text 歌詞
- --request-option 'style=(曲調)' 曲調の指定
- --out 出力ファイル名
Irodori-TTSでの音声合成
audio.cppはIrodori-TTSにも対応しています。
モデルはここからダウンロードできます。とりあえずirodori-tts-v4.1-anime-q8_0.ggufを使います。modelsフォルダに入れます。
CLIでの音声合成
Irodori-TTSに限らない基本的な使い方は以下です。
『こんにちは』としゃべらせたい場合は--textオプションで指定してください。
build_hip/bin/audiocpp_cli --task tts --family irodori_tts \
--model ./models/irodori-tts-v4.1-anime-q8_0.gguf \
--backend hip --threads 1 \
--text "こんにちは" \
--out tmp1.wav
tmp1.wavに合成されます。
captionを使用する場合は--request-option "caption=(caption内容)" です。
build_hip/bin/audiocpp_cli --task tts --family irodori_tts \
--model ./models/irodori-tts-v4.1-anime-q8_0.gguf \
--backend hip --threads 1 \
--text "こんにちは" \
--request-option "caption=低い渋い声の男性" \
--out tmp2.wav
参照音声を使う場合は音声がchara1.wavならば--voice-ref chara1.wavです。ファイル名をパスで指定します。
build_hip/bin/audiocpp_cli --task tts --family irodori_tts \
--model ./models/irodori-tts-v4.1-anime-q8_0.gguf \
--backend hip --threads 1 \
--text "こんにちは" --voice-ref chara1.wav \
--out tmp3.wav
Serverでの音声合成
Irodori-TTSに限らない基本的な使い方は以下です。
server.jsonファイルに設定を書きます。
{
"host": "127.0.0.1",
"port": 8080,
"backend": "hip",
"device": 0,
"threads": 1,
"lazy_load": false,
"voice_dir": "./voice_dir",
"models": [
{
"id": "irodori-tts",
"family": "irodori_tts",
"path": "./models/irodori-tts-v4.1-anime-q8_0.gguf",
"task": "tts",
"mode": "offline"
}
]
}
参照音声はvoice_dir以下に置きます。
--configでserver.jsonを指定してサーバーを起動。
build_hip/bin/audiocpp_server --config server.json
ちゃんと動いているかcurlで確認します。
$ curl http://127.0.0.1:8080/health
{"status":"ok","backend":"hip","models":1,"ui":true,"ui_management":false}
"status":"ok"なので問題ないです。
curlで音声合成したい内容を投げます。"input": "合成したい文章"で指定します。
curl http://127.0.0.1:8080/v1/audio/speech \
-H 'Content-Type: application/json' \
-d '{ "model": "irodori-tts", "input": "こんばんは"}' \
-o tmp4.wav
captionを使う場合は以下です。ついでにnum_inference_steps(num_steps)を6にして高速化しています。
curl http://127.0.0.1:8080/v1/audio/speech \
-H 'Content-Type: application/json' \
-d '{ "model": "irodori-tts", "input": "こんばんは。", "options": {"num_inference_steps": 6, "caption":"低い男性の声"} }' \
-o tmp5.wav
voice_dir/chara1.wavにある参照音声を使う場合は以下です。
curl http://127.0.0.1:8080/v1/audio/speech \
-H 'Content-Type: application/json' \
-d '{"model": "irodori-tts", "input": "こんばんは", "voice_ref": {"type": "path", "path": "voice_dir/chara1.wav"}, "options": {"num_inference_steps": 6}}' \
-o tmp6.wav
voice_dir以下に複数参照音声(chara1.wavとchara2.wav)を入れている場合に参照音声のリストを取得したい場合は以下のようにするとjsonで得られます。
$ curl http://127.0.0.1:8080/v1/audio/voices?models="irodori-tts"
{"voices":["chara1","chara2"]}
調べた限りIrodori-TTS-Serverでは参照音声を固定的にアップロードすることができますが、audio.cppのserverの場合、生成時に参照音声をbase64で投げることは可能ですが、voice_dir以下に固定的にアップロードすることはできないようです。
Web UI (2026/9/12追記、2026/9/14修正)
audio_serverにはWeb UIがあるので、コマンドでなくブラウザ経由で生成することもできます。
Yue2-3BとIrodori-TTSを同時に使えるようにした場合のserver2.jsonです。なぜかyue2-3bのモデルの指定が動かないので、yue2-3b-q8_0.ggufに名前を変えてください。
2026/9/14 モデル指定に仕様変更があったようなので修正。
{
"host": "127.0.0.1",
"port": 8080,
"backend": "hip",
"device": 0,
"threads": 1,
"lazy_load": false,
"voice_dir": "./voice_dir",
"models": [
{
"id": "irodori-tts",
"family": "irodori_tts",
"path": "./models/irodori-tts-v4.1-anime-q8_0.gguf",
"task": "tts",
"mode": "offline"
},
{
"id": "yue2",
"family": "yue2",
"path": "./models/yue2-3b-q8_0.gguf",
"task": "gen",
"mode": "offline",
"session-options": {
"vae": "yue2-vae-f16.gguf"
}
}
]
}
build_hip/bin/audiocpp_server --config server2.json
http://127.0.0:8080/
を開けばWebUIが表示されるはずです。
Text to SpeechにIrodori-TTS、Music generationにYue2-3Bがあり、切り替えて生成できるはずです。
