接下來,我們做個小demo,來實作類似的功能。先上demo運作起來的截圖:
(界面确實比較醜,我們這裡的重點在于技術方面如何實作,如果你願意花點時間,可以将其美化得跟QQ的那個一樣漂亮^_^)
1.實作思路
實作這個小例子的主要思路如下:
(2)對采集到的資料進行傅立葉變換,變換的結果就可以反應聲音的強度。
(3)使用ProgressBar控件來實時顯示聲音的強度資訊。
2.具體實作
(1)傅立葉變換算法
(2)初始化OMCS伺服器、裝置管理器、麥克風裝置
(3)連接配接麥克風,開始采集
首先,初始化本地多媒體裝置管理器,然後使用麥克風連接配接器連接配接到目前登入使用者“tester”(即“自己”)麥克風裝置。如果連接配接成功,多媒體管理器将會觸發AudioCaptured事件,我們通過這個事件來截獲音頻資料。
(4)處理采集到的音頻資料,并顯示結果
注意:由于OMCS音頻采樣的位數為16bit,這樣,一個機關的語音樣本的位元組數為2個位元組。是以,傅立葉變換前,先要将原始的PCM資料(byte[])轉為Int16的數組。
在顯示分貝強度時,我偷了下懶,直接使用了ProgressBar控件,體驗不是很好,勉強能表達出意思吧。
3.Demo程式