AIパーソナル・ラーニング
と実践的なガイダンス

Amphion MaskGCT: ゼロサンプル音声合成クローンモデル (ローカルのワンクリックデプロイパッケージ)

はじめに

MaskGCT (Masked Generative Codec Transformer)は、Funky Maru Technologyと香港中文大学が共同開発した完全非自律回帰型音声合成(TTS)モデルである。MaskGCTは、ゼロサンプルTTSタスクで優れた性能を発揮し、高品質で類似した、理解しやすい音声出力を提供する。

公開ベータ製品:ボイスクローン&動画多言語翻訳ツール「ふんまる千代

論文:https://arxiv.org/abs/2409.00750

Amphion MaskGCT: ゼロサンプル音声合成クローンモデル (ローカルのワンクリックデプロイパッケージ)

オンラインデモ:https://huggingface.co/spaces/amphion/maskgct


 

機能一覧

  • 音声合成 (TTS)入力テキストを音声出力に変換します。
  • 意味符号化音声を意味コーディングに変換し、後続の処理を行う。
  • 音響コード意味符号化を音響符号化に変換し、音声波形を再構成する。
  • ゼロサンプル学習明示的なアライメント情報を必要としない高品質音声合成。
  • 事前学習モデル迅速な展開と利用をサポートするために、事前に訓練された幅広いモデルが利用可能です。

ヘルプの使用

設置プロセス

  1. クローンプロジェクト::
    git clone https://github.com/open-mmlab/Amphion.git
    
  2. 環境の作成と依存関係のインストール::
    bash ./models/tts/maskgct/env.sh
    

使用プロセス

  1. 訓練済みモデルのダウンロード必要な訓練済みモデルはHuggingFaceからダウンロードできます:
    from huggingface_hub import hf_hub_download
    #のセマンティックコードモデルをダウンロード
    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")
    # TTSモデルのダウンロード
    t2s_model_ckpt = hf_hub_download("amphion/MaskGCT", filename="t2s_model/model.safetensors")
    
  2. スピーチの生成次のコードを使って、テキストから音声を生成してください:
    # 必要なライブラリをインポートする
    from amphion.models.tts.maskgct import MaskGCT
    # モデルの初期化
    model = MaskGCT()
    # テキストを入力
    text = "こんにちは、MaskGCTモデルへようこそ。"
    音声を生成
    audio = model.text_to_speech(text)
    # 生成された音声を保存
    with open("output.wav", "wb") as f.
    f.write(audio)
    
  3. モデルトレーニング独自のモデルをトレーニングする必要がある場合は、プロジェクト内のトレーニングスクリプトと設定ファイルを参照して、データの準備とモデルのトレーニングを行うことができます。

ほら

  • 環境設定必要な依存ライブラリがすべてインストールされ、環境変数が正しく設定されていることを確認してください。
  • データ準備より良い音声合成のために、高品質な音声データを用いてトレーニングを行う。
  • モデルの最適化特定のアプリケーションシナリオに従って最適なパフォーマンスを達成するために、モデルのパラメータとトレーニング戦略を調整します。

 

ローカル展開のチュートリアル(ローカルのワンクリックインストーラ付き)

数日前、別の非自己回帰型音声合成AIモデルであるMaskGCTのソースコードが公開された。 MaskGCTモデルは、同じく非自己回帰型であるF5-TTSモデルと同様、10万時間のデータセットEmiliaで学習され、中国語、英語、日本語、韓国語、フランス語、ドイツ語の6言語のクロスランゲージ合成に精通している。データセットEmiliaは、世界で最も大規模かつ多様な高品質多言語音声データセットの一つである。

今回は、MaskGCTプロジェクトをローカルにデプロイして、グラフィックカードを再び起動させる方法を紹介します。

基本的な依存関係のインストール

まず最初に、Python 3.11がローカルにインストールされていることを確認してください。Pythonの公式サイトからパッケージをダウンロードできます。

