www.gusucode.com > signal 案例源码程序 matlab代码 > signal/EnhanceSpeechWithALowpassFilterExample.m

    %% Enhance Speech with a Lowpass Filter
% Lowpass filters allow you to remove high-frequency noise to improve the
% intelligibility of speech.

% Copyright 2015 The MathWorks, Inc.


%%
% Load a sound file with a person saying MATLAB(R). The signal is sampled
% at 7418 Hz.

load mtlb

% To hear, type soundsc(mtlb,Fs)

%%
% Add noise containing one-fourth of the power contained in the speech.

Npower = 1/4*rms(mtlb)^2;
Noise = sqrt(Npower)*randn(size(mtlb));

Nmtlb = mtlb + Noise;

% To hear, type soundsc(Nmtlb,Fs)

%%
% A filter with the following specifications can remove high-frequency
% noise for a speech signal sampled at 7418 Hz without appreciably
% affecting intelligibility.
%
% * Passband frequency: 1483.6 Hz
% * Passband ripple: 0.02 dB
% * Stopband frequency: 1669.05 Hz
% * Stopband attenuation: 50 dB
%
% Use |designfilt| to design the filter. View its frequency response with
% |freqz|.

Fps = 1483.6;
Fst = 1669.05;

d = designfilt('lowpassfir', ...
               'PassbandFrequency',Fps,'PassbandRipple',0.02, ...
               'StopbandFrequency',Fst,'StopbandAttenuation',50, ...
               'SampleRate',Fs);
freqz(d)

%%
% Filter the signal using |filtfilt| to avoid startup transients.

FNmtlb = filtfilt(d,Nmtlb);

% To hear, type soundsc(FNmtlb,Fs)

%%
% The filter attenuates the high-frequency noise. It also attenuates the
% high-frequency voice components.