【语音去噪】IIR(巴特沃斯、切比雪夫)滤波器语音去噪【含GUI Matlab源码 3716期】

2023-12-26 17:30:08

?博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
??座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

?一、语音处理简介

语音是语言的声学表现,是人类交流信息最自然、最有效、最方便的手段。随着社会文化的进步和科学技术的发展,人类开始进入了信息化时代,用现代手段研究语音处理技术,使人们能更加有效地产生、传输、存储、和获取语音信息,这对于促进社会的发展具有十分重要的意义,因此,语音信号处理正越来越受到人们的关注和广泛的研究。

1 课题背景及意义
语音信号处理是一门比较实用的电子工程的专业课程,语音是人类获取信息的重要来源和利用信息的重要手段。通过语言相互传递信息是人类最重要的基本功能之一。语言是人类特有的功能,它是创造和记载几千年人类文明史的根本手段,没有语言就没有今天的人类文明。语音是语言的声学表现,是相互传递信息的最重要的手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。
语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科,它是一门新兴的学科,同时又是综合性的多学科领域和涉及面很广的交叉学科。

2 国内外研究现状
20世纪60年代中期形成的一系列数字信号处理的理论和算法,如数字滤波器、快速傅立叶变换(FFT)等是语音信号数字处理的理论和技术基础。随着信息科学技术的飞速发展,语音信号处理取得了重大的进展:进入70年代之后,提出了用于语音信号的信息压缩和特征提取的线性预测技术(LPC),并已成为语音信号处理最强有力的工具,广泛应用于语音信号的分析、合成及各个应用领域,以及用于输入语音与参考样本之间时间匹配的动态规划方法;80年代初一种新的基于聚类分析的高效数据压缩技术—矢量量化(VQ)应用于语音信号处理中;而用隐马尔可夫模型(HMM)描述语音信号过程的产生是80年代语音信号处理技术的重大发展,目前HMM已构成了现代语音识别研究的重要基石。近年来人工神经网络(ANN)的研究取得了迅速发展,语音信号处理的各项课题是促进其发展的重要动力之一,同时,它的许多成果也体现在有关语音信号处理的各项技术之中。

3 本课题的研究内容和方法
3.1 研究内容

本论文主要介绍的是的语音信号的简单处理。本论文针对以上问题,运用数字信号学基本原理实现语音信号的处理,在matlab环境下综合运用信号提取,幅频变换以及傅里叶变换、滤波等技术来进行语音信号处理。我所做的工作就是在matlab软件上编写一个处理语音信号的程序,能对语音信号进行采集,并对其进行各种处理,达到简单的语音信号处理的目的。

?二、部分源代码

function varargout = iir_design(varargin)
% IIR_DESIGN M-file for iir_design.fig
% IIR_DESIGN, by itself, creates a new IIR_DESIGN or raises the existing
% singleton*.
%
% H = IIR_DESIGN returns the handle to a new IIR_DESIGN or the handle to
% the existing singleton*.
%
% IIR_DESIGN(‘CALLBACK’,hObject,eventData,handles,…) calls the local
% function named CALLBACK in IIR_DESIGN.M with the given input arguments.
%
% IIR_DESIGN(‘Property’,‘Value’,…) creates a new IIR_DESIGN or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before iir_design_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to iir_design_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE’s Tools menu. Choose “GUI allows only one
% instance to run (singleton)”.
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help iir_design

