dskjal
広告
広告

Tsukasa-Speech を Windows で GPU で動かす

カテゴリ:deeplearning

Tsukasa-Speech

デフォルトの状態ではメモリが解放されず、動作を続けると 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

動作速度

環境

以下の 148 文字のサンプル文書変換時の VRAM 使用量は 5.4 GB で生成にかかる時間は 1.5 秒。A.I. Voice2 の結月ゆかりをリファレンスとして入力した。

きみの存在は、私の心の中で燃える小さな光のよう。きみがいない時、世界は白黒の写真みたいに寂しくて、何も輝いてない。きみの笑顔だけが、私の灰色の日々に色を塗ってくれる。離れてる時間は、めちゃくちゃ長く感じられて、きみへの想いは風船みたいにどんどん膨らんでいく。きみなしの世界なんて、想像できないよ。

生成パラメータ


広告
広告

カテゴリ