RNN核心代码部分

1、噪声和语⾳输⼊都需要经过 ⼆阶⾼通滤波器,48k采样,截⽌频率36hz;
2、48k 采样,960 fft 加半窗 X kiss_fft 结果
3、计算各个频带组能量的时候,采⽤平滑计算能量Ex:

  • a、频带组划分低频段保证每组包含四个频带(❤️ 小于3.2k),⾼频段接近bark域,总共分成了22个频带。
  • b、计算组带能量的时候采⽤三⻆波⾏,即每⼀次的峰值响应其实就是两个组带相接的地⽅。
  • c、
static const opus_int16 eband5ms[] = {/*0 200 400 600 800 1k 1.2 1.4 1.6 2k 2.4 2.8 3.2 4k 4.8 5.6 6.8 8k 9.6
12k 15.6 20k*/0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 34, 40,48, 60, 78, 100
};

4、降采样,计算基⾳周期。
5、计算最新基⾳周期的能量Ep,以及与输⼊信号的相关性Exp;
6、正交变换求特征点:

  • a、针对输⼊信号bark 22个频带的能量做dct变换,得到22个BFCC系数。
  • b、针对22个中的前六个即1.2k 做相关的时间导数处理,增加12个特征点,针对当前及过去三帧处理为:
    6个:An+A(n-1)+A(n-2);
    +6个:An -A(n-2);
    +6个:An +A(n-2)-2A(n-1)。
  • c、针对基⾳周期相关性,做dct变换,得到前6组带的系数以及⼀个基⾳周期的系数。
  • d、通过计算过去8帧频带的差异值之和,求得稳定性系数1个。

8、使⽤训练的结果,计算出处增益。
9、pitch filter:(根据计算出来的增益,对输⼊信号进⾏基⾳谐波滤波)

  • a、主要是为了解决bark域 ,计算出的增益存在 基⾳谐波之间噪声残留的问题。
  • b、filter 采样了梳妆滤波器。
  • c、因为语⾳的周期性跟频率强相关,(特别是48k采样),所以滤波器设计成频域实现。
  • d、滤波器公式:x[i] +=a *Ep; x[i] 重新量化到原始语⾳的能量。
  • e、a的求解,根据噪声导致基⾳相关性降低有:Pb<=Gb;所以有Pb>=Gb,a =1;Gb = 1,a= 0,没有噪声; Pb =
    0,a = 0,没有基⾳; 公式:

    10、重新量化后的噪声语⾳ 与本次就算出的增益以及上次的增益,求解出最后的
    输出。

RNN训练代码部分

87个特征点的由来

1、输⼊信号的处理:
a、输⼊语⾳增益随机0.01~10,输⼊噪声增益随机0.1~10,增益的增加按帧来计算;
b、针对增益处理后的信号,通过随机⼆阶滤波器处理,得到更加随机的信号的。
c、针对增益处理前的纯语⾳信号,计算能量,根据语⾳能量特性,计算⼀个语⾳vad 特征点。
d、计算增益处理后噪声的能量谱,得到22个特征点。
e、混合增益处理后的噪声和语⾳信号,得到带噪语⾳信号,计算特征点,得到44个特征点;
f、计算增益处理后纯语⾳能量/带噪语⾳能量的⽐值,以及vad及静⾳,得到输⼊增益22个特征点。
结论:总共87个特征点输⼊;
2、模型:
a、实际使⽤了e的42个特征点作为输⼊,f的22个增益特征点以及c的vad 特征点作为输出进⾏训练。
c、validation_split = 0.1,也就是10%的数据作为验证测试集,epochs 设置为120次,也就是数据跑120遍,batch size 把数据分成32份。
d、gru 训练模型:总共215个单元,4个隐藏层。22个增益输出点,1⼀个vad 输出点。

e、损失函数权重0.5,对主权重矩阵进⾏约束 0.499, 对偏置向量进⾏约束0.499, 施加在权重上的正则项 0.000001,施加在偏置向量上的正则项0.000001。 3、训练运⾏流程:

(1) cd src ; ./compile.sh
(2) ./denoise_training signal.raw noise.raw count > training.f32
(note the matrix size and replace 50000000 87 below)
(3) cd training ;
./bin2hdf5.py ../src/training.f32 50000000 87 training.h5
(4) ./rnn_train.py
(5) ./dump_rnn.py weights.hdf5 rnn_data.c rnn_data.h

4、语⾳资源地址:
a、语⾳:http://www-mmsp.ece.mcgill.ca/Documents/Data/NTT Multi-Lingual Speech Database :这个暂时没有下载。可以使⽤其他的语⾳库替代。
b、噪声:
https://people.xiph.org/~jm/demo/rnnoise/rnnoise_contributions.tar.gz

