一、语音处理简介

1 语音信号的特点
通过对大量语音信号的观察和分析发现,语音信号主要有下面两个特点:
①在频域内,语音信号的频谱分量主要集中在300~3400Hz的范围内。利用这个特点,可以用一个防混迭的带通滤波器将此范围内的语音信号频率分量取出,然后按8kHz的采样率对语音信号进行采样,就可以得到离散的语音信号。
②在时域内,语音信号具有“短时性”的特点,即在总体上,语音信号的特征是随着时间而变化的,但在一段较短的时间间隔内,语音信号保持平稳。在浊音段表现出周期信号的特征,在清音段表现出随机噪声的特征。

2 语音信号的采集
在将语音信号进行数字化前,必须先进行防混叠预滤波,预滤波的目的有两个:①抑制输入信导各领域分量中频率超出fs/2的所有分量(fs为采样频率),以防止混叠干扰。②抑制50Hz的电源工频干扰。这样,预滤波器必须是一个带通滤波器,设其上、下截止颜率分别是fH和fL,则对于绝人多数语音编译码器,fH=3400Hz、fL=60~100Hz、采样率为fs=8kHz;而对丁语音识别而言,当用于电话用户时,指标与语音编译码器相同。当使用要求较高或很高的场合时fH=4500Hz或8000Hz、fL=60Hz、fs=10kHz或20kHz。
为了将原始模拟语音信号变为数字信号,必须经过采样和量化两个步骤,从而得到时间和幅度上均为离散的数字语音信号。采样也称抽样,是信号在时间上的离散化,即按照一定时间间隔△t在模拟信号x(t)上逐点采取其瞬时值。采样时必须要注意满足奈奎斯特定理,即采样频率fs必须以高于受测信号的最高频率两倍以上的速度进行取样,才能正确地重建波它是通过采样脉冲和模拟信号相乘来实现的。
在采样的过程中应注意采样间隔的选择和信号混淆:对模拟信号采样首先要确定采样间隔。如何合理选择△t涉及到许多需要考虑的技术因素。一般而言,采样频率越高,采样点数就越密,所得离散信号就越逼近于原信号。但过高的采样频率并不可取,对固定长度(T)的信号,采集到过大的数据量(N=T/△t),给计算机增加不必要的计算工作量和存储空间;若数据量(N)限定,则采样时间过短,会导致一些数据信息被排斥在外。采样频率过低,采样点间隔过远,则离散信号不足以反映原有信号波形特征,无法使信号复原,造成信号混淆。根据采样定理,当采样频率大于信号的两倍带宽时,采样过程不会丢失信息,利用理想滤波器可从采样信号中不失真地重构原始信号波形。量化是对幅值进行离散化,即将振动幅值用二进制量化电平来表示。量化电平按级数变化,实际的振动值是连续的物理量。具体振值用舍入法归到靠近的量化电平上。
语音信号经过预滤波和采样后,由A/D变换器变换为二址制数字码。这种防混叠滤波通常与模数转换器做在一个集成块内,因此目前来说,语音信号的数字化的质量还是有保证的。
采集到语音信号之后,需要对语音信号进行分析,如语音信号的时域分析、频谱分析、语谱图分析以及加噪滤波等处理。

3 语音信号分析技术
语音信号分析是语音信号处理的前提和基础,只有分析出可表示语音信号本质特征的参数,才有可能利用这些参数进行高效的语音通信、语音合成和语音识别等处理[8]。而且,语音合成的音质好坏,语音识别率的高低,也都取决于对语音信号分桥的准确性和精确性。因此语音信号分析在语音信号处理应用中具有举足轻重的地位。
贯穿于语音分析全过程的是“短时分析技术”。因为,语音信号从整体来看其特性及表征其本质特征的参数均是随时间而变化的,所以它是一个非乎稳态过程,不能用处理乎稳信号的数字信号处理技术对其进行分析处理。但是,由于不同的语音是由人的口腔肌肉运动构成声道某种形状而产生的响应,而这种口腔肌肉运动相对于语音频率来说是非常缓慢的,所以从另一方面看,虽然语音倍号具有时变特性,但是在一个短时间范围内(一般认为在10~30ms的短时间内),其特性基本保持不变即相对稳定,因面可以将其看作是一个准稳态过程,即语音信号具有短时平稳性。所以任何语音信号的分析和处理必须建立在“短时”的基础上.即进行“短时分析”,将语音信号分为一段一段来分析其特征参数,其中每一段称为一“帧”,帧长一般取为10~30ms。这样,对于整体的语音信号来讲,分析出的是由每一帧特征参数组成的特征参数时间序列。
根据所分析出的参数的性质的不同,可将语音信号分析分为时域分析、频域分析、倒领域分析等;时域分析方法具有简单、计算量小、物理意义明确等优点,但由于语音信号最重要的感知特性反映在功率谱中,而相位变化只起着很小的作用,所以相对于时域分析来说频域分析更为重要。

