我正在使用nAudio Library来捕获麦克风输入.但我遇到了一个问题.

我正在使用nAudio示例应用程序中的代码(我稍微修改过).

代码生成基于麦克风输入的WAV文件并将其呈现为波形.这是代码.

private void RenderFile()

{

SampleAggregator.RaiseRestart();

using (WaveFileReader reader = new WaveFileReader(this.voiceRecorderState.ActiveFile))

{

this.samplesPerSecond = reader.WaveFormat.SampleRate;

SampleAggregator.NotificationCount = reader.WaveFormat.SampleRate/10;

//Sample rate is 44100

byte[] buffer = new byte[1024];

WaveBuffer waveBuffer = new WaveBuffer(buffer);

waveBuffer.ByteBufferCount = buffer.Length;

int bytesRead;

do

{

bytesRead = reader.Read(waveBuffer, 0, buffer.Length);

int samples = bytesRead / 2;

double sum = 0;

for (int sample = 0; sample < samples; sample++)

{

if (bytesRead > 0)

{

sampleAggregator.Add(waveBuffer.ShortBuffer[sample] / 32768f);

double sample1 = waveBuffer.ShortBuffer[sample] / 32768.0;

sum += (sample1 * sample1);

}

}

double rms = Math.Sqrt(sum / (SampleAggregator.NotificationCount));

var decibel = 20 * Math.Log10(rms);

System.Diagnostics.Debug.WriteLine(decibel.ToString() + " in dB");

} while (bytesRead > 0);

int totalSamples = (int)reader.Length / 2;

TotalWaveFormSamples = totalSamples / sampleAggregator.NotificationCount;

SelectAll();

}

audioPlayer.LoadFile(this.voiceRecorderState.ActiveFile);

}

下面是一个2秒WAV文件的结果,没有声音,只有麦克风噪音.

-54.089102453893以dB为单位

-51.9171950072361以dB为单位

-53.3478098666891,以dB为单位

-53.1845794096928以dB为单位

-53.8851764055102以dB为单位

-57.5541358628342以dB为单位

-54.0121140454216以dB为单位

-55.5204248291508,以dB为单位

-54.9012326746571以dB为单位

-53.6831017096011,以dB为单位

-52.8728852678309以dB为单位

-55.7021600863786以dB为单位

我们可以看到,当没有输入声音时,db级别会在-55左右徘徊,只有静音.如果我在麦克风中以正常音调录制“Hello”,则db值将转到-20左右.我在某处读到平均人声约为20dB,-3dB到-6dB是麦克风的ZERO值范围.

问题:我是否正确计算了dB值? (我使用了其他人提出的公式)…为什么dB总是出现负值?我错过了一个关键概念或机制吗?

我在codeplex搜索了nAudio文档但没有找到答案.在我的观察中,那里的文档需要更加解释,然后只是一堆Q& A [no attack nAudio :)]

