1.下载源码点击下载rnnoise代码,或者去github下载
2.编译源码

  • sudo apt-get install autoconf automake libtool
  • ./autogen.sh
  • ./configure
  • make3

3.训练

  • pip依赖

    pip install numpy h5py
    pip install grpcio==1.36.1
    pip install keras==2.2.4 tensorflow==1.12.0  #版本必须对应 tensorflow-gpu==1.12.0
    pip install protobuf==3.8.0
    
  • cd src ; ./compile.sh
  • ./denoise_training signal.raw noise.raw 10000 > training.f32
  • cd training ; ./bin2hdf5.py …/src/training.f32 10000 87 training.h5
  • ./rnn_train.py
  • ./dump_rnn.py weights.hdf5 …/src/rnn_data.c rnn_data.h orig

4.降噪

  • ./rnnoise_demo noise.raw out.raw

附:

tensorflow: Your CPU supports instructions that this TensorFlow binary was not compiled to use: FMA
遇到了这个问题,意思是你的 CPU 支持AVX2 FMA(加速CPU计算),但安装的 TensorFlow 版本不支持如果是初学者 或者 没有太大计算速度的需求,在开头加上这两行忽略这个提示即可import osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
PS:os.environ["TF_CPP_MIN_LOG_LEVEL"] = '1' # 默认,显示所有信息 os.environ["TF_CPP_MIN_LOG_LEVEL"] = '2' # 只显示 warning 和 Error os.environ["TF_CPP_MIN_LOG_LEVEL"] = '3' # 只显示 Error
音频文件合并处理脚本
#coding: utf-8import os
import os.path
import binasciiout_file_name='1.raw'ignore_filename = [".raw", ".py"]def ignore_check_file(file):for ignore in ignore_filename:if file.find(ignore) > 0:return Truereturn False#字符串 >> 二进制 >> hex >> hex 字符串
def str_to_hexStr(string):str_bin = string #string.encode('utf-8')return binascii.hexlify(str_bin).decode('utf-8')
#hex 字符串 >> hex >> 二进制 >> 字符串
def hexStr_to_str(hex_str):hex = hex_str.encode('utf-8')str_bin = binascii.unhexlify(hex)return str_bin.decode('utf-8')
def print_wav_head(head_msg):riff = head_msg[0:4]len_byte_0 = str_to_hexStr(head_msg[7:8])len_byte_1 = str_to_hexStr(head_msg[6:7])len_byte_2 = str_to_hexStr(head_msg[5:6])len_byte_3 = str_to_hexStr(head_msg[4:5])file_len = int(len_byte_0+len_byte_1+len_byte_2+len_byte_3, 16)wave = head_msg[8:12]fmt = head_msg[12:16]filtration = str_to_hexStr(head_msg[16:17])FormatTag = str_to_hexStr(head_msg[20:22])Channels = str_to_hexStr(head_msg[22:24])samp_byte_0 = str_to_hexStr(head_msg[27:28])samp_byte_1 = str_to_hexStr(head_msg[26:27])samp_byte_2 = str_to_hexStr(head_msg[25:26])samp_byte_3 = str_to_hexStr(head_msg[24:25])SamplesPerSec = int(samp_byte_0+samp_byte_1+samp_byte_2+samp_byte_3, 16)persec_byte_0 = str_to_hexStr(head_msg[31:32])persec_byte_1 = str_to_hexStr(head_msg[30:31])persec_byte_2 = str_to_hexStr(head_msg[29:30])persec_byte_3 = str_to_hexStr(head_msg[28:29])BytesPerSec = int(persec_byte_0+persec_byte_1+persec_byte_2+persec_byte_3, 16)BlockAlign = str_to_hexStr(head_msg[32:34])BitsPerSample = str_to_hexStr(head_msg[34:36])data = head_msg[36:40]audio_len_byte_0 = str_to_hexStr(head_msg[43:44])audio_len_byte_1 = str_to_hexStr(head_msg[42:43])audio_len_byte_2 = str_to_hexStr(head_msg[41:42])audio_len_byte_3 = str_to_hexStr(head_msg[40:41])audioDataLen = int(audio_len_byte_0+audio_len_byte_1+audio_len_byte_2+audio_len_byte_3, 16)print "-----WAV Head info-----"print "HEAD:",str_to_hexStr(head_msg)print "RIFF(4):",riff #ckid:4字节 RIFF 标志,大写print "Len(4):",file_len #cksize:4字节文件长度,这个长度不包括"RIFF"标志(4字节)和文件长度本身所占字节(4字节),即该长度等于整个文件长度-8 print "WAV(4):",wave #fcc type:4字节 "WAVE" 类型块标识, 大写print "FMT(4):",fmt #ckid:4字节 表示"fmt" chunk的开始,此块中包括文件内部格式信息,小写, 最后一个字符是空格print "FILT(4):",'0x'+filtration #cksize:4字节,文件内部格式信息数据的大小,过滤字节(一般为00000010H)print "FTAG(2):",FormatTag #FormatTag:2字节,音频数据的编码方式,1:表示是PCM 编码  print "CHAN(2):",Channels #Channels:2字节,声道数,单声道为1,双声道为2   print "SAMP(4):",SamplesPerSec #SamplesPerSec:4字节,采样率,如44100  print "PERSEC(4):",BytesPerSec #BytesPerSec:4字节,音频数据传送速率, 单位是字节.其值为采样率×每次采样大小.播放软件利用此值可以估计缓冲区的大小;bytePerSecond = sampleRate * (bitsPerSample / 8) * channels print "ALIGN(2):",BlockAlign  #BlockAlign:2字节,每次采样的大小 = 采样精度*声道数/8(单位是字节); 这也是字节对齐的最小单位, 譬如 16bit 立体声在这里的值是 4 字节.播放软件需要一次处理多个该值大小的字节数据,以便将其值用于缓冲区的调整 print "PERS(2):",BitsPerSample  #BitsPerSample:2字节,每个声道的采样精度; 譬如 16bit 在这里的值就是16.如果有多个声道,则每个声道的采样精度大小都一样的;print "DATA(4):",data  #ckid:4字节,数据标志符(data),表示 "data" chunk的开始.此块中包含音频数据,小写; print "AUDIOLEN(4):",audioDataLen  #cksize:音频数据的长度,4字节,audioDataLen = totalDataLen - 36 = fileLenIncludeHeader - 44  print "-----------------------"def read_pcm_file():file_count = 0wf = open(out_file_name, 'wb')for root, dirs, files in os.walk("."):#root:当前目录路径 dirs:当前路径下所有子目录 files:当前路径下所有非目录子文件for file in files:src_file = root + '\\' + fileif ignore_check_file(file) == False:file_count += 1print "Process File Name:",src_filerf = open(src_file, 'rb')if file.find('.wav') > 0:wav_head = rf.read(44)print_wav_head(wav_head)raw_data = rf.read()pcm_idx = raw_data.rfind('data')if pcm_idx > 0:print "Read File Len:", len(raw_data), "PCM idx:", pcm_idxwf.write(raw_data[pcm_idx+4+2:])rf.close()wf.close()          print "Process File Count:", file_countif __name__=='__main__':read_pcm_file()

