久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1568|回復: 0
打印 上一主題 下一主題
收起左側

7種可選噪聲估計算法的語音濾波_Matlab實現

[復制鏈接]
跳轉到指定樓層
樓主
     噪聲估計對語音濾波/語音增強效果好壞很重要。若噪聲估計過小,濾波后有煩人的殘留噪聲;若噪聲估計過高,濾波結果會導致語音失真。我這實驗,根據不同噪聲環境的說話場合,采用可選的其中一種噪聲估計算法配合譜減濾波,濾波后語音清晰度較好。 7種可選噪聲估計算法是:
1.martin       最小跟蹤算法
2.mcra         最小控制遞歸平均算法
3.mcra2       最小控制遞歸平均變體算法
4.imcra        改進的最小控制遞歸平均算法
5.doblinger   連續譜最小跟蹤算法
6.hirsch        加權頻譜平均值算法
7.conn_freq  連接時間_頻率區域算法
參考書:《語音增強--理論與實踐》 作者:羅艾洲

% -----------------------------------------------
% 我編輯的主程序: ns_specsubs.m
close; clear ; clc;
nbits =16;
alpha=0.9; %(冪指數)過減因子,值小則去噪效果增強但失真度增大
FLOOR=0.002;
load methods.mat;
disp('以下是7種噪聲估計算法:');   
disp('1:martin, 2:mcra, 3:mcra2, 4:imcra,');   
disp('5:doblinger, 6:hirsch, 7:conn_freq');   
while  1
i = input('請選擇噪聲估計算法的編號 1~7: (輸入0 則退出) ') ;
if i == 0
  return;
end   
while (i<0 | i>7 )
  i = input('請選擇噪聲估計算法的編號 1~7: (輸入0 則退出) ') ;
end
method =char(meth(i));

[x0,fs] =audioread('signal.mp3'); % 讀入帶人群噪聲的語音文件
x0 = x0(:,1);            % 取1聲道
x0 = x0-mean(x0);        % 消除直流分量
x0 = x0/max(abs(x0));    % 幅值歸一化
x  = x0 ;

head_time =0.9;     % 裁掉起始段無語音的秒數,依具體情況調整
head = fs*head_time;
x =x(head+1: length(x));

%  初始化變量 ===============
len=floor(40*fs/1000); % 樣本的大小
if rem(len,2)==1
   len=len+1;
end
PERC=50; % 窗口重疊以幀大小的百分比表示
len1=floor(len*PERC/100);
len2=len-len1;
win=hamming(len); % 漢明窗
k=1;
nFFT=2*len;
img=sqrt(-1);
x_old=zeros(len1,1);
Nframes=floor(length(x)/len2)-1;
xfinal=zeros(Nframes*len2,1);

for n=1:Nframes %從第1幀至最末幀,逐幅處理
   insign=win.*x(k:k+len-1);  % Windowing 加窗  
   spec=fft(insign,nFFT);     % 計算一幀的傅立葉變換
   sig=abs(spec);            
   ns_ps=sig.^2;
   %  估計/更新噪聲的psd --------
   if n == 1
         parameters = initialise_parameters(ns_ps,fs,method);   
    else
        parameters = noise_estimation(ns_ps,method,parameters);
   end
   noise_ps = parameters.noise_ps;
   noise_mu=sqrt(noise_ps);  % 噪聲幅值譜
   theta=angle(spec);  %保存每幀的相位信息

   % 計算信噪比:
   SNRseg=10*log10(norm(sig,2)^2/norm(noise_mu,2)^2);

   % 依據過減因子alpha及信噪比選擇下限系數beta:
   if alpha==1.0
      beta=berouti1(SNRseg);
      %beta = 4 ;
   else
     beta=berouti2(SNRseg);
   end

   % 功率譜減去噪:
   sub_speech=sig.^alpha - beta*noise_mu.^alpha;
   diffw = sub_speech-FLOOR*noise_mu.^alpha;

   % 將值朝負無窮方向舍入到最鄰近的整數組件:
   z=find(diffw <0);  
   if~isempty(z)
      sub_speech(z)=FLOOR*noise_mu(z).^alpha;
   end

   % 復數的實部重構確保共軛對稱              
   sub_speech(nFFT/2+2:nFFT)=flipud(sub_speech(2:nFFT/2));  

   % 將全幀fft與相位信息相乘:
   x_phase=(sub_speech.^(1/alpha)).*(cos(theta)+img*(sin(theta)));

   xi=real(ifft(x_phase));  % 逆傅立葉變換     

  % 重疊相加:
  xfinal(k:k+len2-1)=x_old+xi(1:len1);
  x_old=xi(1+len1:len);
  k=k+len2;
end   % EOF for n=1:Nframes

out = xfinal;
N =length(x);       %含噪信號長度
Nout=length(out);   %濾波后信號長度      
if Nout>N
    out=out(1:N);
elseif Nout<N
    %尾部補零,使輸出信號與與原帶噪信號等長
    out=[out; zeros(N-Nout,1)];
end
out=out/max(abs(out));  %輸出信號幅值歸一化
B = 30;                 % debug的輸入參數,B值依具體情況調整
out2 = debug(out,B);    %清除殘留噪聲

% 繪處理前后對比波形圖:
figure('position',[50,50,600,700] );
subplot(4,1,1);
plot(x0(1:length(x0)));
title('原帶噪語音波形');
axis([0 N, -1 1]); grid on;
subplot(4,1,2);
plot(x(1:length(x)));
axis([0 N, -1 1]); grid on;
subplot(4,1,3);
plot(out(1:length(out)));
title([ num2str(method) '估計噪聲算法>譜減降噪后的波形' ]);
axis([0 N, -1 1]); grid on;
subplot(4,1,4);
plot(out2(1:length(out2)));
title('清除殘留噪聲后的波形' );
axis([0 N, -1 1]); grid on;
% sound(x0,fs)     ;%播放原帶噪語音
% sound(out,fs)    ;%播放去噪后的語音
sound(out2,fs)     ;%播放清除殘留噪聲后的語音
end   % EOF while 1
% ----------------------------------------
處理前后的語音波形對比圖:



其它函數及語音文件在壓縮包中: ns_specsub.zip (31.55 KB, 下載次數: 9)





評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久国产精品网站 | 国产精品视频一二三区 | 国产激情一区二区三区 | 中文字幕免费在线 | 亚洲欧美精品在线 | 亚洲成人999 | 亚洲三区视频 | 国产精品久久久亚洲 | 91精品国产色综合久久 | 黄视频国产 | 中文字幕国产 | 欧美视频第二页 | 日韩av美女电影 | 国产精品成人一区二区三区吃奶 | 欧美a级成人淫片免费看 | 亚洲一区二区国产 | 亚洲一区 中文字幕 | 亚洲国产精品一区二区第一页 | 欧美日韩中文在线 | 亚洲人免费视频 | 精品国产一区二区三区性色av | 国产在线精品一区二区三区 | 一区在线视频 | 欧美激情欧美激情在线五月 | 一区在线观看 | av在线一区二区三区 | 亚洲视频一区二区三区 | 国产乱码久久久久久一区二区 | 九久久 | 国产免费一区二区 | 国产成人精品一区二区三区在线观看 | 91精品国产一区二区 | 免费看片国产 | 日韩在线免费视频 | 国产在线一区二区三区 | 亚洲一区二区中文字幕 | 亚洲欧洲一区二区 | 国精久久 | 东京av男人的天堂 | 精品国产18久久久久久二百 | 成年人在线观看 |