接下来,我们做个小demo,来实现类似的功能。先上demo运行起来的截图:
(界面确实比较丑,我们这里的重点在于技术方面如何实现,如果你愿意花点时间,可以将其美化得跟QQ的那个一样漂亮^_^)
1.实现思路
实现这个小例子的主要思路如下:
(2)对采集到的数据进行傅立叶变换,变换的结果就可以反应声音的强度。
(3)使用ProgressBar控件来实时显示声音的强度信息。
2.具体实现
(1)傅立叶变换算法
(2)初始化OMCS服务器、设备管理器、麦克风设备
(3)连接麦克风,开始采集
首先,初始化本地多媒体设备管理器,然后使用麦克风连接器连接到当前登录用户“tester”(即“自己”)麦克风设备。如果连接成功,多媒体管理器将会触发AudioCaptured事件,我们通过这个事件来截获音频数据。
(4)处理采集到的音频数据,并显示结果
注意:由于OMCS音频采样的位数为16bit,这样,一个单位的语音样本的字节数为2个字节。所以,傅立叶变换前,先要将原始的PCM数据(byte[])转为Int16的数组。
在显示分贝强度时,我偷了下懒,直接使用了ProgressBar控件,体验不是很好,勉强能表达出意思吧。
3.Demo程序