c语言用麦克风检测环境噪音分贝,C# – 麦克风噪音检测
我正在使用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# – 麦克风噪音检测相关推荐
- android判断音频是否是噪音,声音检测器sound detector(噪音分贝检测)
声音检测器sound detector(噪音分贝检测)是一款非常好用的手机噪音分贝检测软件,声音检测器sound detector(噪音分贝检测)软件使用起来非常的简单方便,可以让你清楚的了解到噪音的 ...
- java语言 爱我,语言篇:Java环境
语言篇:Java环境 Java是什么? Java 是一项用于开发应用程序的技术语言,可以让 Web 变得更有意思和更实用.使用 Java 可以玩游戏.上载照片.联机聊天以及参与虚拟体验,并能够使用联机 ...
- 我的全栈之路-C语言基础之C语言概述与开发环境搭建
我的全栈之路-C语言基础之C语言概述与开发环境搭建 我的全栈之路 1.1 信息技术发展趋势 1.2 浅谈计算机系统架构 1.2.1 计算机系统架构概述 1.2.2 计算机硬件系统 1.2.2 计算机软 ...
- 强噪音环境对计算机影响,电脑噪音的来源及危害
原标题:电脑噪音的来源及危害 噪音是指由于发音体不规则振动而产生的音高和间强变化混乱,听起来不谐调的声音.通俗地说,噪音就是那些干扰人们生活.令人无法接受的嘈杂刺耳的声音.电脑噪音主要由主机内众多的散 ...
- win10平台下Go语言的IDE和环境配置
Go语言 是谷歌推出的一款全新的编程语言,可以在不损失应用程序性能的情况下极大的降低代码的复杂性,还可以发挥多核处理器同步多工的优点,并可解决面向对象程序设计的麻烦,并帮助程序设计师处理琐碎但重要的内 ...
- RStudio v1.2.1335 发布,R 语言的集成开发环境
开发四年只会写业务代码,分布式高并发都不会还做程序员? >>> RStudio 是 R 语言的集成开发环境,分为面向桌面用户 IDE 和 Linux R 服务器版编辑器两种编辑器 ...
- Ubuntu Tensorflow object_detection API 目标检测环境搭建
Ubuntu 16.04下安装TensorFlow Object Detection API(对象检测API) Ubuntu 16.04下搭建TensorFlow运行环境(用Anaconda) ...
- python语言编程环境-python语言开发搭建电脑环境的方法
python语言开发搭建电脑环境的方法 发布时间:2020-08-24 15:57:58 来源:亿速云 阅读:89 作者:小新 这篇文章主要介绍了python语言开发搭建电脑环境的方法,具有一定借鉴价 ...
- 用Arduino检测环境中的温湿度
用Arduino检测环境中的温湿度 使用的温湿度传感器是 SHT1X 温湿度传感器. 其技术规格如下: 全部校准,数字输出: 接口简单(2-wire),响应速度快: 超低功耗,自动休眠: 出色的长期稳 ...
最新文章
- Kinect V1读取图像数据(For Windows)
- 路由器互联端口处于不同网段的路由方法和原理
- javascript 学习三 语句
- Android 双击返回键退出程序 实现
- 笔记本电脑自带麦克风吗_小米电视可以唱歌吗
- Mac下修改ZOC中文乱码
- 从零点五开始用Unity做半个2D战棋小游戏(七)
- Linux下python包放在哪,在alpinlinux中使用apk安装的Python包
- 打印更无缝:微软改善Win11中通用打印体验
- Vue成大学核心课程
- verilog奇偶分频
- 新华网评:企业的信息安全关把好了吗?
- 在Xen的DomU中安装MySQL
- 安装openguass数据库配套工具Data Studio
- android 获取IP地址
- redis分布式锁-redisson
- c语言帮助记忆单词的小程序,帮助记忆单词的书课堂活动微信小程序软件_速记背单词...
- 跨境电商如何找代运营公司?星之河
- 如何选择漏电保护器规格型号_漏电保护器型号规格_漏电保护器的选用及注意事项...
- 苹果ppt_惊艳!苹果发布会最爱用的PPT动画,居然这么简单
热门文章
- 七月脱产复习上岸Byte Dance,敢问:这不比“博人传”燃?
- qt中出现out-of-line definition of 'Widget' does not match any declaration in 'Widget'问题的解决
- 增值电信业务中1069短信代码和1066短信代码有什么区别吗?
- 计算机网络平台建设,计算机网络课程信息化教学平台建设原稿
- python 人生苦短,我学Python(一)
- c语言--输入字符大写转小写,小写转大写
- RxJava图文详解,可以说是很全了。
- 晶振为什么要加电容_需要配多大电容
- PHP怎么快速推送微信模板
- MySQL索引类型(按数据结构分类)