• 大小: 70KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-05
  • 语言: Matlab
  • 标签: IMCRA  

资源简介

可用于音频信号处理的学习,兼容Octave!

资源截图

代码片段和文件信息

%*****参考文献:EMD-based Filtering (EMDF) of Low-Frequency Noise for Speech
clear all;
close all;
clc;
fs=16000;
frame_Len=512;
Shift_Len=128;
fid = fopen (‘SI923.WAV‘ ‘r‘);% Open file for reading 
if fid ==- 1
errordlg ( ‘Specify _valid file name!‘ ‘ERROR: Invalid file name‘); 
else 
fseek (fid 1024 -1);
Input_data0 = fread (fid inf ‘int16‘);
fclose (fid); 
end; 
 
 figure;
 plot(Input_data0‘y‘);
 title(‘input Data  ‘) ;

Input_data=Input_data0-mean(Input_data0);
inputnoise=100*(rand(length(Input_data0)1)-0.5);
Input_data=Input_data+ inputnoise;

% figure;
% plot(inputnoise.^2);
figure;
plot(Input_data);
title(‘Data of Adding Noise‘) ;
% d0=round(Input_data);
% d_t=int16(d0);
% wavplay(d_tfs);
% wavwrite(d_tfs16‘includenoise.wav‘);

%********************传统信噪比 ***************
%  SNR=10*log10((sum(Input_data0.^2)/sum(Input_data.^2)))
%***********************************************

Input_data=Input_data‘;
DataLen=length(Input_data);                %输入信号长度
frame_Num=fix(DataLen/Shift_Len);                %计算需要处理的帧数  
Win_hm=hamming(frame_Len)‘;            %汉明窗


%*******************P_speech_absence****************************
%*********参考文献:Noise Spectrum Estimation in Adverse Environments:Improved Minima
%Controlled Recursive Averaging********
 %定义部分
%  guji_noise=[];
Noise_power(1:frame_Len)=0;  % 噪声估计
Sf_first=zeros(1frame_Len);        % Sf
Smin_first=zeros(1frame_Len);           %第一次更新最小功率频谱值Smin
S_first=zeros(1frame_Len);              %第一次回归平滑 S
Smin_second=zeros(1frame_Len);     %第二次更新最小功率谱  Smin^
S_second=zeros(1frame_Len);            %第二次回归平滑 S^
Sf_second=zeros(1frame_Len);      %Sf^
I=zeros(1frame_Len);                  %初步估计语音存在概率  I(kl)
D_window_first=1e20*ones(120 frame_Len);   % 求S最小值搜索窗 D
D_window_second=1e20*ones(120 frame_Len);% 求S^最小值搜索窗 D

 frame_Data(1:frame_Len)=Input_data(1:frame_Len).*Win_hm;  %第一帧
 Fre_Data(1:frame_Len)=fft(frame_Dataframe_Len);  %变换到频域
 Data_Amp=abs(Fre_Data);
 
 Noise_power=Data_Amp.^2;   %初始化Noise_power
 %******************用前10帧估算噪声,计算输入分段信噪比*************
 Noise_power0=0;
 SEGSNR_in=0;
 SEGSNR_out=0;
 for j=1:5
  frame_Data(1:frame_Len)=Input_data((j-1)*Shift_Len+1:(j-1)*Shift_Len+frame_Len);
 Noise_power0=Noise_power0+ sum(frame_Data.^2);
 end 
 Noise_power0= Noise_power0/5; 
 %******************************************************************
%  guji_noise=[guji_noiseNoise_power];
%  figure;
%  plot( Noise_power);
 Sf_first=Data_Amp(1)^2;      %计算Sf(k0)
  for k=2:frame_Len-1
     Sf_first(k)=0.25*Data_Amp(k-1)^2+0.5*Data_Amp(k)^2+0.25*Data_Amp(k+1)^2; 
  end
  Sf_first(frame_Len)=Data_Amp(frame_Len)^2;

%初始化
Smin_first=Sf_first;        % Smin(k0) = Sf(k0)
S_first=Sf_first;             % S(k0)=Sf(k0)
Smin_second=Sf_first;           %Smin(k0)^=Sf(k0)
S_second=Sf_first;            %S(k0)^=Sf(k0)
Sf_second=Sf_first;          %Sf(k0)^=Sf(k0)
D_window_first(1:)=Sf_first; %搜索窗内第一个值 为Sf(k

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-09-26 22:09  IMCRA\
     文件        8394  2013-08-26 11:36  IMCRA\IMCRA.m
     文件       95848  2013-01-15 11:23  IMCRA\SI923.WAV

评论

共有 条评论