4 语音信号的时域分析
语音信号的时域分析就是分析和提取语音信号的时域参数。进行语音分析时,最先接触到并且也是最直观的是它的时域波形。语音信号本身就是时域信号,因而时域分析是最早使用,也是应用最广泛的一种分析方法,这种方法直接利用语音信号的时域波形。时域分析通常用于最基本的参数分析及应用,如语音的分割、预处理、大分类等。这种分析方法的特点是:①表示语音信号比较直观、物理意义明确。②实现起来比较简单、运算且少。③可以得到语音的一些重要的参数。④只使用示波器等通用设备,使用较为简单等。
语音信号的时域参数有短时能量、短时过零率、短时白相关函数和短时平均幅度差函数等,这是语音信号的一组最基本的短时参数,在各种语音信号数字处理技术中都要应用[6]。在计算这些参数时使用的一般是方窗或汉明窗。

5 语音信号的频域分析
语音信号的频域分析就是分析语音信号的频域持征。从广义上讲,语音信号的频域分析包括语音信号的频谱、功率谱、倒频谱、频谱包络分析等,而常用的频域分析方法有带通滤波器组法、傅里叶变换法、线件预测法等几种。

二、部分源代码

function varargout = exp1_gui(varargin)
% EXP1_GUI MATLAB code for exp1_gui_timer.fig
%      EXP1_GUI, by itself, creates a new EXP1_GUI or raises the existing
%      singleton*.
%
%      H = EXP1_GUI returns the handle to a new EXP1_GUI or the handle to
%      the existing singleton*.
%
%      EXP1_GUI('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in EXP1_GUI.M with the given input arguments.
%
%      EXP1_GUI('Property','Value',...) creates a new EXP1_GUI or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before exp1_gui_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to exp1_gui_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 exp1_gui% Last Modified by GUIDE v2.5 12-Jan-2022 11:05:09% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...'gui_Singleton',  gui_Singleton, ...'gui_OpeningFcn', @exp1_gui_OpeningFcn, ...'gui_OutputFcn',  @exp1_gui_OutputFcn, ...'gui_LayoutFcn',  [] , ...'gui_Callback',   []);
if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});
endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
elsegui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT% --- Executes just before exp1_gui is made visible.
function exp1_gui_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 exp1_gui (see VARARGIN)% Choose default command line output for exp1_gui
clc;
global PAUSE_FLAG
global STOP_FLAG
global INDEX
handles.output = hObject;
% Update handles structure
handles.file = 0;
handles.path = 0;
handles.show_flag = 1;%默认显示普通波形图
handles.channel_num = 2;%默认声道数为2
handles.varied = 1:2;
PAUSE_FLAG = 0;
STOP_FLAG = 0;
INDEX = 0;
guidata(hObject, handles);
%1个图像显示的情况
set(handles.axes_graph1,'visible','on');
set(handles.axes_graph2,'visible','on');
% set(handles.axes_graph1,'position',[5.5 11 92 30]);
set(handles.popupmenu_waveform,'Enable','inactive');
% UIWAIT makes exp1_gui wait for user response (see UIRESUME)
% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.
function varargout = exp1_gui_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;% --------------------------------------------------------------------
function function1_Callback(hObject, eventdata, handles)
% hObject    handle to function1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% --------------------------------------------------------------------
%选择文件选项按钮
function choose_file_Callback(hObject, eventdata, handles)
% hObject    handle to choose_file (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)[handles.file,handles.path] = uigetfile('/Users/jianghongqi/Desktop/第六学期/语音信号处理/语音信号处理实验/实验一/语音素材/speech.wav','*.wav');if handles.file == 0returnend[handles.y,handles.fs,handles.player]=process_data(handles);guidata(hObject, handles);% --------------------------------------------------------------------
%退出选项按钮
function exit_option_Callback(hObject, eventdata, handles)
% hObject    handle to exit_option (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)close% --- Executes on slider movement.
%进度条功能
function slider_progress_bar_Callback(hObject, eventdata, handles)
% hObject    handle to slider_progress_bar (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider% --- Executes during object creation, after setting all properties.
function slider_progress_bar_CreateFcn(hObject, eventdata, handles)
% hObject    handle to slider_progress_bar (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9 .9 .9]);
end% --- Executes on selection change in popupmenu_channel_choose.
%选择声道下拉框
function popupmenu_channel_choose_Callback(hObject, eventdata, handles)
% hObject    handle to popupmenu_channel_choose (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu_channel_choose contents as cell array
%        contents{get(hObject,'Value')} returns selected item from popupmenu_channel_choose%设置图%set(handles.axes_graph1,'position',[5.5 11 92 30]);%取值为当前的声道数index = get(hObject,'Value');index2 = handles.show_flag;if index2 == 2 && index ~= 1msgbox('李萨如图形只支持双声道','提示');set(hObject,'Value',1);returnendif handles.total_channel_num == 2 if index == 1handles.channel_num = 2;%双声道播放handles.varied = 1:handles.channel_num;elsehandles.channel_num = 1;%选择一个声道播放handles.varied = index-1;endelsehandles.channel_num = 1;handles.varied = 1;endhandles.player = audioplayer(handles.y(:,handles.varied),handles.fs);guidata(hObject, handles);%选择波形图if index2 == 1%清除图形的显示clean_graph(handles);play_with_time1(handles,1:length(handles.y),handles.y)%这个函数里会读取声道数else%清除图形的显示clean_graph(handles);play_with_time3(handles,handles.y);end% --- Executes during object creation, after setting all properties.
function popupmenu_channel_choose_CreateFcn(hObject, eventdata, handles)
% hObject    handle to popupmenu_channel_choose (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called% Hint: popupmenu controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end% --- Executes on selection change in popupmenu_waveform.
%选择波形下拉框
function popupmenu_waveform_Callback(hObject, eventdata, handles)
% hObject    handle to popupmenu_waveform (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu_waveform contents as cell array
%        contents{get(hObject,'Value')} returns selected item from popupmenu_waveform%选择波形部分下拉框index = get(hObject,'value');%选择波形图,且只有在上次为李萨如图形的情况下更新显示if index == 1 && handles.show_flag == 2%显示标志位设置为1表示显示波形图handles.show_flag = 1;%清除图像显示,为下一次显示做准备clean_graph(handles);%静态显示波形图play_with_time1(handles,1:length(handles.y),handles.y)%选择李萨图图形,且只有在上次为李萨如图形的情况下更新显示elseif index == 2 && handles.show_flag == 1if size(handles.y,2)<2msgbox('该文件为单声道文件,无法显示李萨如图形','提示')set(handles.popupmenu_waveform,'value',1);handles.show_flag = 1;returnend%设置声道数为2set(handles.popupmenu_channel_choose,'value',1);handles.channel_num = 2;%显示标志位设置为2表示显示李萨图图形handles.show_flag = 2;%清除图像显示,为下一次显示做准备clean_graph(handles);%静态显示李萨如图形play_with_time3(handles,handles.y)end

三、运行结果

四、matlab版本及参考文献

1 matlab版本
2014a

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

【语音处理】基于matlab GUI音频信号提取分析【含Matlab源码 1738期】相关推荐

  1. 【语音处理】音频信号提取分析含Matlab源码

    1 简介 MATLAB是十分强大的用于数据分析和处理的工程实用软件,利用其来进行语音信号的分析,处理和可视化十分便捷.文中介绍了在 MATLAB环境中如何驱动声卡采集语音信号和语音信号采集后的文档处理 ...

  2. 【光学】基于matlab GUI杨氏双缝干涉【含Matlab源码 001期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[光学]基于matlab GUI杨氏双缝干涉[含Matlab源码 001期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费 ...

  3. 【人脸识别】基于matlab GUI人数统计【含Matlab源码 2121期】

    ⛄一.人数统计简介(附课程作业报告) 1 课题背景 本课题为基于matlab的人数统计系统.近年来,很多行业对人流信息有极大的需求,如汽车公交站,地铁站台,商场出入口等.通过人数统计系统可以方便.可靠 ...

  4. 基于SSM的仓库管理系统(含完整源码+论文)

    后端框架:SSM 数据库:MySQL 开发工具:IDEA/Eclipse 系统介绍:本系统是基于SSM框架进行设计,MySQL作为底层数据库,前端采用bootstrap 模块大致介绍:包括库存管理.出 ...

  5. [附源码]java+ssm计算机毕业设计基于web的学生成绩分析系统d7l60(源码+程序+数据库+部署)

    项目运行 项目含有源码(见文末).文档.程序.数据库.配套开发软件.软件安装教程 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ E ...

  6. 【条形码识别】基于matlab GUI二维条形码识别【含Matlab源码 607期】

    ⛄一.二维条形码识别简介 采用数字图像处理技术对二维条码进行识别, 是二维条形码识别中较常用的方法, 它在处理污损的条形码方面有光电识别方法无法比拟的优势.另外图像式识别方法对识别角度的要求没有光电识 ...

  7. 【心电信号】基于matlab GUI心电信号预处理【含Matlab源码 938期】

    ⛄一.心电信号预处理方法简介 理论知识参考文献:心电信号预处理方法研究 ⛄二.部分源代码 function varargout = kaishi(varargin) gui_Singleton = 1 ...

  8. 前、中、后缀表达式概述及转换+栈的计算器原理及代码分析(含完整源码)

    目录: 1.前中后缀表达式的概述 2.中序表达式转前后缀表达式 3.运用栈的后缀表达式实现计算器原理步骤 4.代码实现和分析 1.前中后缀表达式的概述及相互转换 前缀表达式:运算符位于操作数之前. 中 ...

  9. 【细节拉满】Hadoop课程设计项目,使用idea编写基于MapReduce的学生成绩分析系统(附带源码、项目文件下载地址)

    目录 1 数据源(学生成绩.csv) 2 hadoop平台上传数据源 3 idea代码 3.1 工程框架 3.2 导入依赖 3.3 系统主入口(menu) 3.4 六个mapreduce 3.4.1  ...

  10. matlab svm 语音识别,【情感识别】基于matlab支持向量机(SVM)的语音情感识别【含Matlab源码 543期】...

    一.简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数 ...

最新文章

  1. ICCV 2021 | 最新开源!多视角几何和注意力机制实现新视角合成
  2. php不能显示验证码
  3. linux cgi命令,Linux之cgi实现系统主机监控
  4. 加速编程效率,你不知道的IDEA功能设置
  5. SQL优化-第二章-从解释计划层面让SQL飞
  6. eclipse deploy path 修改
  7. 常用sql server 语句
  8. 用QT制作一个抽奖器的总结
  9. 步进电机加减速——梯形算法
  10. HC-05嵌入式蓝牙串口通讯
  11. Wind River workbench小结
  12. 初学Java-----简单的猜数字小游戏
  13. 【CodeQL从入门到精通系列】01-CodeQL简介
  14. 一个25分钟的定时器(番茄时钟)
  15. Linux下安装tuned以使用tuned-adm命令优化Linux系统性能
  16. 主成分分析碎石图_R: 主成分分析 ~ PCA(Principal Component Analysis)
  17. 差分相干解调 matlab,2DPSK差分相干解调器Simulink仿真
  18. 临港新片区专精特新中小企业认定政策解读
  19. 计算机视觉的理论(北大 秦其明)
  20. 学习Linux命令(47)

热门文章

  1. 容斥原理模板(二进制表示)
  2. Java基础入门(八)之面向对象二
  3. BZOJ.2595.[WC2008]游览计划(DP 斯坦纳树)
  4. 【JavaScript创建对象】
  5. 用npm发布一个npm包
  6. DOTA版设计模式——责任链
  7. 深度学习:Image Object Detection方法
  8. 超强PCB布线设计经验
  9. AutoCAD打印设置
  10. 节俭,是一种了不起的能力