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()
相关推荐
m0_734571768 分钟前
深入理解人工智能 大语言模型的训练方法
人工智能
小程故事多_8019 分钟前
从线性建模到网络语义重构,AI本体建模平台技术落地与实践复盘
人工智能
RockChinQ21 分钟前
把飞书、QQ 变成翻译助手:n8n + LangBot + GPT-6 实战,保留人名、时间和链接
人工智能
ACP广源盛1392462567321 分钟前
GSV5600 国产 8K Serdes 视频延长芯片,AI 超高清可视化远距离传输方案解析
大数据·人工智能·ai·硬件架构·国产芯片
奈斯先生Vector23 分钟前
当模型版本不断变化,RelayRouter 能否帮助 AI 应用摆脱深度绑定
android·java·人工智能·开源·aigc
苏苏susuus24 分钟前
核密度估计(KDE)与高斯核(概念分享)
人工智能·python·ocr
9i编程32 分钟前
1. 把 DDD 开源脚手架化为自己的:先读懂它——Spring Boot 4.1 的四层架构、多数据源与领域事件
人工智能·openai·ai编程
野生技术架构师41 分钟前
FastAPI + LangGraph + Milvus + ES + Redis + MySQL 高性能智能体中台方案
人工智能
Raas10042 分钟前
AI网关支持哪些模型?MAI Gateway(魔芋企业级AI网关)功能实测与最佳实践
大数据·人工智能·gateway·mai gateway·企业级产品
豪气的程序猿43 分钟前
电商素材工作流怎么搭?Lingko AI 对比宠物喂食器的主图与详情页分工
人工智能·宠物