语音信号加噪频域分析与滤波处理(MATLAB GUI)

语音信号加噪频域分析与滤波处理(MATLAB GUI)

文章目录

  • 语音信号加噪频域分析与滤波处理(MATLAB GUI)

  1. 读入一段语音信号(或音乐信号)。
  2. 在语音信号中分别加入以下几种噪声:
  3. (a) 白噪声;(b) 单频噪声(正弦干扰);© 多频噪声(多正弦干扰);
  4. 绘出叠加噪声前后的语音信号时域和频坡波形图,播放语音信号,从听觉上进行对比,分析并体会含噪语音信号频域和时域波形的改变。
  5. 根据信号的频谱特性,设计IIR数字滤波器;
  6. 分析得到信号的赖谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;
  7. 回放语音信号。

GUI功能界面如图所示

语音信号加噪频域分析与滤波处理(MATLAB GUI)_第1张图片

部分代码展示

function varargout = task2voice(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
    'gui_Singleton',  gui_Singleton, ...
    'gui_OpeningFcn', @task2voice_OpeningFcn, ...
    'gui_OutputFcn',  @task2voice_OutputFcn, ...
    'gui_LayoutFcn',  [] , ...
    'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
clc;

%% --- Executes just before task2voice is made visible.
function task2voice_OpeningFcn(hObject, ~, handles, varargin)

% Choose default command line output for task2voice
handles.output = hObject;

guidata(hObject, handles);


%% --- Outputs from this function are returned to the command line.
function varargout = task2voice_OutputFcn(hObject, ~, handles)
varargout{1} = handles.output;


%% --- Executes on button press in openfile.
function openfile_Callback(hObject, ~, handles)
[filename, ~] =uigetfile({'*.mp3';'*.wav';'*.*'},'打开音频');
fle=filename;
[s,fs]=audioread(fle);                % 读入数据文件

h = waitbar(0,'等待...');
steps = 100;
for step = 1:steps
    waitbar(step / steps)
end
close(h)

s=s-mean(s);                        % 消除直流分量
s=s/max(abs(s));                    % 幅值归一化
N=length(s);                        % 求出数据长度
time=(0:N-1)/fs;                    % 求出时间刻度

%%打开axes1的句柄 进行axes1的操作
axes(handles.p1);
plot(time,s,'k');      % 画出纯语音信号的波形图
title('纯语音信号'); ylabel('幅值');
y=s;
%画出原始语音做FFT变换后频谱图
Y1=fft(y);
Y=abs(Y1);
axes(handles.p3)
plot(Y,'k');
xlabel('频率');
ylabel('幅值');
title('原始语音做FFT变换后频谱图');

IIR高通滤波结果

语音信号加噪频域分析与滤波处理(MATLAB GUI)_第2张图片

IIR带通滤波结果

语音信号加噪频域分析与滤波处理(MATLAB GUI)_第3张图片

联系方式

email:[email protected]

你可能感兴趣的:(matlab,开发语言,语音识别)