Closed7

精度高い音声クローンができる「Index-TTS」を試す(英・中のみ)

kun432kun432

GitHubレポジトリ

https://github.com/index-tts/index-tts

IndexTTS:産業レベルの制御可能かつ高効率なゼロショット音声合成システム

IndexTTS は、主に XTTS および Tortoise に基づいた GPT スタイルの音声合成(TTS)モデルです。漢字の発音修正にはピンインを用い、句読点を通じて任意の位置でのポーズ制御が可能です。話者条件特徴表現の改善や音質最適化のための BigVGAN2 の統合など、システムの複数のモジュールを強化しました。数万時間分のデータでトレーニングされた本システムは、XTTS、CosyVoice2、Fish-Speech、F5-TTS などの現在主流のTTSシステムを凌駕する最先端の性能を実現しています。

🖥️ 手法

IndexTTS の概要は以下の図に示します。


referred from https://github.com/index-tts/index-tts

主な改良点と貢献は以下の通りです:

  • 中国語シナリオにおいて、文字とピンインのハイブリッドモデリング方式を導入し、誤読文字の迅速な修正を可能にしました。
  • IndexTTS は、Conformer ベースの条件エンコーダおよび BigVGAN2 ベースの speechcode デコーダを統合し、トレーニングの安定性、話者音色の類似度、音質を向上させました。
  • 多音節語、主観・客観的テストセットを含むすべてのテストセットを公開しています。

モデルダウンロード

HuggingFace ModelScope
IndexTTS IndexTTS
😁IndexTTS-1.5 IndexTTS-1.5

📑 評価

IndexTTSおよびベースラインモデルにおける seed-test に基づく WER(単語誤り率)の比較

WER test_zh test_en test_hard
人間 1.26 2.14 -
SeedTTS 1.002 1.945 6.243
CosyVoice 2 1.45 2.57 6.83
F5TTS 1.56 1.83 8.67
FireRedTTS 1.51 3.82 17.45
MaskGCT 2.27 2.62 10.27
Spark-TTS 1.2 1.98 -
MegaTTS 3 1.36 1.82 -
IndexTTS 0.937 1.936 6.831
IndexTTS-1.5 0.821 1.606 6.565

その他のオープンソーステストセットにおける WER(単語誤り率)

モデル aishell1_test commonvoice_20_test_zh commonvoice_20_test_en librispeech_test_clean 平均
人間 2.0 9.5 10.0 2.4 5.1
CosyVoice 2 1.8 9.1 7.3 4.9 5.9
F5TTS 3.9 11.7 5.4 7.8 8.2
Fishspeech 2.4 11.4 8.8 8.0 8.3
FireRedTTS 2.2 11.0 16.3 5.7 7.7
XTTS 3.0 11.4 7.1 3.5 6.0
IndexTTS 1.3 7.0 5.3 2.1 3.7
IndexTTS-1.5 1.2 6.8 3.9 1.7 3.1

IndexTTSおよびベースラインモデルにおける話者類似度(Speaker Similarity, SS)

モデル aishell1_test commonvoice_20_test_zh commonvoice_20_test_en librispeech_test_clean 平均
人間 0.846 0.809 0.820 0.858 0.836
CosyVoice 2 0.796 0.743 0.742 0.837 0.788
F5TTS 0.743 0.747 0.746 0.828 0.779
Fishspeech 0.488 0.552 0.622 0.701 0.612
FireRedTTS 0.579 0.593 0.587 0.698 0.631
XTTS 0.573 0.586 0.648 0.761 0.663
IndexTTS 0.744 0.742 0.758 0.823 0.776
IndexTTS-1.5 0.741 0.722 0.753 0.819 0.771

ゼロショットでの音声クローンに対する MOS スコア

モデル プロソディ 音色 音質 平均
CosyVoice 2 3.67 4.05 3.73 3.81
F5TTS 3.56 3.88 3.56 3.66
Fishspeech 3.40 3.63 3.69 3.57
FireRedTTS 3.79 3.72 3.60 3.70
XTTS 3.23 2.99 3.10 3.11
IndexTTS 3.79 4.20 4.05 4.01

日本語には未対応の様子

kun432kun432
kun432kun432

READMEに従って試してみる。Colaboratory T4で。

レポジトリクローン

!git clone https://github.com/index-tts/index-tts.git
%cd index-tts

パッケージインストール。ランタイムを一度再起動する必要がある。

!pip install -r requirements.txt

再起動後にカレントディレクトリが元に戻ってしまうので再度クローンしたディレクトリに移動

%cd index-tts

モデルのダウンロード。Colaboratoryは huggingface-cli もデフォルトでインストール済なのね。

