Github 项目推荐 | 用 Pytorch 实现的 WaveNet-Vocoder
时间:2022-05-04
本文章向大家介绍Github 项目推荐 | 用 Pytorch 实现的 WaveNet-Vocoder,主要内容包括安装:、示例:、使用预先训练的模型来解码数据、结果:、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
本库是用 Pytorch 实现的 WaveNet-Vocoder。
安装需求:
- cuda 8.0
- python 3.6
- virtualenv
推荐使用内存大于 10GB 的 GPU。
安装:
$ git clone https://github.com/kan-bayashi/PytorchWaveNetVocoder.git
$ cd PytorchWaveNetVocoder/tools
$ make -j
示例:
所有的示例都基于 kaldi-style recipe。
# build SD model
$ cd egs/arctic/sd
$ ./run.sh
# build SI-CLOSE model
$ cd egs/arctic/si-close
$ ./run.sh
# build SI-OPEN model
$ cd egs/arctic/si-open
$ ./run.sh
如果你的服务器上安装了 slurm,你可以用 slurm 来运行 recipe。
$ cd egs/arctic/sd
# edit configuration
$ vim cmd.sh # please edit as follows
---
# for local
# export train_cmd="run.pl"
# export cuda_cmd="run.pl --gpu 1"
# for slurm (you can change configuration file "conf/slurm.conf")
export train_cmd="slurm.pl --config conf/slurm.conf"
export cuda_cmd="slurm.pl --gpu 1 --config conf/slurm.conf"
---
$ vim conf/slurm.conf # edit <your_partition_name>
---
command sbatch --export=PATH --ntasks-per-node=1
option time=* --time $0
option mem=* --mem-per-cpu $0
option mem=0
option num_threads=* --cpus-per-task $0 --ntasks-per-node=1
option num_threads=1 --cpus-per-task 1 --ntasks-per-node=1
default gpu=0
option gpu=0 -p <your_partion_name>
option gpu=* -p <your_partion_name> --gres=gpu:$0 --time 10-00:00:00
---
# run the recipe
$ ./run.sh
最后,你可以在 exp / train _ * / wav_restored 中获取生成的 wav 文件。
使用预先训练的模型来解码数据
为了合成你的数据,你需要以下东西:
- checkpoint-final.pkl (model parameter file)
- model.conf (model configuration file)
- stats.h5 (feature statistics file)
- *.wav (your own wav file)
过程如下:
$ cd egs/arctic/si-close
# download pre-trained model which trained with 6 arctic speakers
$ wget "https://www.dropbox.com/s/xt7qqmfgamwpqqg/si-close_lr1e-4_wd0_bs20k_ns_up.zip?dl=0" -O si-close_lr1e-4_wd0_bs20k_ns_up.zip
# unzip
$ unzip si-close_lr1e-4_wd0_bs20k_ns_up.zip
# make filelist of your own wav files
$ find <your_wav_dir> -name "*.wav" > wav.scp
# feature extraction
$ . ./path.sh
$ feature_extract.py
--waveforms wav.scp
--wavdir wav/test
--hdf5dir hdf5/test
--fs 16000
--shiftms 5
--minf0 <set_appropriate_value>
--maxf0 <set_appropriate_value>
--mcep_dim 24
--mcep_alpha 0.41
--highpass_cutoff 70
--fftl 1024
--n_jobs 1
# make filelist of feature file
$ find hdf5/test -name "*.h5" > feats.scp
# decode with pre-trained model
$ decode.py
--feats feats.scp
--stats si-close_lr1e-4_wd0_bs20k_ns_up/stats.h5
--outdir si-close_lr1e-4_wd0_bs20k_ns_up/wav
--checkpoint si-close_lr1e-4_wd0_bs20k_ns_up/checkpoint-final.pkl
--config si-close_lr1e-4_wd0_bs20k_ns_up/model.conf
--fs 16000
--n_jobs 1
--n_gpus 1
# make filelist of generated wav file
$ find si-close_lr1e-4_wd0_bs20k_ns_up/wav -name "*.wav" > wav_generated.scp
# restore noise shaping
$ noise_shaping.py
--waveforms wav_generated.scp
--stats si-close_lr1e-4_wd0_bs20k_ns_up/stats.h5
--writedir si-close_lr1e-4_wd0_bs20k_ns_up/wav_restored
--fs 16000
--shiftms 5
--fftl 1024
--mcep_dim_start 2
--mcep_dim_end 27
--mcep_alpha 0.41
--mag 0.5
--inv false
--n_jobs 1
最后,你可以在 si-close_lr1e-4_wd0_bs20k_ns_up / wav_restored 中找到生成的 wav 文件。
结果:
- MyBatis + MySQL返回插入成功后的主键id
- struts2+spring+hibernate整合步骤(1)
- 微信公众号问题:{"errcode":40125,"errmsg":"invalid appsecret, view more at http://t.cn/LOEdzVq, hints: [
- reflow和repaint(摘录自张鑫旭的翻译)
- git删除本地分支
- org.springframework.data.redis.serializer.SerializationException: Cannot serialize;
- 样式化加载失败的图片
- 使用telnet命令验证邮箱(r4笔记第19天)
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十二)Spring集成Redis缓存
- 前端开发中的字符编码
- 算法工程师的面试难不难,如何准备?-图像处理/CV/ML/DL到HR面总结
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(九)Linux下安装redis及redis的常用命令和操作
- 通过使用hint unnest调优sql语句(r4笔记第38天)
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十一)redis密码设置、安全设置
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Shiro学习笔记(一)
- Shiro学习笔记(二)
- Shiro学习笔记 三(认证授权)
- Shiro学习笔记四(Shiro集成WEB)
- Shiro学习笔记五(Shiro标签,及通配符)
- Shiro学习笔记六(自定义Reaml-使用数据库设置 user roles permissions)
- Luncene学习 第一天 《入门程序》
- Luncene学习二《搜索索引》
- JavaWeb--简单分页技术
- 使用Python制作第一个爬虫程序
- 使用BeautifulSoup 爬取一个页面上的所有的超链接
- 使用PlaceHolder,测试碰见的问题
- 隐藏MySQL InnoDB Cluster / ReplicaSet实例
- MySQL8.0.21——错误日志中的组复制系统消息
- 【一】、搭建Hadoop环境----本地、伪分布式