Qwen3-TTS試してみた ~パフォーマンスや精度、バッチ学習など徹底調査! まさかの同じデータでも差が出る!?~
こんにちはRcatです。
今回は近況報告で書いたように、気になっていたQwen3-TTS試していきます。
↓結構いろいろやりました!。他の記事などではここまでしていないのでは?
ぜひ最後までご覧ください。

はじめに
利用規約
情報や作品の活用時は事前に利用規約をご確認ください。
コメントについて
利用規約のガイドラインを確認の上コメントしてください。
則っていないコメントは削除します。
概要
概要
今回は大注目のQwen3-TTSを遅ればせながら試していきます。
たった3秒のサンプルから声をクローンするAIの実力はいかに??
試してみる
モデルの選び方
VoiceDesign
テキストで声質をで指示して作るものCustomVoice
プリセットからカスタマイズBase
3秒の音声からクローンする
それに対して6置くと17億パラメータの2種類がある。
一番気になるBaseクローンをやっていきましょう
準備する
こちらをgit cloneで持ってきます。
持ってこなくてもできますが、ローカルにあるほうが私的にはいいのでw
いつも通りPython仮想環境を作成してライブラリを入れます。
今回はWindows cudaなのでこちらのtorchですね
python -m venv venv
venv\scripts\activate
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu130
pip install -U qwen-tts soundfileなお、flash_attention_2はビルドエラーで入りませんでした…
とりあえずオプションらしいので今回はスルーします。
ボイスクローンを実行する
さて、リファレンスは英語なのでとりえずGemini丸投げw
それを多少加工して動作したのがこちら

ポイントは以下の通りです
flash_attention_2は使わない
私のだとビルドエラーが出たのでそもそも入れてません。
解決すべきなんでしょうけど、とりあえずなくても動くのでパスローカルからロード
モデルは最初にgit cloneしたので、ローカルのパスを指定
モデルがどこにあるのか把握できますのでこれが安定ですね。
クローン結果
3秒でクローンとあったので最初は5秒の音声を入れました。
しかし、これの結果は正直微妙。元の音声とだいぶ違うという印象。
なので、切り貼りして18秒の音声を作ってそれでクローンを試みたところ完全に再現された模様…。

なんで切り貼りしてるかって?
自分の声クローンしたってダレトクなのだからお気に入りの声優さんに語り掛けてもらうんですよw。
なので音声のうちBGMがほぼない箇所を抽出しそこだけつなげたサンプルを作ったわけですね。
※現状は法律がないのでセーフらしいですが、個人的に使うにとどめるべきでしょう。
サンプルはこちら
(私のところで生成したバイナリデータだから大丈夫なはず)
5秒音声でのクローン。
たぶん誰の声が元かわかるが、ちょっとこれじゃない感がある。
18秒の音声でクローンしたもの。
こっちはガチで本物そっくり…。悪用厳禁です。
ただし切り貼りした影響か、ちょっとおかしいですねw
パフォーマンス
RTX 5070 Tiで実行した結果がこちら。
VRAMは4.5G程度消費しました。
GPU使用率が上限まで行かないので性能を出し切れていないですね。

生成に要した時間はこんな感じ。
モデルロードに3秒。
クローン1秒。
生成8秒。(この時の音声の実長は5秒)

軽量版も試す
5070Tiでこの時間かかると他に持って行ったとき遅そうだと思ったので、軽量も試します。
パフォーマンス
VRAM 2.8Gくらい

生成は8秒
あれ、あんま早くなってないぞ…

サンプル
うん、思いっきりイントネーションとか変ですね。
使えるなら大きいほうを使いましょう
CPUで演算する
GPUなんてないって人のほうが多いです。まぁこの業界に限ればそうでもなさそうですがw
というわけでCPUやっていきます。
CPU使用率
Ryzen7 9700Xです。50%以上行きませんね?

メモリ使用率
9GBくらいですね。GPUに比べて倍。つまりfp32か?
DDR5 3600Mzです

生成時間
驚異の30秒!おっそ!
5秒程度の音声合成にこれですか…バッチ処理で放置ならまぁありかもですが、できなくはない程度の認識でいたほうがよさそう。

