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

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

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

GUI功能界面如图所示

在这里插入图片描述

部分代码展示

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高通滤波结果

在这里插入图片描述

IIR带通滤波结果

在这里插入图片描述

联系方式

email:Jaceshuai@jsw.email.cn
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值