日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于谱减法的声音去噪

發布時間:2025/5/22 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于谱减法的声音去噪 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉載請注明出處:?http://xiahouzuoxin.github.io/notes/

譜減法模型

實際聽覺環境中,肯定是含有噪聲的,那摻雜有噪聲的聲音信號中原聲音信號和噪聲信號是如何體現的呢?一種普遍被使用的方法是:采集到的聲音信號永遠都是原信號與噪聲信號的疊加,即

模型是信號的直接疊加,這就要滿足:原信號與噪聲信號不相關。其實有些情況下這個條件是不滿足的,所以依然有很多其他的模型,如有人認為原信號和噪聲信號是卷積的關系。當然,這些都是模型,還沒有明確的理論證明那種是對的,反正哪種好用我們就撿誰。譜減法就是基于噪聲的加法模型。

語音信號本身是非平穩過程,但假如取很短的一段(10~30ms),則具有短時平穩特性。因此,使用窗函數取含噪語音信號的一幀(N點)進行處理。信號疊加模型兩邊同時進行傅里葉變換,并取模,

則對原信號幅值的估計就可通過|S(k)|=|Y(k)|-|N(k)|求得,但僅這樣存在2個問題:

  • |S(k)|可能為負值,語音信號的FFT譜幅值怎么可能為負值呢
  • |S(k)|中不包含相位信息,必需在取模時同時保留相位信息
  • 因此,譜減法考慮到這兩點,其流程如下:

    圖注:譜減法流程圖

    在語音增強的應用中,由于人耳對相位信息的感知不敏感,信號恢復時仍使用的相位信息為帶噪信號的相位,相位信息保存在哪里呢?我們知道FFT的結果是復數,

    ?(w)?就是相位,具體一些,復數在直角坐標系上表示,

    圖注:關于保持相位不變

    在上面的譜減法流程中,考慮噪聲的高斯分布特性,用噪聲的均值E[N(k)]替換N(k),考慮減完后可能為負值的情況,將值小于0的部分全部截斷為0,這樣處理雖然帶來一定的方便性,但同時引入了新的噪聲,習慣上稱之為“音樂噪聲”。通過FFT譜進行譜減法并不是最普遍的方法,更多情況下是用功率譜代替FFT譜。

    圖注:功率譜的譜減法

    Matlab的譜減法實例

    <pre name="code" class="plain">clc clear all;% 選擇.wav音頻文件 [fname,pname]=uigetfile(...{'*.wav';'*.*'},...'Input wav File'); [x,fs] = audioread(fullfile(pname,fname));x = x(1:8912,1); % 如果是雙聲道,取單通道 N = length(x); % 幀長 max_x = max(x); noise_add = random('norm', 0, 0.1*max_x, [N,1]);% 添加高斯噪聲 y = x + noise_add; noise_estimated = random('norm', 0, 0.1*max_x, [N,1]); fft_y = fft(y); fft_n = fft(noise_estimated); E_noise = sum(abs(fft_n)) / N; mag_y = abs(fft_y); phase_y = angle(fft_y); % 保留相位信息 mag_s = mag_y - E_noise; mag_s(mag_s<0)=0;% 恢復 fft_s = mag_s .* exp(1i.*phase_y); s = ifft(fft_s);subplot(311);plot(x);ylim([-1.5,1.5]);title('原始干凈信號'); subplot(312);plot(y);ylim([-1.5,1.5]);title('加噪信號'); subplot(313);plot(real(s));ylim([-1.5,1.5]);title('譜減法去噪后信號');

    圖注:Matlab譜減法去噪

    上圖取了一段wav文件的腳步聲,從第二張圖到第3張圖,有一些去噪效果,但信號本身也有衰減。譜減法應用范圍還是很有限,在實際應用中,主要限制在環境噪聲的特性上大部分情況不是簡單的高斯特性,而且也很難滿足噪聲加法模型,另外,在譜減之后截斷為0引入的新的音樂噪聲至今沒辦法完全解決。但在高SNR的條件下,使用譜減法進行語音信號的增強確也能達到不錯的效果。

    參考文獻

  • Navneet Upadhyay etc. Spectral Subtractive-Type Algorithms for Enhancement of Noisy Speech: An Integrative Review. 2013.
  • 林琴,張道信,吳小培. 一種基于改進譜減法的語音去噪新方法. 計算機技術與發展, 2007年7月.
  • Marc Karam, Hasan F. Khazaal, Heshmat Aglan, Cliston Cole. Noise Removal in Speech Processing Using Spectral Subtraction. Journal of Signal and Information Processing, 2014, 5, 32-41.
  • 總結

    以上是生活随笔為你收集整理的基于谱减法的声音去噪的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。