python.org

公式プロジェクトの後続クローン。

git clone https://github.com/open-mmlab/Amphion.git

公式のlinuxベースのインストールシェルスクリプトが提供されています:

pip install setuptools ruamel.yaml tqdm
pip install tensorboard tensorboardX torch==2.0.1
pip install transformers===4.41.1
pip install -U encodec
pip install black==24.1.1
pip install oss2
sudo apt-get install espeak-ng
pip install phonemizer
pip install g2p_ja
pip install accelerate==0.31.0
pip install funasr zhconv zhon modelscope
# pip install git+https://github.com/lhotse-speech/lhotse
pip install timm
pip install jieba cn2an
pip install unidecode
pip install -U cos-python-sdk-v5
pip install pypinyin
pip install jiwer
pip install omegaconf
pip install pyworld
pip install py3langid==0.2.2 LangSegment
pip install onnxruntime
pip install pyopenjtalk
pip install pykakasi
pip install -U openai-whisper

ここで著者は、Windows用のrequirements.txt依存性ファイルを変換する:

セットアップツール
ruamel.yaml
tqdm
transformers===4.41.1
エンコード
black==24.1.1
oss2
フォノイコライザー
g2p_ja
アクセラレート=0.31.0
funasr
zhconv
zhon
モデルスコープ
ティム
jieba
ユニコード
ユニコード
cos-python-sdk-v5
cos-python-sdk-v5
cos-python-sdk
オメガコンフ
pyworld
py3langid==0.2.2
ラングセグメント
onnxruntime
pyopenjtalk
pykakasi
openai-whisper
json5

コマンドを実行する:

pip3 install -r requirements.txt

依存関係をインストールするだけだ。

onnxruntime-gpuをインストールする。

pip3 install onnxruntime-gpu

トーチ3点セットの取り付け。

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

Windowsの設定 espeak-ng

MaskGCTプロジェクトは、バックエンドにespeakソフトウェアを使用しているため、ローカルで設定する必要があります。レゾナンス・ピーク・シンセシス(共鳴ピーク合成)」アプローチを採用しており、小さな設置面積で多言語を提供できる。MaskGCTは、espeakの合成に二次的推論を加えたものである。

まず、espeakをインストールするコマンドを実行する:

ウィングト・インストール・エスピーク

インストールできない場合は、インストーラーをダウンロードして手動でインストールすることもできる:

https://sourceforge.net/projects/espeak/files/espeak/espeak-1.48/setup_espeak-1.48.04.exe/download

次にespeak-ngのインストーラーをダウンロードする:

https://github.com/espeak-ng/espeak-ng/releases

ダウンロードしてダブルクリックしてインストールする。

次に、C:∕Program Files∕Speak NG∕libespeak-ng.dll を C:∕Program Files (x86)∕Sm_2215↩command_line ディレクトリにコピーします。

libespeak-ng.dllをespeak-ng.dllにリネームしてください。

最後に、C:˶Program Files (x86)˶Speakcommand_lineディレクトリを環境変数に設定するだけです。

マスクGCT局所推論

全ての設定が完了したら、推論スクリプト local_test.py を書きます:

