Tsukasa-Speech を Windows で GPU で動かす
カテゴリ:deeplearning
デフォルトの状態ではメモリが解放されず、動作を続けると VRAM が不足するのでアプリの再起動が必要になる。
512 トークン制限があり、一度に生成できる文字数は日本語の場合 200 文字に届かない程度。
ファイルアップロードバグ
gr.Audio にはバグがあり、"Too little data for declared Content-Length" のエラーメッセージで、リファレンス音声の再アップロードに失敗する。詳細は Audio component: gradio RuntimeError: Response content shorter than Content-Length #8878 を参照。大きいファイルではエラーが起こらず、小さいファイルを再アップロードすると発生することから、キャッシュが悪さをしている可能性がある。
対処法としては
- アプリを再起動
- ファイルをリネームしてアップロード
requirements.txt の編集
以下の行を追記
gradio sentencepiece konoha openai
requirements.txt のインストール
./venv/Scripts/activate pip install -r requirements.txt
torch cuda のインストール
torch のバージョンが高すぎて whl がないのでバージョンを下げて動かす。インストールするバージョンは環境に合わせて変更する。
pip uninstall torch pip uninstall torchaudio pip uninstall numpy pip install torch==2.3.1+cu121 -f https://download.pytorch.org/whl/torch_stable.html pip install torchaudio==2.3.1+cu121 -f https://download.pytorch.org/whl/torch_stable.html pip install "numpy<2"
ソースの修正
app_tsuka.py
80 行目あたりのパスが直打ちされている箇所を以下のように書き換え。
voicelist = [v for v in os.listdir(f"{os.getcwd()}/reference_sample_wavs")]
89~110 行目あたりに3つ、テキストファイルを読み込む箇所にエンコーディングを指定する。
with open(f'Inference/random_texts.txt', 'r', encoding="utf-8") as r: with open('Inference/prompt.txt', 'r', encoding='utf-8') as p: with open('Inference/input_for_prompt.txt', 'r', encoding='utf-8') as i:
メモリリークの修正
importable.py
235 行目あたり
return out.squeeze().cpu().numpy()[..., :-50]
を
wave_data = out.squeeze().cpu().numpy()[..., :-50] del out return wave_data
300 行目あたり
return out.squeeze().cpu().numpy()[..., :-100], s_pred
を
wav_data = out.squeeze().cpu().numpy()[..., :-100] next_s_prev = s_pred.detach() # 次の呼び出しのために.detach()を適用 del out del s_pred return wav_data, next_s_prev
動作速度
環境
- Windows 11 24H2
- RAM 32GB
- RTX3050 VRAM 8 GB
以下の 148 文字のサンプル文書変換時の VRAM 使用量は 5.4 GB で生成にかかる時間は 1.5 秒。A.I. Voice2 の結月ゆかりをリファレンスとして入力した。
きみの存在は、私の心の中で燃える小さな光のよう。きみがいない時、世界は白黒の写真みたいに寂しくて、何も輝いてない。きみの笑顔だけが、私の灰色の日々に色を塗ってくれる。離れてる時間は、めちゃくちゃ長く感じられて、きみへの想いは風船みたいにどんどん膨らんでいく。きみなしの世界なんて、想像できないよ。
生成パラメータ
- alpha 0.1
- beta 0.1
- diffusion steps 15
- intensity 3
- rate of speech 1