概要
MaskGCT(Masked Generative Codec Transformer)は、完全非自回帰型のゼロショットテキストツーボイス(TTS)モデルです。このモデルは、テキストと音声監督間の明示的なアライメント情報や音素レベルの長さ予測を必要とせずに、高品質な音声合成を実現します。MaskGCTは、二段階のモデルで構成されており、第一段階ではテキストから音声自己監督学習(SSL)モデルで抽出された意味トークンを予測し、第二段階ではこれらの意味トークンに基づいて音響トークンを予測します。このモデルは、10万時間の実世界音声データセット Emilia 上でトレーニングされ、品質、類似性、理解性において現行の最先端のゼロショット TTS システムを上回っています。
MaskGCTの特徴
- 完全非自回帰:従来の自回帰モデルとは異なり、MaskGCTは並列に音声を生成するため、速度が速く、リアルタイムアプリケーションに適しています。
- ゼロショット能力:明示的なアライメント情報や音素長さ予測を必要とせずに、ゼロショット音声合成が可能です。
- マスクと予測に基づく:マスクと予測の学習パラダイムを採用し、モデルのロバスト性和汎化能力を向上させます。
- 二段階モデル:音声生成を意味エンコーディングと音響デコーディングの二つの段階に分けることで、モデル構造を簡素化し、トレーニング効率を向上させます。
- 高性能:複数のベンチマークテストで、MaskGCTは音声品質、類似性、理解性において最先端の性能を発揮しています。
- マルチランゲージサポート:Emilia データセット上でトレーニングされたモデルは、英語と中国語をサポートしており、マルチランゲージ拡張の可能性を示唆しています。
MaskGCTのシステム概要
MaskGCTは、次の4つの主要なコンポーネントから構成されています:
- 音声意味表現エンコーダー:音声を意味トークンに変換します。
- テキストツーメaningモデル:テキストとプロンプト意味トークンに基づいて意味トークンを予測します。
- 意味ツーム音響モデル:意味トークンに基づいて音響トークンを予測します。
- 音声音響エンコーダー:音響トークンから波形を再構築します。
MaskGCTのインストールと使用方法
1. コードリポジトリをクローンし、環境を作成する
git clone https://github.com/open-mmlab/Amphion.git
# create env
bash ./models/tts/maskgct/env.sh
env.sh
スクリプトは、必要な環境変数を設定し、依存関係をインストールします。具体的な依存関係は env.sh
ファイルの内容を確認してください。
2. 事前トレーニングされたモデルをダウンロードする
MaskGCTは、複数の事前トレーニングされたモデルチェックポイントを提供しています。これらのチェックポイントは Hugging Face Hub からダウンロードできます:
from huggingface_hub import hf_hub_download
import safetensors
semantic_code_ckpt = hf_hub_download("amphion/MaskGCT", filename="semantic_codec/model.safetensors")
codec_encoder_ckpt = hf_hub_download("amphion/MaskGCT", filename="acoustic_codec/model.safetensors")
codec_decoder_ckpt = hf_hub_download("amphion/MaskGCT", filename="acoustic_codec/model_1.safetensors")
t2s_model_ckpt = hf_hub_download("amphion/MaskGCT", filename="t2s_model/model.safetensors")
s2a_1layer_ckpt = hf_hub_download("amphion/MaskGCT", filename="s2a_model/s2a_model_1layer/model.safetensors")
s2a_full_ckpt = hf_hub_download("amphion/MaskGCT", filename="s2a_model/s2a_model_full/model.safetensors")
これらのチェックポイントをモデルに読み込むには、safetensors.torch.load_model()
関数を使用します。
3. モデルの構築と読み込み
提供されている Python コードでは、MaskGCT の各コンポーネント(意味モデル (w2v-bert-2.0)、意味エンコーダー、音響エンコーダー、T2S モデル、S2A モデル (2つの異なる層数のバージョン))の構築と読み込み方法が示されています。各コンポーネントの構築関数について詳しく説明されており、事前トレーニングされたウェイトは safetensors.torch.load_model()
で読み込まれます。
4. 推論
maskgct_inference.py
には推論のサンプルコードが提供されています。ユーザーはプロンプト音声ファイルのパス (prompt_wav_path
)、プロンプトテキスト (prompt_text
)、目標テキスト (target_text
)、言語コード ("en"
または "zh"
)、目標長さ (target_len
, オプション) を提供する必要があります。コードは maskgct_inference_pipeline.maskgct_inference()
関数を呼び出し、生成された音声を指定されたパスに保存します。
from models.tts.maskgct.maskgct_utils import *
from huggingface_hub import hf_hub_download
import safetensors
import soundfile as sf
if __name__ == "__main__":
device = torch.device("cuda:0")
cfg_path = "./models/tts/maskgct/config/maskgct.json"
cfg = load_config(cfg_path)
semantic_model, semantic_mean, semantic_std = build_semantic_model(device)
semantic_codec = build_semantic_codec(cfg.model.semantic_codec, device)
codec_encoder, codec_decoder = build_acoustic_codec(cfg.model.acoustic_codec, device)
t2s_model = build_t2s_model(cfg.model.t2s_model, device)
s2a_model_1layer = build_s2a_model(cfg.model.s2a_model.s2a_1layer, device)
s2a_model_full = build_s2a_model(cfg.model.s2a_model.s2a_full, device)
...
safetensors.torch.load_model(semantic_codec, semantic_code_ckpt)
safetensors.torch.load_model(codec_encoder, codec_encoder_ckpt)
safetensors.torch.load_model(codec_decoder, codec_decoder_ckpt)
safetensors.torch.load_model(t2s_model, t2s_model_ckpt)
safetensors.torch.load_model(s2a_model_1layer, s2a_1layer_ckpt)
safetensors.torch.load_model(s2a_model_full, s2a_full_ckpt)
prompt_wav_path = "./models/tts/maskgct/wav/prompt.wav"
save_path = "[YOUR SAVE PATH]"
prompt_text = "We do not break. We never give in. We never back down."
target_text = "In this paper, we introduce MaskGCT, a fully non-autoregressive TTS model that eliminates the need for explicit alignment information between text and speech supervision."
target_len = 18
maskgct_inference_pipeline = MaskGCT_Inference_Pipeline(
semantic_model,
semantic_codec,
codec_encoder,
codec_decoder,
t2s_model,
s2a_model_1layer,
s2a_model_full,
semantic_mean,
semantic_std,
device,
)
recovered_audio = maskgct_inference_pipeline.maskgct_inference(
prompt_wav_path, prompt_text, target_text, "en", "en", target_len=target_len
)
sf.write(save_path, recovered_audio, 24000)
MaskGCTのケーススタディ
提供されているサンプルコードでは、プロンプトテキストと目標テキストが次のようになっています:
prompt_text: "We do not break. We never give in. We never back down."
target_text: "In this paper, we introduce MaskGCT, a fully non-autoregressive TTS model that eliminates the need for explicit alignment information between text and speech supervision."
このコードは、プロンプト音声とテキストから新しい音声を生成する方法を示しています。prompt_wav_path
, prompt_text
, target_text
, target_len
などのパラメーターを変更することで、 various experiments を行うことができます。たとえば:
- 異なるプロンプト音声を使用して、生成される音声のスタイルを変更する。
- 異なる目標テキストを使用して、異なる音声コンテンツを生成する。
- 目標長さを調整して、生成される音声の長さを制御する。
各モジュールの詳細内容:
- 意味モデル (Semantic Model): w2v-bert-2.0 モデルを使用してテキストを意味表現に変換します。
- 意味エンコーダー (Semantic Codec): 音声を意味トークンに変換し、逆変換します。
- 音響エンコーダー (Acoustic Codec): 音声を音響トークンに変換し、音響トークンから波形を再構築します。
- T2S モデル (T2S Model): テキストとプロンプト意味トークンに基づいて意味トークンを予測します。
- S2A モデル (S2A Model): 意味トークンに基づいて音響トークンを予測します。単層と多層の2つのバージョンが提供されています。
- MaskGCT_Inference_Pipeline: すべてのコンポーネントの推論プロセスを統合します。
0. ゼロショットコンテキスト学習
最初の4つのプロンプト音声は Seed-TTS のデモページから来ています。
1. 名人やアニメキャラクターの模倣
MaskGCTは、有名人やアニメキャラクターの声を模倣することができます。これらの例を示すのは純粋に研究目的です。
2. 感情サンプル
MaskGCTは、プロンプト音声のリズム、スタイル、感情を学ぶことができます。
3. 音声スタイル模倣
MaskGCTは、発声の方法(感情やアクセントなどのスタイル)を学び、プロンプト音声に基づいています。
4. 音声スピードの可制御性
MaskGCTは、生成される音声の総長さを制御することができ、 thereby allowing us to adjust the speed of the generated speech within a reasonable range.
5. ロバスト性
自回帰(AR)モデルと比較して、MaskGCTはより高いロバスト性(低いエラー率)を示し、AR モデルが幻覚を起こしやすいいくつかの困難なケース(例えば、早口言葉や AR モデルが幻覚を起こしやすいサンプル)でより高い安定性を示しています。
6. 音声編集
マスクと予測メカニズムに基づいて、テキストから意味モデルはゼロショット音声コンテンツ編集をサポートし、テキスト - 音声アライメントツールを介してです。このアライメントツールを使用する際、私たちは元の意味マークシーケンスの編集境界を特定し、編集が必要な部分をマスクし、次に、編集されたテキストとマスクされていない意味マークを使用して、マスクされた意味マークを予測します。
7. 音声変換
MaskGCTは、S2A(意味から音響)モデルのファインチューニングを通じてゼロショット音声変換をサポートし、改善されたトレーニング戦略を採用しています。私たちはまだ音声変換の効果を向上させるために努力しています。ソースサンプルとプロンプトサンプルは Seed-TTS のデモページから来ています。
8. 言語間ビデオ翻訳
いくつかのビデオ翻訳サンプルが示されていますが、これは純粋にエンターテイメント目的でのみです。
結論
MaskGCTのリリースは、音声合成技術に顕著な進歩をもたらしました。多言語処理と音声生成の自然度の突破は、音声合成の将来の発展の基礎を築きました。しかし、AI 音声合成技術の急速な発展とともに、将来の課題も無視できません。例えば、より多くの言語や方言の処理ニーズを満たすために、将来のモデルはより強力な意味理解とより細かい音声合成能力が必要です。
Fish Audio チームは、将来モデルのアーキテクチャをさらに最適化し、拡張性を持たせる計画です。同時に、多言語トレーニングデータへの投資を継続的に増やし、Fish Agent の跨言語処理パフォーマンスをさらに向上させる予定です。
aiスピーキング
ドルフィンAIは言語学習アプリケーションのためのプロフェッショナルな発音評価API(pronunciation assessment api)ソリューションを提供します。音素、単語、文章、チャプター、発音矯正、単語矯正、クイズ、フリーダイアログ、多肢選択問題など幅広く提供しています。当社の発音評価製品(pronunciation assessment)は、英語と中国語、クラウドAPI、オンプレミス、オフラインデバイスの展開をサポートしています。当社の発音評価API(pronunciation assessment api)は、正確性、流暢性、完全性、リズムの次元をカバーする豊富な評価指標を提供し、音素、単語、文の異なるレベルの評価スコアも提供します。また、音素、単語、文の異なるレベルでの評価スコアも提供します。数千万人のユーザーに安定した効率的で安全なサービスを提供しています。ドルフィンAIの発音評価製品(pronunciation assessment)を試してみませんか?