MaskGCT: マスクされた生成コーデックトランスフォーマーによるゼロショットテキストトゥスピーチ

この記事は約10分で読めます。

クイックスタート

クローンとインストール

git clone https://github.com/open-mmlab/Amphion.git 
# 環境を作成
bash ./models/tts/maskgct/env.sh

モデルのダウンロード

以下の事前学習済みのチェックポイントを提供しています:

モデル名 説明
セマンティック コーデック 音声をセマンティックトークンに変換します。
アコースティック コーデック 音声をアコースティックトークンに変換し、アコースティックトークンから波形を再構成します。
MaskGCT-T2S テキストとプロンプトセマンティックトークンでセマンティックトークンを予測します。
MaskGCT-S2A セマンティックトークンに基づいてアコースティックトークンを予測します。

HuggingFaceまたはhuggingface APIを使用して、すべての事前学習済みのチェックポイントをダウンロードできます。

from huggingface_hub import hf_hub_download

# セマンティックコーデックckptをダウンロード
semantic_code_ckpt = hf_hub_download("amphion/MaskGCT", filename="semantic_codec/model.safetensors")

# アコースティックコーデックckptをダウンロード
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モデルckptをダウンロード
t2s_model_ckpt = hf_hub_download("amphion/MaskGCT", filename="t2s_model/model.safetensors")

# s2aモデルckptをダウンロード
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")

基本的な使用方法

以下のコードを使用して、テキストとプロンプト音声から音声を生成できます。

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)
    # 1. セマンティックモデル(w2v-bert-2.0)をビルド
    semantic_model, semantic_mean, semantic_std = build_semantic_model(device)
    # 2. セマンティックコーデックをビルド
    semantic_codec = build_semantic_codec(cfg.model.semantic_codec, device)
    # 3. アコースティックコーデックをビルド
    codec_encoder, codec_decoder = build_acoustic_codec(cfg.model.acoustic_codec, device)
    # 4. t2sモデルをビルド
    t2s_model = build_t2s_model(cfg.model.t2s_model, device)
    # 5. s2aモデルをビルド
    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)
    # t2sモデルをロード
    safetensors.torch.load_model(t2s_model, t2s_model_ckpt)
    # s2aモデルをロード
    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 = Noneの場合、単純なルールを使用してターゲット持続時間を予測します。
    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)        

トレーニングデータセット

私たちは、Emiliaデータセットを使用してモデルをトレーニングします。Emiliaは、大規模な音声生成を目的として設計された多言語で多様な野外音声データセットです。この研究では、Emiliaの英語と中国語のデータを使用しています。それぞれ50K時間の音声を持ち、合計100K時間を超えています。

引用

MaskGCTを研究で使用する場合は、以下の論文を引用してください:

@article{wang2024maskgct,
  title={MaskGCT: Zero-Shot Text-to-Speech with Masked Generative Codec Transformer},
  author={Wang, Yuancheng and Zhan, Haoyue and Liu, Liwei and Zeng, Ruihong and Guo, Haotian and Zheng, Jiachen and Zhang, Qiang and Zhang, Xueyao and Zhang, Shunsi and Wu, Zhizheng},
  journal={arXiv preprint arXiv:2409.00750},
  year={2024}
}
@inproceedings{amphion,
    author={Zhang, Xueyao and Xue, Liumeng and Gu, Yicheng and Wang, Yuancheng and Li, Jiaqi and He, Haorui and Wang, Chaoren and Song, Ting and Chen, Xi and Fang, Zihao and Chen, Haopeng and Zhang, Junan and Tang, Tze Ying and Zou, Lexiao and Wang, Mingxuan and Han, Jun and Chen, Kai and Li, Haizhou and Wu, Zhizheng},
    title={Amphion: An Open-Source Audio, Music and Speech Generation Toolkit},
    booktitle={{IEEE} Spoken Language Technology Workshop, {SLT} 2024},
    year={2024}
}

GitHubのリンクは解析できませんでしたが、リンク自体に問題があるか、ネットワークに問題がある可能性があります。リンクを再度確認し、適宜リトライしてください。もしリンクの解析が必要な場合は、再度お知らせください。それ以外の質問があれば、どうぞお気軽に。

ドルフィンAIは言語学習アプリケーションのためのプロフェッショナルな発音評価API(pronunciation assessment api)ソリューションを提供します。音素、単語、文章、チャプター、発音矯正、単語矯正、クイズ、フリーダイアログ、多肢選択問題など幅広く提供しています。当社の発音評価製品(pronunciation assessment)は、英語と中国語、クラウドAPI、オンプレミス、オフラインデバイスの展開をサポートしています。当社の発音評価API(pronunciation assessment api)は、正確性、流暢性、完全性、リズムの次元をカバーする豊富な評価指標を提供し、音素、単語、文の異なるレベルの評価スコアも提供します。また、音素、単語、文の異なるレベルでの評価スコアも提供します。数千万人のユーザーに安定した効率的で安全なサービスを提供しています。ドルフィンAIの発音評価製品(pronunciation assessment)を試してみませんか?

タイトルとURLをコピーしました