源代碼:http://download.csdn.net/detail/jsgaobiao/9480141
Ø 【實驗目的】
在安卓系統上開發一個語音增強應用,能夠實現播放原始音頻、添加高斯白噪聲和播放去噪增強後的音頻等功能。
Ø 【實驗器材】
Android Studio 1.5.1
Xiaomi Pad (7.9’’): Android 4.4.4 , 1536*2048 xhdpi
Ø 【實驗原理】
一、算法思路
採用垂直Linear Layout的界面設計,頂部有一個文本框,供輸入信噪比使用;往下依次是四個按鈕,分別爲“播放原始音頻”、“播放加噪音頻”、“音頻加強”和“播放加強音頻”。
設s(m),n(m),y(m)代表原始語音、噪聲和帶噪語音,S(ω),N(ω),Y(ω)代表其短時譜。假設噪聲是與語音不相關的加性噪聲,則得到信號的加性模型爲
y(m)=s(m)+n(m)
轉換到頻域,有
Y(ω)=S(ω)+N(ω)
對應功率譜爲
|Y(ω)|^2=|S(ω)|^2+|N(ω)|^2+S(ω) N* (ω)+S* (ω)N(ω)
有S和N的獨立性假設,得
|Ŝ(ω)|^2=|Y(ω)|^2+E[|N(ω)|^2 ]
二、程序結構
三、算法實現
1、 噪聲的添加
添加的噪聲爲高斯分佈的白噪聲,根據用戶選擇的信噪比來加入高斯分佈的噪聲
2、 噪聲的估計
我通過取了音頻的前3幀來估計噪聲的能量,每幀包含的數據個數爲FrameLength(1024)個,最終的噪聲水平由3幀的平均值確定。
3、 噪聲的去除
得到了噪聲能量的估計值後,在含有噪聲的音頻頻譜中,將噪聲的能量減掉。最後,將處理過的音頻進行傅里葉逆變換,得到增強後的音頻。
Ø 【小結】
我通過本次實驗,複習了快速傅里葉變換和其逆變換的算法。在用戶選擇信噪比的時候,採用了SeekBar組件實現的進度條的方式。這讓我在第一次實驗的基礎上,又多瞭解和掌握了一些安卓編程的技能。同時,還了解了有關語音增強方面的一些知識。