gpt-sovits测试语音克隆

写个测试程序,ref_10s.wav 作为参考音频,ref_10s.txt 作为参考文本,1.txt 作为待合成文本,进行合成,合成后的音频文件放到\gpt-sovits\media 这个免费云服务器文件夹下

现在我了解了三丰云项目结构。根据项目中的 batch_synthesize.py ,它使用预训练模型进行合成。让我为您编写一个简单的测试程序:

python 复制代码
import os
import sys

os.environ["gpt_path"] = r"E:\ai\python\gpt-sovits\models\AIDub\GPT-SoVITS\GPT_SoVITS\pretrained_models\s1v3.ckpt"
os.environ["sovits_path"] = r"E:\ai\python\gpt-sovits\models\AIDub\GPT-SoVITS\GPT_SoVITS\pretrained_models\sv\pretrained_eres2netv2w24s4ep4.ckpt"
os.environ["version"] = "v2"

sys.path.insert(0, r"E:\ai\python\gpt-sovits\models\AIDub\GPT-SoVITS")

print("开始导入模块...", flush=True)
from GPT_SoVITS.inference_webui import change_gpt_weights, change_sovits_weights, get_tts_wav
import GPT_SoVITS.inference_webui as inference_webui
from tools.i18n.i18n import I18nAuto
import soundfile as sf

print("模块导入完成", flush=True)
print(f"hps 是否已定义: {hasattr(inference_webui, 'hps')}", flush=True)
print(f"vq_model 是否已定义: {hasattr(inference_webui, 'vq_model')}", flush=True)

i18n = I18nAuto()

GPT_MODEL = os.environ["gpt_path"]
SOVITS_MODEL = os.environ["sovits_path"]

REF_AUDIO = r"E:\ai\python\gpt-sovits\media\5月27日_ref_10s.wav"
REF_TEXT = r"E:\ai\python\gpt-sovits\media\5月27日_ref_10s.txt"
TARGET_TEXT = r"E:\ai\python\gpt-sovits\media\1.txt"
OUTPUT_DIR = r"E:\ai\python\gpt-sovits\media"


def synthesize():
    print("=" * 50)
    print("GPT-SoVITS 语音合成测试")
    print("=" * 50)

    if not os.path.exists(REF_AUDIO):
        print(f"错误: 参考音频文件不存在: {REF_AUDIO}")
        return

    if not os.path.exists(REF_TEXT):
        print(f"错误: 参考文本文件不存在: {REF_TEXT}")
        return

    if not os.path.exists(TARGET_TEXT):
        print(f"错误: 待合成文本文件不存在: {TARGET_TEXT}")
        return

    if not os.path.exists(OUTPUT_DIR):
        os.makedirs(OUTPUT_DIR)

    print(f"\n参考音频: {REF_AUDIO}")
    print(f"参考文本: {REF_TEXT}")
    print(f"待合成文本: {TARGET_TEXT}")
    print(f"输出目录: {OUTPUT_DIR}")

    with open(REF_TEXT, "r", encoding="utf-8") as f:
        ref_text = f.read().strip()
    print(f"\n参考文本内容: {ref_text}")

    with open(TARGET_TEXT, "r", encoding="utf-8") as f:
        target_text = f.read().strip()
    print(f"待合成文本内容: {target_text}")

    print("\n加载模型...", flush=True)
    print(f"GPT模型: {GPT_MODEL}", flush=True)
    print(f"SoVITS模型: {SOVITS_MODEL}", flush=True)
    change_gpt_weights(gpt_path=GPT_MODEL)
    print("GPT模型加载完成", flush=True)
    try:
        gen = change_sovits_weights(sovits_path=SOVITS_MODEL)
        next(gen)
        next(gen)
        print("SoVITS模型加载完成", flush=True)
    except StopIteration:
        print("SoVITS模型加载完成(生成器已结束)", flush=True)
    except Exception as e:
        print(f"加载SoVITS模型时出现警告: {e}", flush=True)
        import traceback
        traceback.print_exc()

    print(f"hps 是否已定义: {hasattr(inference_webui, 'hps')}", flush=True)

    print("开始合成...")
    synthesis_result = get_tts_wav(
        ref_wav_path=REF_AUDIO,
        prompt_text=ref_text,
        prompt_language=i18n("中文"),
        text=target_text,
        text_language=i18n("中文"),
        top_p=1,
        temperature=1,
    )

    result_list = list(synthesis_result)

    if result_list:
        last_sampling_rate, last_audio_data = result_list[-1]
        output_path = os.path.join(OUTPUT_DIR, "output.wav")
        sf.write(output_path, last_audio_data, last_sampling_rate)
        print(f"\n合成完成! 音频已保存到: {output_path}")
    else:
        print("\n合成失败,未生成音频")


if __name__ == "__main__":
    synthesize()
相关推荐
WangN24 小时前
【通识】宇树G1_29DOF速度跟踪训练—逐章学习手册
人工智能·python·学习·机器人·具身智能
nbtang20264 小时前
每日AI新闻推送 | 2026年6月12日
人工智能
邵宇然4 小时前
轻量级推理引擎开发:从模型加载到推理执行的 Rust 实战
人工智能
装不满的克莱因瓶4 小时前
掌握语义分割经典模型 FCN——从像素分类到端到端分割的奠基之作
人工智能·python·深度学习·算法·机器学习·分类·数据挖掘
ACP广源盛139246256734 小时前
GSV5600@ACP#多接口协议转换芯片,物理 AI 便携终端的互联核心
大数据·人工智能·分布式·嵌入式硬件·spark
لا معنى له4 小时前
NeoVerse: Enhancing 4D World Model with in-the-wild Monocular Videos
人工智能·笔记·机器学习·语言模型
147API4 小时前
Fable 5访问暂停后,模型接入层不能再只写死一个模型名
大数据·人工智能·api·claude
KaMeidebaby4 小时前
卡梅德生物技术快报 | 噬菌体展示 12 肽文库在蛋白表位定位中的应用与实验数据
大数据·人工智能·架构·spark·新浪微博
JIAXIN_culture4 小时前
甘肃景观工程定制服务FAQ:企业如何选对合作方?
大数据·人工智能
青绿蓝LCA低碳研究院4 小时前
环保的本质:从“末端修补”到“系统重构”的生存范式转移 - 蓝色星球
大数据·人工智能·经验分享·重构