C#语音识别问题 查了很多资料,都只有语音合成和录音的。没有语音识别的资料。既然不能实现语音识别那么可不可以让程序监控麦克风,比如当麦克风音量大于50时触发一个事件。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 说实话,我现在对这个话题很敏感.前段时间有个GG老是发这个类似的标题的帖子来倒粪.音量是可以检测出来的.捕获到声音数据之后可以计算声音的能量.例如进行FFT变换之后显示波形,这个都是根据声音的能量来计算的. 关于语音识别C++的例子我这里有个,在PUDN上找的.这方面C#的例子应该比较少.音量检测不难.找找FFT的例子或者低通滤波的例子看看就OK了. 我这里有些例子,不过都是C++的1.捕获声音数据(这个步骤LZ应该会吧?就是调用WINDOWS API wave系列函数就可以.用directsound也行)如果声音是来自文件的就更简单的,例如是wav的,这样就直接读里面的数据,directsound的例子里有封装好的类,使用起来很方便,如果是mp3等格式的,要先解码.2.得到数据就好办了,计算读到的每一桢数据的能量,如果大于某个门限值则触发相应事件.3.计算能量可以用fft变化,也可以不变化直接计算.和静音检测的原理一样的. 第一点之前做过,直接调用的windows api 保存成wav文件。但是边采集边判断音量就不懂了(就是试试监控每一秒的音量,不等录完以后再判断)。对于第二和第三点之前完全没接触过。看来我还停留在入门阶段呀。。 G.723 里有静音检测的代码,你可以下载一个研究一下,静音检测部分在VAD.C这个文件里.Init_Vad();if (Comp_Vad((short*)tmp)>40){ //声音能量大于40....}这样调用一下就可以了. [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)] public static extern int mciSendString( string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback );这个是我之前录音的时候的一段代码,直接调用的dll.发送相关命令就可以录音暂停保存。但是在程序中却无法获得保存在内存中的数据。 捕获MM_WIM_DATA消息就可以得到数据了.void OnMM_WIM_DATA(UINT parm1, LONG parm2);parm2里就是声音数据了.先找个c++的例子看看吧,然后在试试能不能用c#做个类似的.不知道c#有没有封装好的类,如果有就方便了. 说实话,我现在对这个话题很敏感.前段时间有个GG老是发这个类似的标题的帖子来倒粪. 音量是可以检测出来的.捕获到声音数据之后可以计算声音的能量.例如进行FFT变换之后显示波形,这个都是根据声音的能量来计算的. 窗口缩小怎么引发paint事件? tabcontrol上加了个关闭按钮,如何使鼠标移上去时按钮的颜色变一下呢 C# 中怎么将datetime类型转成DB2里可用的date型啊? C#数字取尾数 在线等 c#远程修改Xml问题及方案 继承的简单问题 新手问一个简单的问题,大家帮忙看一下 DesignSurface制作设计器遇到的问题... Directshow中的IMediaDet进行视频帧的提取(c#) C#写星座程序 请问声明数组时如何给数组名带入一个变量,达到用循环批量生成数组的目的啊? C#,做一个类似于QQ的东西
音量是可以检测出来的.捕获到声音数据之后可以计算声音的能量.例如进行FFT变换之后显示波形,这个都是根据声音的能量来计算的.
这方面C#的例子应该比较少.
音量检测不难.找找FFT的例子或者低通滤波的例子看看就OK了.
1.捕获声音数据(这个步骤LZ应该会吧?就是调用WINDOWS API wave系列函数就可以.用directsound也行)
如果声音是来自文件的就更简单的,例如是wav的,这样就直接读里面的数据,directsound的例子里有封装好的类,使用起来很方便,如果是mp3等格式的,要先解码.
2.得到数据就好办了,计算读到的每一桢数据的能量,如果大于某个门限值则触发相应事件.
3.计算能量可以用fft变化,也可以不变化直接计算.和静音检测的原理一样的.
Init_Vad();
if (Comp_Vad((short*)tmp)>40)
{
//声音能量大于40....
}
这样调用一下就可以了.
public static extern int mciSendString(
string lpstrCommand,
string lpstrReturnString,
int uReturnLength,
int hwndCallback
);这个是我之前录音的时候的一段代码,直接调用的dll.发送相关命令就可以录音暂停保存。但是在程序中却无法获得保存在内存中的数据。
void OnMM_WIM_DATA(UINT parm1, LONG parm2);
parm2里就是声音数据了.
先找个c++的例子看看吧,然后在试试能不能用c#做个类似的.不知道c#有没有封装好的类,如果有就方便了.
音量是可以检测出来的.捕获到声音数据之后可以计算声音的能量.例如进行FFT变换之后显示波形,这个都是根据声音的能量来计算的.