当前位置: 首页 > article >正文

开源项目OpenVoice的本地部署

前言

  本文介绍开源项目OpenVoice的本地部署,基于VsCodeAnaconda(提供python虚拟环境),来进行部署的。下述不介绍Anaconda的安装流程,要自行安装。且只截图演示关键部分图文演示。

官方项目介绍:OpenVoice:多功能即时语音克隆 |MyShell 人工智能

材料

  • Anaconda的官网以及教程:Anaconda,Anaconda 菜鸟教程,上述教程不清楚的话,可在搜索其它相关教程,本文不在赘述。
  • VsCode可以到官网直接下载,不过想必要用到开源项目的人都会人手装有了吧。Visual Studio Code

步骤

除了上述说所的软件外,下述中还需要下载ffmpeg,和在VsCode添加Jupyter扩展

下载ffmpeg

ffmpeg官网目前发布到了7.1了,但是我看都多选择6.1.1版本,所以可以去它的GitHub上找到指定的版本。CODEX FFMPEG,Releases · GyanD/codexffmpeg (github.com)

下载解压包后,可以在搜索栏搜索打开编辑系统环境变量 ->点击右下角 环境变量 -> 在下栏的环境变量中选择变量Path,选中后点击编辑 -> 然后新建,把解压的路径放进去,例如我的是D:\my\ffmpeg\ffmpeg-6.1.1-full_build\bin。

在这里插入图片描述

win(微软图标)+R,输入cmd,进入命令行,验证是否成功安装:

ffmpeg -version

在这里插入图片描述

VsCode添加Jupyter扩展

在VsCode的插件中搜索Jupyter扩展,下载即可。

在这里插入图片描述

VsCode打开项目

获取OpenVoice项目,在GitHub - OpenVoice,下载项目ZIP压缩包,或者Git拉取都可以,这里也不赘述了。并在VsCode中打开,创建并选择python虚拟环境。

创建python虚拟环境

该步骤的前提是确保Anaconda以及被安装在电脑上了。

打开VsCode的终端(Ctrl+ `)或者打开系统的CMD命令行。

查看是否安装了Anaconda

Anaconda -V

在这里插入图片描述

创建python虚拟环境,有[y]/n的选项,y下载就行了。

conda create --name OpenVoice python=3.9

是否创建成功可以,用下述命令查看:

conda env list

VsCode中载入虚拟环境

在选择环境时会搜索出虚拟环境,选择就好了。

在这里插入图片描述

在这里插入图片描述

选择好后,自动激活环境了

在这里插入图片描述

然后在继续执行,下述命令从文件中下载指定依赖版本(这里我好像没改过源,下载还是要一定时间的):

pip install -r requirements.txt

部署问题

在完成上述步骤后,想开始运行demo_part1.ipynb,因为是国内网络环境,所以下述两个文件在运行时的下载,几乎必定会出现的问题,参考网上的解决方案,要通过提前下载导入的方式。

  1. huggingface文件无法下载

    在itialization段代码中,报错问题截选:
    '(MaxRetryError("HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /M4869/WavMark/resolve/main/step59000_snr39.99_pesq4.35_BERP_none0.30_mean1.81_std1.81.model.pkl (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x000001AADD964790>, 'Connection to huggingface.co timed out. (connect timeout=10)'))"), '(Request ID: 012bc077-12af-441a-8b68-571f9aa0da2d)')' thrown while requesting HEAD https://huggingface.co/M4869/WavMark/resolve/main/step59000_snr39.99_pesq4.35_BERP_none0.30_mean1.81_std1.81.model.pkl
    

    step59000_snr39.99_pesq4.35_BERP_none0.30_mean1.81_std1.81.model.pkl将文件放到C:\Users\XYZ\.cache\huggingface\hub\models--M4869--WavMark文件夹下。XYZ为电脑用户名,models--M4869--WavMark为下载时生成的文件夹。

    且,在D:\my\Anaconda\envs\OpenVoice\Lib\site-packages\wavmark\__init__.py中,将代码改成手动读取,然后把项目代码保存重启:

    def load_model(path="default"):
        if path == "default":
        #     # resume_path = hf_hub_download(repo_id="M4869/WavMark",
        #     #                               filename="step59000_snr39.99_pesq4.35_BERP_none0.30_mean1.81_std1.81.model.pkl",
        #     #                               )
            resume_path = "C:/Users/XYZ/.cache/huggingface/hub/models--M4869--WavMark/step59000_snr39.99_pesq4.35_BERP_none0.30_mean1.81_std1.81.model.pkl"
        # else:
        #     resume_path = path
        model = my_model.Model(16000, num_bit=32, n_fft=1000, hop_length=400, num_layers=8)
        checkpoint = torch.load(resume_path, map_location=torch.device('cpu'))
        model_ckpt = checkpoint
        model.load_state_dict(model_ckpt, strict=True)
        model.eval()
        return model
    
  2. silero无法下载

    这个忘记记录问题片段了。

    将目标文件snakers4-silero-vad-v5.1.2-5-ge531cd3.zip,解压到该文件夹下C:\Users\XYZ\.cache\torch\hub\snakers4_silero-vad_master,注意只是将内容解压进去,不要包含压缩包文件的名称文件夹。

基本使用

如果按照上述流程,那么应该是能跑通demo_part1.ipynb,文件了。跑通了,会输出生成消息,音频信息会在/outputs下。

替换训练者的音频

reference_speaker = 'resources/ky_kk.mp3' # This is the voice you want to clone

替换输入音频文本

# Run the base speaker tts
text = """今天天气很好!"""

总结

初次体验:用的是默认demo_part1.ipynb的配置,配出来的人声确实一股外国腔,部分语句还有点模糊。不知道是有什么还没有配置好。

ffmpeg-6.1.1-full_buildOpenVoice-mainsnakers4-silero-vad-v5.1.2-5-ge531cd3.zipstep59000_snr39.99_pesq4.35_BERP_none0.30_mean1.81_std1.81.model

文中所用到的资源链接:https://pan.baidu.com/s/1EO53Gnb1pJOp22CcJT7-2g  提取码:6p5t


http://www.kler.cn/a/388759.html

相关文章:

  • RS®SZM 倍频器
  • Linux相关习题-gcc-gdb-冯诺依曼
  • uniapp 设置安全区域
  • 【Qt】在 Qt Creator 中使用图片资源方法(含素材网站推荐)
  • 详解kafka消息发送重试机制的案例
  • 常见error集合
  • Swift中的Combine
  • GISBox一站式解决GIS数据处理问题
  • 基于Zynq FPGA的雷龙SD NAND存储芯片性能测试
  • 直接插入排序法
  • 解方程(C语言)
  • JavaScript API部分知识点
  • 第三百一十九节 Java线程教程 - Java线程中断
  • element-ui-plus给头像avatar增加头像框
  • 红黑树的平衡之舞:数据结构中的优雅艺术
  • Linux进程信号(信号的产生)
  • 你对安装在自己网站上的wordpress插件了解吗?
  • 【C语言】浮点型数据存储 和 整型数据存储的区别
  • 基于深度学习的路面裂缝检测算法matlab仿真
  • C#-运算符重载
  • Redis运行时的10大重要指标
  • 1688拿货经验分享:亚马逊中小卖家如何选合作厂家
  • JS面试题之---解释一下什么是闭包?
  • 【日常经验】RPC 调用的分类及示例
  • 非关系型数据库NoSQL的类型与优缺点对比
  • API接口精准获取商品详情信息案例