前言
本文介绍开源项目OpenVoice的本地部署,基于VsCode
和Anaconda
(提供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
,因为是国内网络环境,所以下述两个文件在运行时的下载,几乎必定会出现的问题,参考网上的解决方案,要通过提前下载导入的方式。
-
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 = pathmodel = 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 = checkpointmodel.load_state_dict(model_ckpt, strict=True)model.eval()return model
-
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_build
、OpenVoice-main
、snakers4-silero-vad-v5.1.2-5-ge531cd3.zip
、step59000_snr39.99_pesq4.35_BERP_none0.30_mean1.81_std1.81.model
文中所用到的资源链接:https://pan.baidu.com/s/1EO53Gnb1pJOp22CcJT7-2g 提取码:6p5t