RNNoise是一个采用音频特征抽取+深度神经网络结合的降噪方案.

RNNoise相关基本信息, 请查看 RNNoise学习和翻译系列

目录

RNNoise的基本流程和模块

RNNoise的目录结构介绍

原工程对Windows支持的一些问题

怎么编译相关的工程,生成可执行文件

怎么搭建基于Python的训练环境

如何进行训练和降噪


RNNoise的基本流程和模块

如下图所示, RNNoise代码库的功能可以分为两个部分:

  • 粉色箭头代表的, 训练部分
  1. 从语音和噪音语料提取特征数据,
  2. 对神经网络进行训练
  • 蓝色箭头代表的, 降噪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安装相关库

如何进行训练和降噪

注:

  1. 当前使用的语料仅是一个很小的语音和噪声集, 不是原作者使用和提供的版本, 仅供大家学习之用, 我们后续将会考虑如何整合一个更正规的数据集供大家使用, 也请大家多多留言献计献策.在此致谢.
  2. 执行python脚本, 请注意需要激活前面配置好的虚拟环境, 指令: activate python37, 并需在training目录下运行
  3. 导出模型数据的命令有些不足之处, 因为该脚本导出的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简介和环境配置相关推荐

  1. 深度学习入门篇——一、Pytorch环境配置(GPU:GeForce 940MX)

    安装pytorch的几点注意事项: ①确定你的电脑显卡是否支持cuda.可取网站查询:CUDA Zone - Library of Resources | NVIDIA Developerhttps: ...

  2. 【深度之眼PyTorch框架班第五期】作业打卡01:PyTorch简介及环境配置;PyTorch基础数据结构——张量

    文章目录 任务名称 任务简介 详细说明 作业 1. 安装anaconda,pycharm, CUDA+CuDNN(可选),虚拟环境,pytorch,并实现hello pytorch查看pytorch的 ...

  3. 面向医学图像分析的深度学习研究方案

    面向医学图像分析的深度学习研究方案 这是一篇有关"深度学习在医学图像处理方面"的研究报告的第一节,主要包含研究对象,常用方法,深度学习简介,研究现状,研究重点. 在撰写报告时,我找 ...

  4. 1.0 深度学习回顾与PyTorch简介 - PyTorch学习笔记

    P1 深度学习回顾与PyTorch简介 视频课程地址:点我 fly~~~ 本节课主要偏向于NLP,因为作者本人是做NLP方向NLP 预训练三种模型: BERT OpenAI GPT ELMo [NLP ...

  5. DL框架之PyTorch:深度学习框架PyTorch的简介、安装、使用方法之详细攻略

    DL框架之PyTorch:PyTorch的简介.安装.使用方法之详细攻略 DL框架之PyTorch:深度学习框架PyTorch的简介.安装.使用方法之详细攻略 目录 PyTorch的简介 1.pyto ...

  6. DL框架之darknet:深度学习框架darknet的简介、安装、使用方法的详细攻略

    DL框架之darknet:深度学习框架darknet的简介.安装.使用方法的详细攻略 目录 darknet的简介 darknet的安装 darknet的使用方法 1.YOLO: Real-Time O ...

  7. DL框架之Tensorflow:深度学习框架Tensorflow的简介、安装、使用方法之详细攻略

    DL框架之Tensorflow:深度学习框架Tensorflow的简介.安装.使用方法之详细攻略 目录 Tensorflow的简介 1.描述 2.TensorFlow的六大特征 3.了解Tensorf ...

  8. 深度学习图像识别:基础知识与环境搭建

    深度学习图像识别:基础知识与环境搭建 1. 深度学习的基本原理 什么是人工智能? 通过学习掌握了某中技能的机器,我们认为它具备了人工智能 什么是深度学习? 深度学习的概念源于人工神经网络的研究: 含多 ...

  9. 深度学习分布式方案(个人笔记)

    深度学习分布式方案 [ 关注三个问题] 1.将程序改为分布式,需要改动多少代码 2.分布式程序/任务要启动,程序是否复杂? 3.分布式模式提升了多少运行效率? [分布式并行架构] (一)PS架构(pa ...

最新文章

  1. web.py中实现类似Django中的ORM的查询效果
  2. 好久没写blog了。最近感觉自己老了
  3. 编程软件python下载-python 2.7官方版
  4. mybatis plus 日志打印_mybatis升级为mybatis-plus踩到的坑
  5. openwrt转载--openwrt框架分析
  6. java中改变字符串编码
  7. hystrix隔离策略对比
  8. docker镜像创建与优化
  9. 域环境下文件服务器,域和文件服务器
  10. 如何用电脑快速制作gif动态图片
  11. *** cannot be resolved or is not a field
  12. 图像从程序到GPU再到LCD显示的流程:GPU渲染管线(五)
  13. python的__slots__
  14. Android--关闭某个指定activity,android开发游戏
  15. linux安装之后缺少命令,linux下rarlinux安装后找不到rar命令处理方法
  16. 计算机怎么安错误,电脑安装iTunes提示安装程序发生错误如何解决
  17. webservice wsimport 报错
  18. Android实现身份证号码验证
  19. 若依 后台框架配置丛数据源使用
  20. 特种作业操作证2021电工作业2021年电气试验考试题库

热门文章

  1. 洛谷P2486 染色
  2. python读取txt提取信息
  3. Python爬虫 之 异步爬虫
  4. 西安理工大学计算机考研数据结构863整理总结
  5. Web前端是干嘛的 为什么要学Web前端
  6. 域控制器组策略:域用户加入域,默认加入本地管理员组
  7. apollo自动驾驶进阶学习之:如何实现施工路段限速绕行及其参数调试
  8. 软件工程考研笔记整理(三小时速成)(3)
  9. django Mezzanine uwsgi nginx 配置
  10. 阿里王坚:别把智慧城市做成怪物