RNNnoise知识整理相关推荐

  1. python常用变量名_python基础知识整理

    Python Python开发 Python语言 python基础知识整理 序言:本文简单介绍python基础知识的一些重要知识点,用于总结复习,每个知识点的具体用法会在后面的博客中一一补充程序: 一 ...

  2. Spring AOP 知识整理

    为什么80%的码农都做不了架构师?>>>    AOP知识整理 面向切面编程(AOP)通过提供另外一种思考程序结构的途经来弥补面向对象编程(OOP)的不足.在OOP中模块化的关键单元 ...

  3. Linux系统基础知识整理

    一.说明 本篇文章,我将结合自己的实践以及简介,来对linux系统做一个直观清晰的介绍,使得哪些刚接触Linux的小伙伴可以快速入门,也方便自己以后进行复习查阅. 二.基本知识整理 1.Linux文件 ...

  4. 计算机二级c语基础知识,计算机二级C语基础知识整理.doc

    计算机二级C语基础知识整理 1.1 算法 算法:是一组有穷指令集,是解题方案的准确而完整的描述.通俗地说,算法就是计算机解题的过程.算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计. ...

  5. js事件(Event)知识整理

    鼠标事件 鼠标移动到目标元素上的那一刻,首先触发mouseover  之后如果光标继续在元素上移动,则不断触发mousemove  如果按下鼠标上的设备(左键,右键,滚轮--),则触发mousedow ...

  6. Spring学习篇:IoC知识整理(一)

    现在正通过spring的官方文档学习spring,将自己学习时的点点滴滴记录下来. Ioc知识整理(一): IoC (Inversion of Control) 控制反转. 1.bean的别名 我们每 ...

  7. 使用Aspose.Cells的基础知识整理

    使用Aspose.Cells的基础知识整理 转自 http://www.cnblogs.com/kenblove/archive/2009/01/07/1371104.html 这两天用Aspose. ...

  8. 前端基础知识整理汇总(中)

    前端基础知识整理汇总(中) Call, bind, apply实现 // call Function.prototype.myCall = function (context) {context = ...

  9. 前端基础知识整理汇总(上)

    前端基础知识整理汇总(上) HTML页面的生命周期 HTML页面的生命周期有以下三个重要事件: 1.DOMContentLoaded -- 浏览器已经完全加载了 HTML,DOM 树已经构建完毕,但是 ...

  10. -%3e运算符在c语言中的作用,C语言逻辑运算符知识整理

    在高中数学中,我们学过逻辑运算,例如p为真命题,q就假命题,那么"p且q"为假,"p或q"为真,"非q"为真. 在C语言中,也有类似的逻辑运 ...

最新文章

  1. 示例:工具提示对象---享元模式应用
  2. css3 仿aero,让Qt支持Win7的Aero和毛玻璃效果
  3. 前端知识点整理(三)不定时更新~
  4. 全国计算机等级考试题库二级C操作题100套(第74套)
  5. leetcode 349. 两个数组的交集 思考分析
  6. leetcode49. 字母异位词分组
  7. JavaSE——Java介绍与环境变量简述
  8. git 相同commit_Git 合并多次 commit 、 删除某次 commit
  9. laravel 定时任务问题的总结
  10. zkcli远程连接_高级框架第一天RPC:远程过程调用
  11. Kali Linux 网络扫描秘籍 第四章 指纹识别(三)
  12. java控制double输出的小数点位数
  13. 异步请求引发的Chrome死锁
  14. python两个等号和一个等号_Python-一个变量等于另一个变量
  15. 桂林电子科技大学操作系统课程设计(一)
  16. ST语言和C语言的区别 STC
  17. SQLSERVER月份简写转数字
  18. 反相器有时候为了强调低电平有效,将反相器的图形符号中的小圆圈画在输入端,如数电中的画法。有时候小圆圈在前面只表示低电平有效,没有反相的意思,例如与非门组成的RS触发器
  19. tmp ubuntu 自动删除吗_如何清理/tmp?
  20. 时间格式转换,转时间戳,转UTC,转中国标准时间

热门文章

  1. 【设计模式】适配器模式
  2. 安装phpDocumentor
  3. 我的 Visual C++ 6.0学习网站
  4. WPF Ribbon 开发资料分享
  5. Android IntentService的使用与源码解析
  6. [线筛五连]线筛约数和
  7. vant ui的dialog二次封装使用
  8. Linux文件描述符和输入输出重定向
  9. 支持树莓派的路由器系统_真香!国产64位树莓派系统上手评测
  10. python开发环境一般用哪个_python开发环境哪个好用?如何搭建?