% Last Modified by GUIDE v2.5 26-Apr-2019 00:14:00

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(‘gui_Name’, mfilename, …
‘gui_Singleton’, gui_Singleton, …
‘gui_OpeningFcn’, @iir_design_OpeningFcn, …
‘gui_OutputFcn’, @iir_design_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
% End initialization code - DO NOT EDIT

% — Executes just before iir_design is made visible.
function iir_design_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to iir_design (see VARARGIN)

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

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes iir_design wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% — Outputs from this function are returned to the command line.
function varargout = iir_design_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;

% — Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

global Fs Rp As
% Fs1=findobj(‘tag’,‘para_Fs’);
% Fs=get(Fs1,‘Value’);
% Rp1=findobj(‘tag’,‘para_Rp’);
% Rp=get(Rp1,‘Value’);
% As1=findobj(‘tag’,‘para_As’);
% As=get(As1,‘Value’);
iir01=findobj(‘tag’,‘filter_choosing’);
iir02=get(iir01,‘Value’);
T=1/Fs;
cla;

switch iir02
case 1
iir03=findobj(‘tag’,‘wp1_edit’);
wp1=pistr2num(get(iir03,‘string’));
iir04=findobj(‘tag’,‘wr1_edit’);
wr1=pi
str2num(get(iir04,‘string’));

    iir05=findobj('tag','method');
    iir06=get(iir05,'Value');

    if iir06==1
        T=1/Fs;
        omega_p=2/T*tan(wp1/2);
        omega_s=2/T*tan(wr1/2);%    ?  ?    ?  ?  
    else
        omega_p=wp1/T;
        omega_s=wr1/T;
    end  
    Omega_P=1;
    Omega_S=omega_s/omega_p;
    
case 2
    iir03=findobj('tag','wp1_edit');
    wp1=pi*str2num(get(iir03,'string'));
    iir04=findobj('tag','wr1_edit');
    wr1=pi*str2num(get(iir04,'string'));
    
    iir05=findobj('tag','method');
    iir06=get(iir05,'Value');
    
    if iir06==1
        T=1/Fs;
        omega_p=2/T*tan(wp1/2);
        omega_s=2/T*tan(wr1/2);
    else
        omega_p=wp1/T;
        omega_s=wr1/T;
    end
    Omega_P=1;
    Omega_S=omega_p/omega_s;
case 3
    iir03=findobj('tag','wp1_edit');
    wp1=pi*str2num(get(iir03,'string'));
    iir04=findobj('tag','wr1_edit');
    wr1=pi*str2num(get(iir04,'string'));
    iir05=findobj('tag','wp2_edit');
    wp2=pi*str2num(get(iir05,'string'));
    iir06=findobj('tag','wr2_edit');
    wr2=pi*str2num(get(iir06,'string'));
    
    if iir06==1
        T=1/Fs;
        omega_p1=2/T*tan(wp1/2);
        omega_s1=2/T*tan(wr1/2);
        omega_p2=2/T*tan(wp2/2);
        omega_s2=2/T*tan(wr2/2);
    else
        omega_p1=wp1/T;
        omega_s1=wr1/T;
        omega_p2=wp2/T;
        omega_s2=wr2/T;
    end
    Bw=omega_p2-omega_p1;
    omega_z=sqrt(omega_p2*omega_p1);
    Omega_P=1;
    Omega_S=(omega_s2^2-omega_z^2)/(omega_s2*Bw);
case 4
    iir03=findobj('tag','wp1_edit');
    wp1=pi*str2num(get(iir03,'string'));
    iir04=findobj('tag','wr1_edit');
    wr1=pi*str2num(get(iir04,'string'));
    iir05=findobj('tag','wp2_edit');
    wp2=pi*str2num(get(iir05,'string'));
    iir06=findobj('tag','wr2_edit');
    wr2=pi*str2num(get(iir06,'string'));
    
    if iir06==1
        T=1/Fs;
        omega_p1=2/T*tan(wp1/2);
        omega_s1=2/T*tan(wr1/2);
        omega_p2=2/T*tan(wp2/2);
        omega_s2=2/T*tan(wr2/2);
    else
        omega_p1=wp1/T;
        omega_s1=wr1/T;
        omega_p2=wp2/T;
        omega_s2=wr2/T;
    end
    Bw=omega_s2-omega_s1;
    omega_z=sqrt(omega_s2*omega_s1);
    Omega_P=1;
    Omega_S=(omega_p2*Bw)/(omega_p2^2-omega_z^2);

end

?三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

?四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.
[3]宋云飞,姜占才,魏中华.基于MATLAB GUI的语音处理界面设计[J].科技信息. 2013,(02)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

文章来源:https://blog.csdn.net/weixin_63266434/article/details/135199578
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。