!huggingface-cli download IndexTeam/IndexTTS-1.5 \
  config.yaml \
  bigvgan_discriminator.pth \
  bigvgan_generator.pth \
  bpe.model \
  dvae.pth \
  gpt.pth \
  unigram_12000.vocab \
  --local-dir checkpoints

音声クローンのリファレンス用の音声ファイルを用意する。まずtest_dataディレクトリを作成。

!mkdir test_data

上記に input.wav という名前で音声ファイルをアップロードする。今回は、自分の声を録音した7秒程度のWAVファイルを使用した。

テスト用スクリプトが用意されているのでこれを実行する(テスト用といいつつ、このファイルは推論用のクラスが定義されたファイルとなっている。)

!!PYTHONPATH=. python indextts/infer.py
出力
(snip)
>> Reference audio length: 7.23 seconds
>> gpt_gen_time: 4.88 seconds
>> gpt_forward_time: 0.07 seconds
>> bigvgan_time: 0.58 seconds
>> Total inference time: 5.97 seconds
>> Generated audio length: 4.01 seconds
>> RTF: 1.4875
>> wav file saved to: gen.wav

上記のように表示されればOK。カレントディレクトリに gen.wav が生成されている。Colaboratoryで再生する場合は以下。

from IPython.display import Audio

Audio("gen.wav")

英語で音声が聞こえてくると思う。リファレンスの音声ファイルとかなり近しい精度でクローンされているのがわかる。

Pythonで書く場合は以下。

from indextts.infer import IndexTTS

tts = IndexTTS(model_dir="checkpoints",cfg_path="checkpoints/config.yaml")

# リファレンス音声
voice="test_data/input.wav"

# 出力ファイル
output_file = "output.wav"

# 発話させるテキスト。中国語 or 英語で。
#text="大家好,我现在正在bilibili 体验 ai 科技,说实话,来之前我绝对想不到!AI技术已经发展到这样匪夷所思的地步了!"
text="Hello everyone, I am currently experiencing AI technology. To be honest, I never would have imagined this before coming here! AI technology has developed to such an incredible level!"

tts.infer(voice, text, output_file)

上のコードだとIndexTTSの初期化部分も含まれているけど、生成単体は10数秒程度。

出力
(snip)
>> start inference...
wav shape: torch.Size([1, 348160]) min: tensor(-11024., device='cuda:0', dtype=torch.float16) max: tensor(6940., device='cuda:0', dtype=torch.float16)
>> Reference audio length: 7.23 seconds
>> gpt_gen_time: 11.75 seconds
>> gpt_forward_time: 0.07 seconds
>> bigvgan_time: 0.67 seconds
>> Total inference time: 12.78 seconds
>> Generated audio length: 14.51 seconds
>> RTF: 0.8806
>> wav file saved to: output.wav
output.wav
Audio("output.wav")

テキストを入れ替えて、英語・中国語をそれぞれ試してみると良い。かなり高い精度でクローンされているのがわかる。


VRAM消費は5GBってところかな

出力
Fri May 16 20:17:28 2025       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15              Driver Version: 550.54.15      CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  Tesla T4                       Off |   00000000:00:04.0 Off |                    0 |
| N/A   73C    P0             34W /   70W |    5010MiB /  15360MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
kun432kun432

ところで IndexTTS 初期化時に以下の Warning が出ている。

出力
>> GPT weights restored from: checkpoints/gpt.pth
>> DeepSpeed加载失败,回退到标准推理: No module named 'deepspeed'
>> Failed to load custom CUDA kernel for BigVGAN. Falling back to torch.
No modifications detected for re-loaded extension module anti_alias_activation_cuda, skipping build step...

deepspeedをインストールするだけじゃ解決しなくて、多分以下あたり。

https://github.com/index-tts/index-tts/pull/92

ちょっとここは自分の知識ではわからなかった。ここが解決すると推論時間が結構短くなりそうなんだけど。

kun432kun432

まとめ

参考にさせてもらった記事にもあったけど、音声クローンとしての精度は確かに非常に高いな。

過去に音声クローンをいくつか試した感じからすると、クローン精度を上げるにはリファレンスに使用する音声ファイルの品質が重要(品質が高ければクローンされた音声として生成されるが、適当にマイクで録ったような音声だと全然違う声になりクローン感がない)だと感じていたのが、Index TTSはリファレンス音声の質が低くても、非常に精度高いと感じた。

推論速度が高速になれば音声チャットでも十分使えそう。日本語サポートはいろんな面で簡単ではなさそうだが、今後に期待。

このスクラップは4ヶ月前にクローズされました