歌からクローンしてみる
思ったんです。イントネーションなども細かく再現するのであれば、歌声からクローンしたら、ミュージカルみたいな何にしゃべらせても歌っているモデルができるのではないかと?
というわけでやります!
やり方は簡単。お好きなキャラクターソングとそのカラオケ版を購入。
オーディオ編集ソフトに取り込み、カラオケ版の位相を反転させる。
すると1.1 + (-1.0) = 0.1 的な感じでBGMがほぼ消える。
うまく消えない場合は波形を拡大して、先頭がそろっているか確認。1フレームでもずれていてはいけません。伴奏のうちの高い山を目印に揃えます。

出来上がったらこの中で特によく声だけ出ていて歌詞が聞き取りやすい部分を3秒以上カットして出力。
あとは読ませるだけ
結果
ミュージカルにはなりませんでした。つまらん。
サンプルが短すぎるからかもしれませんが、意外とBGMが消えてくれないので難しいですね。
同じ素材でも音声が変わる件
コードで音声が変わる
コードに改良を加えたところ、なんと音声の精度がガタ落ちしました…
何をしたかって、読み込みとトレーニングと生成のメソッドを持ったクラス化したのですよ…。
それだけで初回より悪い音声に…。
原因
プロンプトデータが物理的にどこにあるかのようです。
今回はGPU演算してるのですが、クラスで関数を分けた結果、どうやらプロンプト学習データがVRAM上にないため精度が違う?ようなことが発生してるっぽいです。
つまり全く同じデータを使っても、どのデバイスで演算するかで結果が変わるようです。
まぁLLMや画像生成AIも同じ入力に対して、デバイスが違うと違う結果を返しましたから当然といえば当然でしょうか。
仮にみんなで同じ結果を再現したいとなるとCPUなんですかね。遅いけど
同じ計算済みデータを使ってGPU / CPUで生成だけするとどうなるのか?
やり方
このAI、先にクローン用データを計算しておいて、あとから読み込みができます。
この特性を生かして、GPUでクローン→保存
GPUに読み込み/CPUに読み込み→それぞれで生成
をやったらどうなるのか試してみました
結果
ちがうw
上の結果でそうだと思っていましたが、プロンプトを先に計算しておいて、それを使ってこれだけ差が出るとはw
GPU
CPU
1.7B => 0.6Bは可能か?
クローンの精度は1.7Bで、生成は0.6Bでできなかなぁ…
ダメでした。次元=パラメータ数が合わないようです。確かにそうですね。

複数音声で学習する
複数のファイルで学習
公式のサンプルコードで複数音声を投入していましたが、よく見ると毎回違うクローンを連続処理しているだけで、複数の音声を使って精度を上げるような意味ではなさそうです。
というわけで少々改造して複数の音声を使ったプロンプトを作成し、より高品質なものはできるか?試そうと思います。
それに、これなら切り貼りしなくてもいいので…。
というわけでGeminiと相談してできたのがこちら。
AIが作成した特徴量を平均化するというもの。素材の長さ関係なく通すことができます。

結果
悪くないんじゃないですかね?
入力したサンプルが悪そうならそれだけ弾くなど調整も効きます。
0.6Bの方で特に効果を発揮しそうです
一部微妙なサンプルもあるのでイントネーションが若干あれですが、声はオリジナルにかなり近づいています。
まとめ
今回はQwen3-ttsを試してみました。
一部のライブラリがうまくはいらないなどありましたので、速度はそんなに出ませんでしたが、自由に声をクローンして好き勝手出来るというのはやばいですね。
VOCEVOXをよく使っていましたが、あれはキャラを切り替えるとメモリをバガ食いするんですよね(キャラごとにモデルファイルが違う)…。
それに比べこれならプロンプトファイル(30Kb程度)を切り替えるだけでいろんなキャラを演じることができる。そういった意味でも結構強力です(生成速度は遅いが)。
そういえば、話速って変えられるんですかね?それっぽいのはありませんが。となると吹き替えにはまだ使えないか??
使い方は自由だと思いますが、くれぐれも下手なことはしないようにしましょう。
リンク集
感想投稿フォーム
コメントは公開で恥ずかしい!! Rcatだけに送りたい人向け
Pythonのインストール方法
ここから先は
情報が役に立ったと思えば、僅かでも投げ銭していただけるとありがたいです。
