MATLAB实现语音信号处理
zxcwxkp
积蓄力量
展开
-
MATLAB实现双门限法判别信号
一、原理:1.基本概念:2.第一级判决:3.第二级判决:二、双门限判决函数1.函数调用:x是语音信号序列,帧长为wlen,帧移位inc,NIS是前导无话段的帧数。在语音处理中为了能估算噪声的情况,在语音前部有一段前导无话段,实际中,有时可能不知道前导无语段的帧数,但可以从语音信号的波形图中估算出签到无话段的时长Is,有了IS就能计算出签到无语段的帧数NIS,公式如下所示:2.函数源码:function [voiceseg,vsl,SF,NF]=vad_ezm1(x,wlen,in原创 2020-10-31 15:49:48 · 5504 阅读 · 11 评论 -
MATLAB实现MFCC分析
一、基本概念Mel频率倒谱系数(MFCC)的分析时基于认得听觉机理,依据人的听觉实验结果来分析语音的频谱,期望能获得更好的语音特性。梅尔频率倒谱系数(Mel Frequency Cepstrum Coefficient, MFCC)考虑到了人类的听觉特征,先将线性频谱映射到基于听觉感知的Mel非线性频谱中,然后转换到倒谱上。 在Mel频域内,人对音调的感知度为线性关系。举例来说,如果两段语音的Mel频率相差两倍,则人耳听起来两者的音调也相差两倍。 我们将频谱通过一组Mel滤波器就得到Mel频谱。公式表原创 2020-10-29 21:04:37 · 2332 阅读 · 0 评论 -
MATLAB实现倒谱分析
一、激励信号和声道冲激响应短时处理中语音信号可以被认为是由线性时不变系统的输出,即由语音信号是由声门的激励信号和声道冲激响应的卷积而形成的。往往需要从语音信号中求解声门激励和声道响应。(比如为了求得语音信号的共振峰,就要知道声道传递函数,因为共振峰就是声道传递函数的复共轭极点的频率,又比如为了判断语音信号是清音还是浊音,以及浊音的基音频率,就应该知道声门激励序列的频率)。二、同态处理的基本原理同态系统可以分解为三个子系统:第一个子系统完成将卷积转换为加性信号的运算:第二个子系统对加性信号进行线原创 2020-10-29 11:07:44 · 7940 阅读 · 2 评论 -
MATLAB实现语谱图
一、语谱图含义语谱图将信号强弱用灰度来标志,如果某个滤波器输出的信号强,相应的颜色将加深,水平方向是时间轴,垂直方向是频率轴。语谱图也被称为可视语音。二、范例1.预备知识语音信号实现短时傅里叶变换2.求语谱图源码:clear all; clc; close all;[x,Fs]=audioread('bluesky3.wav'); %读入数据文件wlen=800; inc=80; win=hanning(wlen);% 设置帧长,帧移和窗函数N=length(x); time=(0:N原创 2020-10-28 14:53:03 · 6492 阅读 · 3 评论 -
MATLAB实现语音信号短时傅里叶变换
一、函数调用二、函数源码function d=stftms(x,win,nfft,inc)if length(win)==1 % 判断有否设置窗函数 wlen=win; % 否,设帧长 win=hanning(wlen); % 设置窗函数else wlen=length(win); % 设帧长endx=x(:); win=win(:); % 把x和win都变为列数组s = length(x);原创 2020-10-28 11:01:29 · 4164 阅读 · 0 评论 -
MATLAB计算信号短时平均过零率
一、原理:短时平均过零率表示一帧语音中语音信号波形穿过横轴的次数二、计算过零率代码clear all; clc; close all;filedir=[]; % 设置路径filename='bluesky3.wav'; % 设置文件名fle=[filedir filename]; % 构成完整的路径和文件名[xx,Fs]=audioread(fle); % 读入数据文件x=detrend原创 2020-10-27 16:12:42 · 4846 阅读 · 4 评论 -
MATLAB计算语音信号的短时能量
一、计算原理二、范例1.预备知识(1)语音信号的读取(2)语音信号的分帧2.短时能量计算代码clear all; clc; close all;filedir=[]; % 设置路径filename='bluesky3.wav'; % 设置文件名fle=[filedir filename]; % 构成完整的路径和文件名[x,Fs]=audioread(fle); % 读入数据文件wlen=200; inc=80; % 给原创 2020-10-27 11:05:46 · 8681 阅读 · 4 评论 -
MATLAB实现语音信号分帧
一、分帧原理为了分析读入数据,通常进行分帧处理。在分帧中,往往设置在相邻两帧之间有一部分重叠,如下图所示:设语音文件的数据存放在y中,y的长度为N,采样频率为fs,取每帧长为wlen,后一帧对前一帧的位移量用inc表示,相邻两帧之间的重叠部分overlap=wlen-inc。二、分帧函数调用f=enframe(x,win,inc)x是数据,win是窗函数,inc是后一帧对前一帧的位移量三、enframe函数源码function f=enframe(x,win,inc)nx=length(原创 2020-10-27 10:39:05 · 11242 阅读 · 0 评论 -
MATLAB实现语音信号的读取
一、函数调用[y,Fs] = audioread(filename)[y,Fs] = audioread(filename,samples)[y,Fs] = audioread(___,dataType)二、函数使用1.示例1[y,Fs] = audioread(filename) 从名为 filename 的文件中读取数据,并返回样本数据 y 以及该数据的采样率 Fs。2.示例2[y,Fs] = audioread(filename,samples) 读取文件中所选范围的音频样本,其中原创 2020-10-26 20:51:58 · 8150 阅读 · 0 评论