Amazonのアソシエイトとして、当ブログは適格販売により収入を得ています。
最近YouTubeでちらほら見かけるので、動くのか試してみました。
Ryzen9 7900無印の内蔵GPUで確かめたので、ちょっと環境構築方法が特殊です。
参考にならないかもしれませんが、一応記事にします。
最新のROCmは対応していない
Ryzen9 7900無印の内蔵GPUではROCm6.4までしか対応(公式では、そもそも対応なんてしていませんが)していません。
ROCm正式対応のハードウェアは以下のリンクから確認できます。
そしてROCm6.4をインストールするためにはLinuxカーネルを6.14まで戻さなくてはなりません。
Linuxカーネルを6.14に戻す方法はこちらの記事で書いています。
ROCmは「amdgpu-install_6.4.60403-1_all.deb」を使いました。
こちらから探せます。
環境を構築
今回も「uv」を使います。
「uv」についてはこちらで説明しています。
sudo apt update
sudo apt install cmake build-essential
git clone https://github.com/Aratako/Irodori-TTS.git
cd Irodori-TTS
uv venv --python /usr/bin/python3
source .venv/bin/activate
#記事を書いた時点で、torchaudioが抜けていました。
uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.4次にrequirements.txtをインストールする前に、

この2つを「#」でコメントアウトします。
uv pip install -r requirements.txtここまでで環境の構築は完了です。
音声を生成しよう
公式では、
uv run python infer.py \
--hf-checkpoint Aratako/Irodori-TTS-500M-v2 \
--text "今日はいい天気ですね。" \
--no-ref \
--output-wav outputs/sample.wavという感じになっていますが、「uv run」を使うと、なぜかcuda用のpytrochをインストールされてしまいます。
なので、
export HSA_OVERRIDE_GFX_VERSION=10.3.0 #内蔵GPUでROCm6.4を使うため偽装コマンドを使います
.venv/bin/python infer.py \
--hf-checkpoint Aratako/Irodori-TTS-500M-v2 \
--text "今日はいい天気ですね。" \
--no-ref \
--output-wav outputs/sample.wavというように「.venv/bin/python infer.py」を使って下さい。
これで生成が始まります。
最後に
事情があって、Ryzen9 7900の内蔵GPUを使っていますが、これだと音声生成に1時間以上かかります。
更に、この内蔵GPUではノイズのみの音声しか生成されませんでした。
皆さんは、普通にROCm対応のRXシリーズとROCm7を使って下さい。
とはいえ、CPUのみの生成だと1分くらいなので、ぶっちゃけGPUはいらないんじゃないかと思います。
CPUなら音声も問題なく生成できます。
ちなみに
.venv/bin/python infer.py \
--hf-checkpoint Aratako/Irodori-TTS-500M-v2 \
--text "今日はいい天気ですね。" \
--no-ref \
--model-device cpu \
--codec-device cpu \
--output-wav outputs/sample.wavこれでCPUで動くようになると思います。
今回は以上です。
追記Intel Arc対応版を書いていて気づいたのですが、ROCm版の音声のノイズは、もしかしたら「torchcodec」のせいかもしれません。ROCm7で動くようになっていれば良いのですが、もしノイズが消えなかったらごめんなさい。
その時は、Irodori-TTSをIntel Arcで動かす(Ubuntu編)の「inference_runtime.py」を試してみて下さい。
問題の正体はMIOpenでした。
ROCmで公式にサポートされているハードウェアならこのMIOpenが最適な計算方法を持っているのですが、内蔵GPUのようなROCmが使用される想定外のものだとMIOpenが計算方法を見つけ出そうとして暴走してしまうとのことでした。
import time
from collections.abc import Callable
from dataclasses import dataclass
from pathlib import Path
import torch
import torchaudio
#下の2行ほど追加してください
torch.backends.cudnn.enabled = False
torch.backends.cudnn.benchmark = False
# これで、AMD(ROCm)環境でのMIOpenのバグを防ぎ、安全な計算を強制する
from safetensors import safe_open
from safetensors.torch import load_file as load_safetensors_fileinference_runtime.pyの冒頭部分を上のように修正すると、

ただ、たまにノイズのみの生成で終わることがあります・・・。
まだ、完全な方法ではないですね。
「Pro B50」やAsRock製の「Pro B60」なんてめずらしいモノが出てますね。
Amazon倉庫からの出荷ではないので、購入する時は自己責任でお願いします。


コメント