F5-TTSで音声合成を試す

初めに

Flow MatchingとDiffusion Transformer(DiT)を基盤にした完全な非自己回帰型テキスト音声合成(TTS)である F5-TTSが公開されています

以下 ライブラリの詳細です( ReadMeより ChatGPTから生成したものです)

構成要素の概要

エンコーダー(Encoder)

エンコーダーは、テキスト入力を音声に変換するための特徴表現を生成する役割を果たします。このシステムでは、ConvNeXTブロックを使用して、テキスト入力を時間的に調整された音声特徴と一致させることができます。この部分は従来のTTSで使われていた複雑な設計(例: Duration Model, Text Encoder, Phoneme Alignment)を排除し、単にテキストに「Filler Tokens」をパディングして音声の長さに合わせるという簡単な手法を取っています。これにより、モデルはテキストと音声のアライメントを簡単に行えるようにしています。

デコーダー(Decoder)

デコーダーは、エンコーダーからの特徴表現を用いて最終的な音声を生成します。このシステムでは、DiTブロック(Diffusion Transformer)がその役割を担います。DiTブロックは、予測されたフローを基に音声を生成するための時間ステップごとのスケーリングや変換を行います。このプロセスでは、時間ステップ ( t \sim U[0,1] ) から始まり、入力データを次々と処理していく「拡散プロセス」が適用されます。

ボコーダーVocoder

ボコーダーは、最終的に生成された音声スペクトログラムを実際の波形データに変換する部分です。このシステムでは、「ODE Solver」というプロセスを通じて、生成された音声メルスペクトログラムを波形データに変換します。これにより、生成されたメルスペクトログラムを直接人間の耳に聞こえる音声に変換する役割を果たします。

特徴的な部分

Sway Sampling

推論時に適用されるサンプリング戦略で、既存のFlow Matchingベースのモデルにも再トレーニングなしで適用可能です。これにより、効率と性能が大幅に向上します。推論リアルタイムファクター(RTF)は0.15と、従来の拡散ベースのTTSモデルと比較して大幅に改善されています。

ConvNeXT

入力テキストの特徴抽出にはConvNeXTブロックを使用し、これは近年の画像処理モデルで高い性能を示しているアーキテクチャです。このモデルは、テキストと音声の特徴表現を精緻に整列させる役割を果たし、従来のテキストエンコーダーよりも効率的です。

レーニングと推論

レーニングデータ

システムは100K時間の多言語データセットでトレーニングされており、その結果、高い自然性や表現力を持つ音声を生成できます。また、コードスイッチング(異なる言語間での切り替え)や速度制御も可能で、幅広い用途に対応できます。

非自己回帰型TTS

非自己回帰型TTSは、自己回帰型のモデルと異なり、推論時に音声フレームを一度に並列生成するため、速度が速くなるという利点があります。このF5-TTSシステムは、従来の自己回帰型モデルと比べて大幅な速度向上を実現しています。

環境

準備

ライブラリのインストール

公式のリポジトリだと動かなかったので、以下で修正したものがあります

github.com

uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
uv pip install -r requirements.txt

事前学習モデルの配置

以下から各モデルをダウンロードして、画像のように配置します

huggingface.co

実行

以下でttsの推論をすることができます

uv run .\test_infer_single.py

使用する事前学習モデルを変更する場合は、以下の箇所を変更します

exp_name = "E2TTS_Base"  # F5TTS_Base | E2TTS_Base

推論時の参照音声および生成するテキストを変更するには、以下の変更します

ref_audio = "tests/ref_audio/test_en_1_ref_short.wav"
ref_text = "Some call me nature, others call me mother nature."
gen_text = "I don't really care what you call me. I've been a silent spectator, watching species evolve, empires rise and fall. But always remember, I am mighty and enduring. Respect me and I'll nurture you; ignore me and you shall face the consequences."