from models.tts.maskgct.maskgct_utils import *
from huggingface_hub import hf_hub_download
import safetensors
sf としてサウンドファイルをインポート
import os
import argparse
os.environ['HF_HOME'] = os.path.join(os.path.dirname(__file__), 'hf_download')
print(os.path.join(os.path.dirname(__file__), 'hf_download'))
parser = argparse.ArgumentParser(description="GPT-SoVITS api")
parser.add_argument("-p","-prompt_text", type=str, default="私を受験して以来、何度か試験で良い結果を出したように話してください")
parser.add_argument("-a", "--audio", type=str, default="./said as if I've done well since you took me.wav")
parser.add_argument("-t", "--text", type=str, default="Hello")
parser.add_argument("-l", "--language", type=str, default="zh")
parser.add_argument("-lt", "---target_language", type=str, default="zh")
args = parser.parse_args()
if __name__ == "__main__".
#ダウンロードセマンティックコーデック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")
#ビルドモデル
device = torch.device("cuda")
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)
#ロードセマンティックコーデック
セーフセンサー.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 = args.audio
save_path = "output.wav"
prompt_text = args.prompt_text
target_text = args.text
# ターゲットの継続時間(秒)を指定する。 target_len = Noneの場合、単純なルールで持続時間を予測します。
target_len = None の場合、単純なルールで予測する。
maskgct_inference_pipeline = MaskGCT_Inference_Pipeline(
maskgct_inference_pipeline = MaskGCT_Inference_Pipeline(
semantic_model, semantic_codec, codec_encoder, codec_pipeline

codec_decoder, t2s_model, t2s_model
t2s_model、
s2a_model_1layer, s2a_model_full, codec_decoder, codec_decoder
s2a_model_full、
semantic_mean, semantic_std, s2a_model_full, semantic_mean
semantic_std、
デバイス、
)
recovered_audio = maskgct_inference_pipeline.maskgct_inference(
プロンプト_wav_path, プロンプト_テキスト, ターゲット_テキスト,args.language,args.target_language, target_len=target_len
)
sf.write(save_path, recovered_audio, 24000)

最初の推論は、hf_downloadディレクトリに10Gのモデルをダウンロードする。

推論処理には11Gのビデオメモリが必要だ:

Amphion MaskGCT: ゼロサンプル音声合成クローンモデル (ローカルのワンクリックデプロイパッケージ)

ビデオメモリが11G未満の場合は、Nvidiaコントロールパネルでシステムメモリフォールバックポリシーをオンにして、システムメモリ経由でビデオメモリを補充してください:

Amphion MaskGCT: ゼロサンプル音声合成クローンモデル (ローカルのワンクリックデプロイパッケージ)

お望みであれば、gradio, app.py:をベースにしたシンプルなwebuiインターフェイスを書くこともできます。

インポート os
インポート gc
インポートre
grとしてgradioをインポート
npとしてnumpyをインポート
インポートサブプロセス
os.environ['HF_HOME'] = os.path.join(os.path.dirname(__file__), 'hf_download')
# 環境変数HF_ENDPOINTの設定
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
reference_wavs = ["リファレンスオーディオを選択するか、自分でアップロードしてください"]。
for name in os.listdir("./Reference_Audio/"):: reference_wavs.
reference_wavs.append(name)
def change_choices(): reference_wavs = [reference_wavs.append(name)
reference_wavs = ["リファレンスオーディオを選択するか、自分でアップロードしてください"])
for name in os.listdir("./reference_wavs/"): reference_wavs.
reference_wavs.append(name)
return {"choices":reference_wavs, "__type__": "update"}.
def change_wav(audio_path): text = audio_path.
text = audio_path.replace(".wav","").replace(".mp3","").replace(".WAV","")
# text = replace_speaker(text)
return f"./参照オーディオ/{audio_path}",text
def do_cloth(gen_text_input,ref_audio_input,model_choice_text,model_choice_re,ref_text_input):
cmd = fr'.\{python.exe local_test.py -t "{gen_text_input}" -p "{ref_text_input}" -a "{ref_audio_input}" -l {model_choice_re} -lt {model_choice_text} '
print(cmd)
res = subprocess.Popen(cmd)
res.wait()
return "output.wav"
with gr.Blocks() as app_demo.
gr.Markdown(
"""
プロジェクトのアドレス:https://github.com/open-mmlab/Amphion/tree/main/models/tts/maskgct
統合パッケージ制作:Liu Yueの技術ブログ https://space.bilibili.com/3031494
"""
)
gen_text_input = gr.Textbox(label="Generate Text", lines=4)
model_choice_text = gr.Radio(
choices=["zh", "en"], label="テキストの生成言語", value="zh",interactive=True)
wavs_dropdown = gr.Dropdown(label="Reference Audio List", choices=reference_wavs, value="リファレンスオーディオを選択するか、自分でアップロードする", interactive=True)
refresh_button = gr.Button("Refresh Reference Audio")
refresh_button.click(fn=change_choices, inputs=[], outputs=[wavs_dropdown])
ref_audio_input = gr.Audio(label="Reference Audio", type="filepath")
ref_text_input = gr.Textbox(
label="参照テキスト", info="自動的に転写するには空白のままにしてください")
info="Leave blank to automatically transcribe the reference audio. テキストを入力すると、自動転記が上書きされます。", lines=2, ref_text_input = gr.Textbox( label="Reference Text", info="Leave blank to automatically transcribe")
テキストを入力すると自動採譜を上書きします。", lines=2, )
)
model_choice_re = gr.Radio(
choices=["zh", "en"], label="参照音声言語", value="zh",interactive=True
)
wavs_dropdown.change(change_wav,[wavs_dropdown],[ref_audio_input,ref_text_input])
generate_btn = gr.Button("Synthesize", variant="primary")
audio_output = gr.Audio(label="Synthesised Audio")
generate_btn.click(do_cloth,[gen_text_input,ref_audio_input,model_choice_text,model_choice_re,ref_text_input],[audio_output])
def main(): global app_demo
グローバル app_demo
print(f "アプリの起動...")
app_demo.launch(inbrowser=True)
if __name__ == "__main__": main(): if __name__ == "__main__".
main()

