AI中文语音克隆、语音合成——GitHub上babysor/MockingBird 项目源码部分功能实现

第一次独立地从认识一项技术,然后到github上搜索相关代码,跟着ReadMe.md教学文档将项目的功能实现部分复现。目前并没有涉及训练数据集的部分功能,是接受了作者建议,使用别人训练好的模型,最终的效果虽然差强人意,但还是为能够独立复现部分功能而高兴,从最终的结果也能稍稍感受到这项技术的强大。在实现的过程中也积累了部分经验,所以在此记录历程。

文章结尾附有调试好的项目源码,项目环境准备好后下载解压运行即可,亲测有效。

项目地址:https://github.com/babysor/MockingBird

先找到项目中的项目准备部分:

先在anaconda上新建一个环境,在这个环境里安装相应的包。

打开Anaconda Prompt ,输入conda create -n voice_clone python=3.9 -n是说明环境的名字,后面的voice_clone可以换成你想要的名字,在后面的python=3.9指定python的版本是3.9的,安装文档里说要3.7版本以上,而且3.9在安装pytorch时没有问题,所以就安个3.9版本的python。

输入y,然后回车。(y是指yes,表示同意安装)

这样环境就创建成功了。可以用conda env list查看已经安装的环境。

安装PyTorch

激活刚刚创建的环境。输入activate voice_clone进入刚建的环境。接下来安装PyTorch

我直接复制了推荐版本的安装代码到voice_clone环境下安装

展示需要安装的东西后,我们输入y进行安装

安装成功后输入pip list查看是否有pytorch相关的包

安装ffmpeg

下一步的安装ffmpeg的步骤,因为之前电脑上安装过了,就不演示了,有需要的可以查看相关教程进行安装。

下载项目源码

上述操作完成之后就可以到GitHub上下载源码了
源码链接:https://github.com/babysor/MockingBird
进入后下载源码压缩包到本地,解压后用pycharm打开

Pycharm中设置项目的解释器

在pycharm中项目的解释器使用我们新建的环境voice_clone中安装的python解释器

进入seting界面后,我们给当前项目添加一个新的解释器,按下图操作


如下图,点击OK,这样项目的解释器就设置好了。

设置好后在这个界面里也能查看当前解释器环境中已经安装好的包,之后再添加requirement.txt中的包时可以在这里查看是否安装成功,
还有一种查看的方法就是进入pycharm最下面的Terminal终端里输入pip list也可以查看的。

进入终端安装requirements.txt中所需的包

在Terminal中输入pip install -r requirements.txt 进行安装

同样的方法安装pip install webrtcvad-wheels
至此,项目所需的环境基本安装完成了,接下来就是研究源码,修改参数,运行代码,测试功能的故事了。

进入快速上手实现阶段

项目中作者给出了两种方案,一种是训练自己的合成器模型,另一种是使用别人训练好的合成器模型,这里因为时间有限,就选择别人训练好的合成器模型进行功能复现。

下载合成器模型文件

作者给出三个模型供大家下载使用,我下载了第一个和第三个,

下载的第一个是一个my_run.pt文件,第三个是三个合成器的模型文件,先下载下来,留着接下来放到项目中。
旧合成器网盘链接:
链接:https://pan.baidu.com/s/12fSaYv5qEn59IkKGEbIU1A
提取码:kxzz

最新的合成器模型可以到GitHub项目下方的说明中下载(已经更新了新的模型)。

修改项目文件

检擦encoder、synthesizer、vocoder这三个目录下有没有saved_models目录,saved_models里就是存放合成器模型的地方,如果没有saved_models目录就自己创建一个,否则缺少的话运行demo_toolbox.py时会报错。报错如下:

我下载的源码中synthesizer目录下没有saved_models目录,于是我自己创建了一个.
然后将下载的第一个合成器模型my_run.pt复制到synthesizer目录下的saved_models目录中

这时候再运行demo_toolbox.py文件,运行成功,并弹出操作的小界面。

至此,项目文件的修改就完成了。(直接使用别人训练好的合成器模型不需要修改源码中的任何参数)

准备wav音频文件,试着进行语音合成与克隆

项目似乎不支持MP3文件,但支持wav形式的音频文件,从本地导入MP3文件会报错:

所以需要先将我们的MP3文件转换成wav文件,在百度上搜 在线 MP3转wav 转换。
使用网站:https://www.aconvert.com/cn/audio/wav-to-mp3/
点击 Rrowse(打开本地) ,从本地导入wav格式音频文件

模型可以选择如下图的组合

接着进行语音合成

Error展示

点击合成后可能会出现报错,说超出内存了

我们可以参考作者给出的解决办法进行修改,调整batch_size.(所谓Batch就是每次送入网络中训练的一部分数据,而Batch Size就是每个batch中训练样本的数量)

终止程序后,重新运行demo_toolbox.py,然后重新从本地导入文件,重新合成。
结果又出现了可能的报错:

先结束进程,然后可以参考
https://github.com/babysor/MockingBird/issues/37

大概就是修改synthesizer/utils/symbols.py中的一行代码:

改完之后运行,重新运行demo_toolbox.py,然后重新从本地导入文件,重新合成。
如果试过还方法后还是出现类似的报错,可以讲style的值调大一点(原理还不清楚)

之后运行应该就不会报错了。


手动分割线--------------------------------------------------------------------------------------------------------------------------

