GPT-SoVITS的批量克隆声音并且合并

标是将每一段声音通过GPT-SoVITS的API的API进行克隆,因为拼在一起的整个片段处理会造成内存或者缓存溢出
在这里插入图片描述
将目录下的音频文件生成到指定目录下,然后再进行拼接。

通过AI工具箱生成的数据文件是这样的结构,temp目录下是没个片段生成的部分,==connect_==是正常拼接的音频文件,==silent_==是剪切无声片段的音频文件,在这里插入图片描述
这里克隆后会拼接生成一个 clone的音频文件。

然后移动到指定的目录下。
在这里插入图片描述
完整代码:

    # env 日常使用目录/py
    # -*- coding: UTF-8 -*-
    
    from pydub import AudioSegment
    import shutil
    import os
    from gradio_client import Client, handle_file
    
    # API的URL
    client = Client("http://localhost:9888/")
    base_dir = "H:/MyScriptPublic/AIGC/GPT-SoVITS-Gradio【bak】/"
    
    change_sovits_weights = os.path.join(base_dir, "SoVITS_weights", "MrDataYang_e8_s1400.pth")
    result_sovits = client.predict(
    change_sovits_weights,
    api_name="/change_sovits_weights"
    )
    change_sovits_weights = os.path.join(base_dir, "GPT_weights", "MrDataYang-e20.ckpt")
    result_gpt = client.predict(
    "GPT_SoVITS/pretrained_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt",
    api_name="/change_gpt_weights"
    )
    
    
    # 合并音频文件
    def merge_wav_files(directory, result_path):
    # 获取所有.wav文件并按文件名排序
    files = sorted([f for f in os.listdir(directory) if f.endswith('.wav')], key=lambda x:int(x.split('.')[0]))
    print(directory, result_path)
    print(files)
    
    # 初始化一个空的音频段
    combined = AudioSegment.empty()
    
    # 依次加载每个文件并追加到combined变量中
    for file in files:
        path = os.path.join(directory, file)
        audio = AudioSegment.from_wav(path)
        combined += audio
    
    # 导出合并后的文件
    combined.export(result_path, format="wav")
    
    
    def move_files_and_directories(src_dir, matching_directory):
    # 确保目标目录存在,不存在则创建
    os.makedirs(matching_directory, exist_ok=True)
    wav_matching_directory 
GPT, 通常指的是“Generative Pre-trained Transformer”(生成式预训练转换器),是一个在自然语言处理(NLP)领域非常流行的深度学习模型架构。GPT模型由OpenAI公司开发,并在多个NLP任务上取得了显著的性能提升。 GPT模型的核心是一个多层Transformer解码器结构,它通过在海量的文本数据上进行预训练来学习语言的规律。这种预训练方式使得GPT模型能够捕捉到丰富的上下文信息,并生成流畅、自然的文本。 GPT模型的训练过程可以分为两个阶段: 预训练阶段:在这个阶段,模型会接触到大量的文本数据,并通过无监督学习的方式学习语言的结构和规律。具体来说,模型会尝试预测文本序列中的下一个词或短语,从而学习到语言的语法、语义和上下文信息。 微调阶段(也称为下游任务训练):在预训练完成后,模型会被应用到具体的NLP任务中,如文本分类、机器翻译、问答系统等。在这个阶段,模型会使用有标签的数据进行微调,以适应特定任务的需求。通过微调,模型能够学习到与任务相关的特定知识,并进一步提高在该任务上的性能。 GPT模型的优势在于其强大的生成能力和对上下文信息的捕捉能力。这使得GPT模型在自然语言生成、文本摘要、对话系统等领域具有广泛的应用前景。同时,GPT模型也面临一些挑战,如计算资源消耗大、训练时间长等问题。为了解决这些问题,研究人员不断提出新的优化方法和扩展模型架构,如GPT-2、GPT-3等,以进一步提高模型的性能和效率。
### 使用 GPT-SoVITS 实现声音克隆批量生成 为了利用 GPT-SoVITS 进行高效的声音克隆批量生成,可以遵循以下指南: #### 准备环境 确保已安装必要的依赖库并配置好运行环境。首先通过 Git 下载源项目[^2]: ```bash git clone https://github.com/RVC-Boss/GPT-SoVITS.git cd GPT-SoVITS pip install -r requirements.txt ``` #### 数据准备 收集待处理的目标语音文件,并将其整理到指定目录下。每个目标说话者应有一个独立的子文件夹用于存储对应的少量样本音频。 #### 配置参数 编辑 `config.yaml` 文件来调整模型超参数以及设置输入输出路径等信息。特别注意 batch_size 参数的选择会影响处理速度与资源占用情况。 #### 批量生成脚本编写 创建 Python 脚本来自动化整个流程,包括加载预训练模型、读取多个用户的语音片段、依次调用 API 完成转换任务并将结果保存至相应位置。 ```python import os from sovits_api import SoVITSAPI # 假设这是封装好的接口类 def process_directory(input_dir, output_dir): api = SoVITSAPI() for speaker_id in os.listdir(input_dir): input_path = os.path.join(input_dir, speaker_id) output_path = os.path.join(output_dir, speaker_id) if not os.path.exists(output_path): os.makedirs(output_path) for audio_file in os.listdir(input_path): source_audio = os.path.join(input_path, audio_file) target_audio = os.path.join(output_path, f"cloned_{audio_file}") try: cloned_voice = api.clone(source_audio) cloned_voice.save(target_audio) print(f"Successfully processed {source_audio} -> {target_audio}") except Exception as e: print(f"Failed to process {source_audio}: {str(e)}") if __name__ == "__main__": INPUT_DIR = "./data/speakers" OUTPUT_DIR = "./output/clones" process_directory(INPUT_DIR, OUTPUT_DIR) ``` 此代码段展示了如何遍历给定目录中的所有子文件夹及其内部音频文件,逐一对它们应用声音克隆功能,并妥善管理输出文件的位置和命名方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值