もちろん、gradioの依存関係のインストールもお忘れなく:

pip3 install -U gradio

ランの効果はこんな感じだ:

Amphion MaskGCT: ゼロサンプル音声合成クローンモデル (ローカルのワンクリックデプロイパッケージ)

結語

MaskGCTモデルは、実際の音声に匹敵する、非常に顕著なトーンとリズムレベルを持っているという利点を持っていますが、欠点も明らかである、ランニングコストが高く、エンジニアリングレベルが十分に最適化されていません。MaskGCTプロジェクトのホームページには、すでにモデルの商用版への入り口を持っており、この推論によると、公式政府は、オープンソース版ではあまり多くの努力はないでしょう、そして最後に、我々は、ごちそうを楽しむために庶民と、ワンクリックの統合パッケージを提示します:。

チーフAIシェアリングサークルこのコンテンツは作者によって非表示にされています。コンテンツを表示するには認証コードを入力してください。
キャプチャ
このサイトWeChat公開番号に注意してください、返信"CAPTCHA、チャレンジ・レスポンス・テストの一種(コンピューティング)"、認証コードを取得します。WeChatで"チーフAIシェアリングサークル「またはルックスAI"またはWeChatは、QRコードの右側をスキャンすると、このサイトWeChatの公開番号に注意を払うことができます。

AIイージー・ラーニング

AIを始めるための素人ガイド

AIツールの活用方法を、低コスト・ゼロベースから学ぶことができます。AIはオフィスソフトと同様、誰にとっても必須のスキルです。 AIをマスターすれば、就職活動で有利になり、今後の仕事や勉強の労力も半減します。

詳細を見る
無断転載を禁じます:チーフAIシェアリングサークル " Amphion MaskGCT: ゼロサンプル音声合成クローンモデル (ローカルのワンクリックデプロイパッケージ)

チーフAIシェアリングサークル

チーフAIシェアリングサークルは、AI学習に焦点を当て、包括的なAI学習コンテンツ、AIツール、実践指導を提供しています。私たちの目標は、高品質のコンテンツと実践的な経験の共有を通じて、ユーザーがAI技術を習得し、AIの無限の可能性を一緒に探求することです。AI初心者でも上級者でも、知識を得てスキルを向上させ、イノベーションを実現するための理想的な場所です。

お問い合わせ
ja日本語