上面的内容是10月24日编写的,当时想着再次复现一下这个项目,结果发现搞不明白了,因为合成的效果一直很不好。现在下载的源码和之前在10月20日下载项目源码有些变化,从界面也可以看出来发现

这是在10月20日下载的版本调试的界面。所以为了弥补这次的翻车,我把之前调试好的源码分享在这里供大家下载玩玩。
链接:https://pan.baidu.com/s/14lafr_3aa7AiLKnjyEjv5Q
提取码: kxzz

下载并解压之后。(环境啥的要先配置好哈)直接运行demo_toolbox.py文件,点击 Browse(打开本地) 上传本地wav格式音频文件

在合成语音之前最好把 Enhance vocoder output 勾选上(这样会清晰一些),然后点击 Synthersize and vocoder 进行合成

合成小技巧

在每次合成语音时,可以先点击 Synthersize only ,观看输出的波形,如果输出的波形看起来都连在一起,大概率合成的效果不好,这时可以增大 Style 的值试试。
当观察到输出的波形像下面的这个一样,两个字中间有明显的间隔,然后就可以点击 Vocode only 对当前的波形进行语音合成。

好了,分享就到这,thank you

AI中文语音克隆、语音合成——GitHub上babysor/MockingBird 项目源码部分功能实现相关推荐

  1. Github上的iOS App源码 (中文)

    Github版 英文App地址 IOS源码网: http://www.codesky.net/ios/list-2.htm http://www.code4app.com/forum-2-1.html ...

  2. 设计比较好,有助于学习的Github上的iOS App源码 (中文)

    Github版 中文 : TeamTalk 蘑菇街. 开源IM. 电商强烈推荐. MyOne-iOS 用OC写的<一个> iOS 客户端 zhihuDaily 高仿知乎日报 Coding ...

  3. github 上的Qt 高分源码列举与总结

    1.bjorn/tiled 一个游戏地图编辑器  源码链接:https://github.com/bjorn/tiled Tiled是用于所有基于图块的游戏(例如RPG,平台游戏或Breakout克隆 ...

  4. 团队在Github上协同开发项目流程

    2019独角兽企业重金招聘Python工程师标准>>> 多用户基于同一个Github上得项目并行开发,当前用户的开发流程: 注: origin:默认的远程主机名 master:默认的 ...

  5. 实时中文语音克隆|开源项目MockingBird体验

    lake2 引子 在今年大型网络攻防演练前不久,笔者接到一个公司的座机号码来电,上来就问防守准备得怎么样了,哪里还有不足等.等等,这声音不认识,笔者第一反应就是蓝军(Red Team)来进行社会工程攻 ...

  6. 人工智能科技成熟的11个Github上免费开源项目,很多电影中才有的场景应用到现实颠覆普通人的认知和想象

    人工智能科技成熟的11个Github上免费开源项目,很多电影中才有的场景应用到现实颠覆普通人的认知和想象. 全文大纲: PULSE - 该开源项目可以通过给图片增加像素点来实现去马赛克或高清化. De ...

  7. GitHub上Swift开源项目!

    swift-open-project 这里汇集了目前为止最为流行的Swift开源项目,选取SwiftGuide中的开源部分,这里将每周对项目进行总结,如果大家有推荐的可以联系thinkloki@gma ...

  8. 如何在github上fork一个项目来贡献代码以及同步原作者的修改

    如何在github上fork一个项目来贡献代码以及同步原作者的修改 作为一个IT人,通过github进行学习是最快的成长手段.我们可以浏览别人的优秀代码.但只看不动手还是成长得很慢,因此为别人贡献代码 ...

  9. 保姆级教程,如何发现 GitHub 上的优质项目?

    先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员. 本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...

最新文章

  1. PyTorch迁移学习
  2. 配置文件app.config
  3. Linux(lamp安装)
  4. HBase 1.1.2 优化插入 Region预分配
  5. 使用swoole进行消息推送通知,配合vb.net进行客户端开发一样爽[开发篇]
  6. web前端分享:性能优化之文档碎片处理
  7. C语言*在变量前 **p,C语言之指针*p++和*(p++)区别
  8. LVS(3)——针对于真实主机的增删改操作
  9. Python爬虫神器pyppeteer
  10. 从一个简单的“欢迎“页面开始小程序之旅
  11. mysql with
  12. 项目管理: Maven 让事情变得简单
  13. JVM面试重点总结(一)——java内存区域与内存溢出异常
  14. Ubuntu 16.04 安装搜狗输入法
  15. 最详细的Extmail安装文档
  16. 删除linux下的.文件,Linux删除文件命令汇总
  17. JS判断页面是否被iframe嵌套
  18. DSG招聘Oracle工程师、销售(南京、上海、南昌)
  19. 在Linux系统中root密码忘记了怎么办?一招教会你
  20. WML语言基础(WAP建站)一

热门文章

  1. matlab二阶阻尼震荡衰减,MATLAB系统仿真报告——有阻尼受迫振动系统
  2. 今天进行了阿里校招笔试,有思路,但是不会敲代码啊
  3. spring cloud gateway [DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144]
  4. Xml declaratlon should precede all document content
  5. 如何打造一个搞垮公司的中台系统?
  6. C语言中的编译与链接
  7. 录入并打印名单python_Python如何使用字符打印照片
  8. 得了痔疮之后就很少有便意,该怎么缓解?
  9. ORA-00904 ID 标识符无效 解决方案
  10. 二叉树的遍历(c语言数据结构实验报告三)