代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
CSharp
】
录音判断是否在说话
作者:
dezai
/ 发布于
2014/5/22
/
584
C#录音判断是否在说话
调试这个方法的时候千万别断电调试,因为这样你是永远通过不了的,只有运行起来看打印的值,你才能看明白。 C#录音 你只要替换这个一个方法就行。 private void RecordCapturedData() { byte[] CaptureData = null; int ReadPos; int CapturePos; int LockSize; mRecBuffer.GetCurrentPosition(out CapturePos, out ReadPos); LockSize = ReadPos - mNextCaptureOffset; if (LockSize < 0) LockSize += mBufferSize; // 对齐缓冲区边界,实际上由于开始设定完整,这个操作是多余的. LockSize -= (LockSize % mNotifySize); if (0 == LockSize) return; if (mWriter == null) return; // 读取缓冲区内的数据 CaptureData = (byte[])mRecBuffer.Read(mNextCaptureOffset, typeof(byte), LockFlag.None, LockSize); // 写入Wav文件 mWriter.Write(CaptureData, 0, CaptureData.Length); // 更新已经录制的数据长度. mSampleCount += CaptureData.Length; // 移动录制数据的起始点,通知消息只负责指示产生消息的位置,并不记录上次录制的位置 mNextCaptureOffset += CaptureData.Length; mNextCaptureOffset %= mBufferSize; // Circular buffer double[] _waveLeft = new double[CaptureData.Length / 4]; double[] _waveRight = new double[CaptureData.Length / 4]; // Split out channels from sample int h = 0; for (int i = 0; i < CaptureData.Length; i += 4) { _waveLeft[h] = (double)BitConverter.ToInt16(CaptureData, i); _waveRight[h] = (double)BitConverter.ToInt16(CaptureData, i + 2); h++; } double sum = 0; foreach (double item in _waveLeft) { if (item > 0) sum += item; else sum += -item; } double result = (double)(((sum / _waveLeft.Length)) / 32768 * 1000); //这个是算分倍率的一个公式 一般大于30分贝 就代表有声音 double docap = 22000 * 2 * 4; timeNoSpeake += CaptureData.Length / docap; timeSecond += CaptureData.Length / docap; Console.WriteLine("分贝2:" + result + "时间:" + timeNoSpeake); //这里是打印分贝 } #endregion }
试试其它关键字
判断是否在说话
同语言下
.
文件IO 操作类库
.
Check图片类型[JPEG(.jpg 、.jpeg),TIF,GIF,BMP,PNG,P
.
机器名和IP取得(IPV4 IPV6)
.
Tiff转换Bitmap
.
linqHelper
.
MadieHelper.cs
.
RegHelper.cs
.
如果关闭一个窗体后激活另一个窗体的事件或方法
.
创建日志通用类
.
串口辅助开发类
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
dezai
贡献的其它代码
(
1065
)
.
双色球
.
列出所有物理网络适配器
.
快乐数的 Python 实现
.
计算当月还剩天数
.
猜属相
.
二十四小时时钟
.
每日一语
.
很酷的日历
.
超长日历表单
.
最简单的时钟
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3