深度学习降噪方案-RNNoise简介和环境配置
RNNoise是一个采用音频特征抽取+深度神经网络结合的降噪方案.
RNNoise相关基本信息, 请查看 RNNoise学习和翻译系列
目录
RNNoise的基本流程和模块
RNNoise的目录结构介绍
原工程对Windows支持的一些问题
怎么编译相关的工程,生成可执行文件
怎么搭建基于Python的训练环境
如何进行训练和降噪
RNNoise的基本流程和模块
如下图所示, RNNoise代码库的功能可以分为两个部分:
- 粉色箭头代表的, 训练部分
- 从语音和噪音语料提取特征数据,
- 对神经网络进行训练
- 蓝色箭头代表的, 降噪demo
这两部分都依赖于中间淡灰色部分的c代码来实现数字信号处理部分的功能.
而蓝色框表示的python脚本主要用于训练流程.
RNNoise的目录结构介绍
RNNoise的相关代码可以从https://github.com/maskonface/rnnoise获取.
该工程只有两层目录. 这里列出了原始工程的全部目录和文件名, 并稍作了注释. 对于我们新增的部分, 将在后续章节揭晓.
\
│ AUTHORS 作者信息
│ COPYING license信息
│ README 简介和操作命令
│ TRAINING 训练的操作命令
│ autogen.sh 以下为编译相关部分
│ configure.ac
│ Makefile.am
│ update_version
│ rnnoise-uninstalled.pc.in
│ rnnoise.pc.in
│
├───doc
│ Doxyfile.in 用于生成文档的配置
│
├───examples
│ rnnoise_demo.c 使用库, 对输入的语音做降噪处理
│
├───include
│ rnnoise.h 库函数接口
│
├───m4
│ attributes.m4 宏,用于检查通用(非类型)符号的存在
│
├───src
│ compile.sh denoise_training的编译脚本
│ denoise.c 库的相关接口函数, 以及denoise_training的main函数
│ rnn.c/h 神经网络的计算函数, 包括GRU和全连接层(Dense)
│ rnn_data.c/h 生成的权重数据, 以权重->层(layer)->模型的架构来组织
│ rnn_reader.c 载入和释放模型数据的函数
│ celt_lpc.c/h CELT相关代码
│ kiss_fft.c/h, _kiss_fft_guts.h kiss fft的相关代码
│ pitch.c/h 基音(pitch)相关代码
│ tansig_table.h 双曲正切S型函数的速查数据
│ arch.h, opus_types.h 架构和平台相关的定义和宏
│ common.h 内存操作相关的宏/接
│ rnn_train.py 另外一个版本的训练脚本
└───trainingbin2hdf5.py 转换训练数据的格式: f32-> hdf5, 需要指定矩阵维度dump_rnn.py 把权重转换为c代码, 到src\rnn_data.h|crnn_train.py 训练脚本, 包括构造模型, 载入和分配数据,训练,保存权重
原工程对Windows支持的一些问题
原工程应该主要是考虑了linux平台的用户, 在windows平台上使用有些小问题,
- Windows上下载会存在问题, 根目录下的TRAINING和training目录会冲突, 因为Windows上的文件名是大小写不敏感的, 不能允许这两个文件和目录同时存在.
- 在Windows上的编译环境搭建比较麻烦.
- 读写文件时使用的模式不正确, 导致在Windows下打开文件不正确.
- 在提取音频特征数据时采用直接fwrite到stdout存在编码问题.
- 部分语法支持问题.
我们创建了一个分支来解决这些问题, 请参考链接.
怎么编译相关的工程,生成可执行文件
Windows下:
- 请直接使用链接下代码以及VisualStudio2019目录下提供了的vc工程.
- 也可直接下载编译好的64位版本.
怎么搭建基于Python的训练环境
请遵循以下步骤:
1. 下载并安装Anaconda3-2019.07-Windows-x86_64.exe版本, 具体的安装注意事项, 包括环境变量设置, 请搜索相关内容.
2. 启动Anaconda Prompt窗口. (如果环境变量配置正确的话, 也可以直接启动Windows 命令行窗口也可).
3. 安装虚拟环境, 比如以以下代码安装名为Python37的虚拟环境.
conda create –n python37 python=3.7
4. 启动此虚拟环境
activate python37
5.安装相关依赖库
pip install keras
pip install tensorflow
pip install numpy
在使用的过程中如果还遇到”ModuleNotFoundError: No module named 'keras'”之类的消息, 则使用pip install安装相关库
如何进行训练和降噪
注:
- 当前使用的语料仅是一个很小的语音和噪声集, 不是原作者使用和提供的版本, 仅供大家学习之用, 我们后续将会考虑如何整合一个更正规的数据集供大家使用, 也请大家多多留言献计献策.在此致谢.
- 执行python脚本, 请注意需要激活前面配置好的虚拟环境, 指令: activate python37, 并需在training目录下运行
- 导出模型数据的命令有些不足之处, 因为该脚本导出的rnn_data.h格式不适合用来替换原代码. 另外参数orig其实没有必要, 只是脚本还在依赖他. 后续会考虑改进
相关指令:
- 特征数据抽取:
执行rnnoise目录下的pre_proc.cmd
注: 数据会被放到training目录.
- 特征数据格式的转换
python bin2hdf5.py training.f32 500000 87 training.h5
- 训练(如果只是体会流程, 建议先将训练轮次改为1)
python rnn_train.py
- 导出模型数据到c代码
python dump_rnn.py weights.hdf5 ../src/rnn_data.c rnn_data.h orig
- 降噪演示
执行rnnoise目录下的denoise.cmd
深度学习降噪方案-RNNoise简介和环境配置相关推荐
- 深度学习入门篇——一、Pytorch环境配置(GPU:GeForce 940MX)
安装pytorch的几点注意事项: ①确定你的电脑显卡是否支持cuda.可取网站查询:CUDA Zone - Library of Resources | NVIDIA Developerhttps: ...
- 【深度之眼PyTorch框架班第五期】作业打卡01:PyTorch简介及环境配置;PyTorch基础数据结构——张量
文章目录 任务名称 任务简介 详细说明 作业 1. 安装anaconda,pycharm, CUDA+CuDNN(可选),虚拟环境,pytorch,并实现hello pytorch查看pytorch的 ...
- 面向医学图像分析的深度学习研究方案
面向医学图像分析的深度学习研究方案 这是一篇有关"深度学习在医学图像处理方面"的研究报告的第一节,主要包含研究对象,常用方法,深度学习简介,研究现状,研究重点. 在撰写报告时,我找 ...
- 1.0 深度学习回顾与PyTorch简介 - PyTorch学习笔记
P1 深度学习回顾与PyTorch简介 视频课程地址:点我 fly~~~ 本节课主要偏向于NLP,因为作者本人是做NLP方向NLP 预训练三种模型: BERT OpenAI GPT ELMo [NLP ...
- DL框架之PyTorch:深度学习框架PyTorch的简介、安装、使用方法之详细攻略
DL框架之PyTorch:PyTorch的简介.安装.使用方法之详细攻略 DL框架之PyTorch:深度学习框架PyTorch的简介.安装.使用方法之详细攻略 目录 PyTorch的简介 1.pyto ...
- DL框架之darknet:深度学习框架darknet的简介、安装、使用方法的详细攻略
DL框架之darknet:深度学习框架darknet的简介.安装.使用方法的详细攻略 目录 darknet的简介 darknet的安装 darknet的使用方法 1.YOLO: Real-Time O ...
- DL框架之Tensorflow:深度学习框架Tensorflow的简介、安装、使用方法之详细攻略
DL框架之Tensorflow:深度学习框架Tensorflow的简介.安装.使用方法之详细攻略 目录 Tensorflow的简介 1.描述 2.TensorFlow的六大特征 3.了解Tensorf ...
- 深度学习图像识别:基础知识与环境搭建
深度学习图像识别:基础知识与环境搭建 1. 深度学习的基本原理 什么是人工智能? 通过学习掌握了某中技能的机器,我们认为它具备了人工智能 什么是深度学习? 深度学习的概念源于人工神经网络的研究: 含多 ...
- 深度学习分布式方案(个人笔记)
深度学习分布式方案 [ 关注三个问题] 1.将程序改为分布式,需要改动多少代码 2.分布式程序/任务要启动,程序是否复杂? 3.分布式模式提升了多少运行效率? [分布式并行架构] (一)PS架构(pa ...
最新文章
- web.py中实现类似Django中的ORM的查询效果
- 好久没写blog了。最近感觉自己老了
- 编程软件python下载-python 2.7官方版
- mybatis plus 日志打印_mybatis升级为mybatis-plus踩到的坑
- openwrt转载--openwrt框架分析
- java中改变字符串编码
- hystrix隔离策略对比
- docker镜像创建与优化
- 域环境下文件服务器,域和文件服务器
- 如何用电脑快速制作gif动态图片
- *** cannot be resolved or is not a field
- 图像从程序到GPU再到LCD显示的流程:GPU渲染管线(五)
- python的__slots__
- Android--关闭某个指定activity,android开发游戏
- linux安装之后缺少命令,linux下rarlinux安装后找不到rar命令处理方法
- 计算机怎么安错误,电脑安装iTunes提示安装程序发生错误如何解决
- webservice wsimport 报错
- Android实现身份证号码验证
- 若依 后台框架配置丛数据源使用
- 特种作业操作证2021电工作业2021年电气试验考试题库