RNNoise降噪训练相关推荐

  1. 音频降噪在58直播中的研究与实现

    背景 在直播时主播经常会受到一些外部环境音.噪音等影响,直播时音频采集会一并采集所有音频推流到观众设备上,从而影响观众收听体验.因此需要在直播主播端主动进行降噪处理,提高观众收听体验. 58直播为了实 ...

  2. RNNoise: Learning Noise Suppression(深度学习噪声抑制)(2)

    这篇文章主要介绍如何进行RNNoise的训练和测试 1. 网络结构 GRU VS LSTM 网络顺序 2. 数据集 3. 更改采样率 4. 训练过程 (1) step 1 转换为pcm格式 (2) s ...

  3. 音视频开发之旅(六) -----Android集成webrtc降噪和增益模块, ns_core函数简析

    1.前言 再上一章主要介绍了音频文件的相关操作,在录音的过程当中,由于android机型不同的型号,即使采样率设置成44100k,有一定的外接音或者一些噪音等印象,配音出来的结果并不是很好,肯能存在' ...

  4. RNNoise超详细解析

    rnnosise笔记 论文阅读 ​ 原始论文为 Jean-Marc Valin 等发表的A Hybrid DSP/Deep Learning Approach to Real-Time Full-Ba ...

  5. 视频教程-micropython基础入门(esp32/esp8266单片机开发)-物联网技术

    micropython基础入门(esp32/esp8266单片机开发) 10年以上维修电工.6年以上python/javascript/c/linux经验.编程与单片机与电工知识跨学科结合.掌握lin ...

  6. Neighbor2Neighbor: Self-Supervised Denoising from Single Noisy Images

    下面内容来自智源研究院CVPR2021预讲华为诺亚专场 1.深度学习的图像去噪方法面临的挑战 当前方法主要包括三类: 基于监督学习的方法:使用 noisy-clean 图像对进行训练(DnCNN, F ...

  7. 隐式反馈的去噪,模型取得巨大提升

    Denoising Implicit Feedback for Recommendation! 本篇内容细节会涉及的更多一些,大家可以再次温故一遍,个人觉得非常有意思的一篇工作. 现实推荐问题的建模中 ...

  8. AAAI'23 | 利用大规模辅助数据提升端到端语音翻译系统

    每天给你送来NLP技术干货! 作者 | 张裕浩 单位 | 东北大学自然语言处理实验室 来自 | 机器翻译学堂 [导读]本文由论文原作者撰写,介绍作者团队设计的一种多阶段的预训练方法,利用有标注和无标注 ...

  9. 深度学习降噪方案-RNNoise简介和环境配置

    RNNoise是一个采用音频特征抽取+深度神经网络结合的降噪方案. RNNoise相关基本信息, 请查看 RNNoise学习和翻译系列 目录 RNNoise的基本流程和模块 RNNoise的目录结构介 ...

  10. 【rnnoise快速体验】rnnoise从编译到训练

    运行环境为Ubuntu18.04 C部分 下载源码 从github上下载源码,目前只有master分支,就拿master分支下来. 准备编译环境 干净的linux环境可能会没有安装gcc等编译工具 所 ...

最新文章

  1. 5G NR — 频率、频段、载波、载频、载波带宽
  2. 服务器系统版本选择,云服务器选择系统版本
  3. python ‘float‘object is not iterable
  4. Java基础:成员变量的继承与覆盖
  5. 关于form组件的补充-------formChoice
  6. 小程序如何跳转到各大电商小程序进行CPS赚钱
  7. PHP短网址链接在线生成源码 带后台
  8. IBM X3650 M4 服务器
  9. 分享一个空手反套白狼的骚操作
  10. 360P2建html网站,360 P2路由器密码怎么设置?
  11. 将 libVLC 视频渲染到 QWidget 中
  12. Node后台邮件服务器
  13. base64编码类------原始码(C#)
  14. TWS耳机背后的推手
  15. html 纵向导航,div+css纵向导航如何实现且为导航添加超链接
  16. 财富2019年世界500强企业爬虫(爬虫学习实践项目)
  17. 别天天人肉提数了,做点这些有价值的事吧...
  18. WPF开发学生信息管理系统【WPF+Prism+MAH+WebApi】(一)
  19. 四轴飞行器入门——基础知识
  20. USB PD芯片HUSB361实现15W~65W高效低耗的快充电源设计

热门文章

  1. Interfaces for Music音乐界面——翻译
  2. 给定经纬度计算距离_根据两点经纬度计算距离
  3. AI虚拟偶像正崛起,是否可以取代你的idol?
  4. 金山卫士开源代码_官方下载地址
  5. C#中使用ribbon界面
  6. win10 svn无法成功完成操作,因为文件包含病毒或潜在的垃圾软件
  7. input type=file 选取文件路径时出现fakepath问题IE浏览器解决办法
  8. visio业务流程图教学_visio业务流程图怎么画
  9. MySQL安装配置教程(超级详细、保姆级)
  10. 韦根w34是多少位_韦根协议格式