c语言用麦克风检测环境噪音分贝,C# – 麦克风噪音检测相关推荐

  1. android判断音频是否是噪音,声音检测器sound detector(噪音分贝检测)

    声音检测器sound detector(噪音分贝检测)是一款非常好用的手机噪音分贝检测软件,声音检测器sound detector(噪音分贝检测)软件使用起来非常的简单方便,可以让你清楚的了解到噪音的 ...

  2. java语言 爱我,语言篇:Java环境

    语言篇:Java环境 Java是什么? Java 是一项用于开发应用程序的技术语言,可以让 Web 变得更有意思和更实用.使用 Java 可以玩游戏.上载照片.联机聊天以及参与虚拟体验,并能够使用联机 ...

  3. 我的全栈之路-C语言基础之C语言概述与开发环境搭建

    我的全栈之路-C语言基础之C语言概述与开发环境搭建 我的全栈之路 1.1 信息技术发展趋势 1.2 浅谈计算机系统架构 1.2.1 计算机系统架构概述 1.2.2 计算机硬件系统 1.2.2 计算机软 ...

  4. 强噪音环境对计算机影响,电脑噪音的来源及危害

    原标题:电脑噪音的来源及危害 噪音是指由于发音体不规则振动而产生的音高和间强变化混乱,听起来不谐调的声音.通俗地说,噪音就是那些干扰人们生活.令人无法接受的嘈杂刺耳的声音.电脑噪音主要由主机内众多的散 ...

  5. win10平台下Go语言的IDE和环境配置

    Go语言 是谷歌推出的一款全新的编程语言,可以在不损失应用程序性能的情况下极大的降低代码的复杂性,还可以发挥多核处理器同步多工的优点,并可解决面向对象程序设计的麻烦,并帮助程序设计师处理琐碎但重要的内 ...

  6. RStudio v1.2.1335 发布,R 语言的集成开发环境

    开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>   RStudio 是 R 语言的集成开发环境,分为面向桌面用户 IDE 和 Linux R 服务器版编辑器两种编辑器 ...

  7. Ubuntu Tensorflow object_detection API 目标检测环境搭建

    Ubuntu 16.04下安装TensorFlow Object Detection API(对象检测API) Ubuntu 16.04下搭建TensorFlow运行环境(用Anaconda)     ...

  8. python语言编程环境-python语言开发搭建电脑环境的方法

    python语言开发搭建电脑环境的方法 发布时间:2020-08-24 15:57:58 来源:亿速云 阅读:89 作者:小新 这篇文章主要介绍了python语言开发搭建电脑环境的方法,具有一定借鉴价 ...

  9. 用Arduino检测环境中的温湿度

    用Arduino检测环境中的温湿度 使用的温湿度传感器是 SHT1X 温湿度传感器. 其技术规格如下: 全部校准,数字输出: 接口简单(2-wire),响应速度快: 超低功耗,自动休眠: 出色的长期稳 ...

最新文章

  1. Kinect V1读取图像数据(For Windows)
  2. 路由器互联端口处于不同网段的路由方法和原理
  3. javascript 学习三 语句
  4. Android 双击返回键退出程序 实现
  5. 笔记本电脑自带麦克风吗_小米电视可以唱歌吗
  6. Mac下修改ZOC中文乱码
  7. 从零点五开始用Unity做半个2D战棋小游戏(七)
  8. Linux下python包放在哪,在alpinlinux中使用apk安装的Python包
  9. 打印更无缝:微软改善Win11中通用打印体验
  10. Vue成大学核心课程
  11. verilog奇偶分频
  12. 新华网评:企业的信息安全关把好了吗?
  13. 在Xen的DomU中安装MySQL
  14. 安装openguass数据库配套工具Data Studio
  15. android 获取IP地址
  16. redis分布式锁-redisson
  17. c语言帮助记忆单词的小程序,帮助记忆单词的书课堂活动微信小程序软件_速记背单词...
  18. 跨境电商如何找代运营公司?星之河
  19. 如何选择漏电保护器规格型号_漏电保护器型号规格_漏电保护器的选用及注意事项...
  20. 苹果ppt_惊艳!苹果发布会最爱用的PPT动画,居然这么简单

热门文章

  1. 七月脱产复习上岸Byte Dance,敢问:这不比“博人传”燃?
  2. qt中出现out-of-line definition of 'Widget' does not match any declaration in 'Widget'问题的解决
  3. 增值电信业务中1069短信代码和1066短信代码有什么区别吗?
  4. 计算机网络平台建设,计算机网络课程信息化教学平台建设原稿
  5. python 人生苦短,我学Python(一)
  6. c语言--输入字符大写转小写,小写转大写
  7. RxJava图文详解,可以说是很全了。
  8. 晶振为什么要加电容_需要配多大电容
  9. PHP怎么快速推送微信模板
  10. MySQL索引类型(按数据结构分类)