Matlab在基音周期检测教学中的应用研究

合集下载

matlab基音周期频率估计

matlab基音周期频率估计

专业班级 组别成员实验内容:利用至少两种频率估计方法编程求给定信号的频率 1 设计思路方案一:采用谱峰估计法将信号进行傅里叶变换,从频谱中找到幅度最大的谱线,对应频点与频率分辨率乘积即为信号频率。

方案二:采用导数法利用傅里叶变换性质,将原信号进行时域求导,再利用离散Parseval 定理,求出原信号的频率。

具体推导公式如下:时域信号()j t x t e Ω=,求导得()()()()n n x t j x t =Ω 两边同时平方积分,得 ()2222|()||()()||()|n n n x t dt j x t dt x t dt ∞∞∞-∞-∞-∞=Ω=Ω⎰⎰⎰即Ω=运用离散Parseval 定理,得2N πω= 其中,ω为0~2π的一个频点,采样频率为Fs ,由此计算出频率2f Fs ωπ=⨯2 程序代码① 谱峰估计法function f=pufengload signal; %信号自动存于变量SN=128;Fs=4000; %信号采样频率f=zeros(1,7);y=abs(fft(S,N));[m,n]=max(y);f(1)=(n-1)*Fs/N; %无噪声时求出的频率SNR=[20 15 10 5 0 -5];%信噪比for i=1:6S=awgn(S,SNR(i));y=abs(fft(S,N));[m,n]=max(y);f(i+1)=(n-1)*Fs/N;endplot(f);hold;plot(f,'.');axis([0 8 340 355]);xlabel('无噪声--> 20dB --> 15dB --> 10dB --> 5dB --> 0dB --> -5dB');legend('谱峰估计法');②导数法function f=daoshu2Fs=4000;N=128;n=1; %求导次数ndelta=6;SNR=[20 15 10 5 0 -5]; %信噪比load signal;signal=zeros(7,length(S));signal(1,:)=S;for i=1:6signal(i+1,:)=awgn(S,SNR(i)); %加性高斯白噪声endfor j=1:7F=abs(fft(signal(j,:),N));[Fm,k0]=max(F);En1=0;En2=0;for k=k0-delta:k0+delta;En1=En1+(k-1)^(2*n)*F(k)^2;En2=En2+F(k)^2; %主瓣能量endf(j)=Fs/N*(En1/En2)^(1/(2*n));endplot(f,'r');hold;plot(f,'.r');axis([0 8 340 355]);xlabel('无噪声--> 20dB --> 15dB --> 10dB --> 5dB --> 0dB --> -5dB');legend('导数法');3 程序使用说明将谱峰估计法代码保存为pufeng.m文件,将导数法代码保存于daoshu2.m 文件,直接调用程序pufeng或daoshu2,查看运行结果。

MATLAB在语音信号处理辅助教学中的应用

MATLAB在语音信号处理辅助教学中的应用
第 27 卷 第 2 期 2005 年 4 月
电气电子教学学报 JOU RNAL OF EEE
Vol. 27 No. 2 Apr. 2005
MATLAB 在语音信号处理辅助教学中的应用
张 力
( 深圳大学 信息工程学院 , 广东 深圳 518060) a
摘 要 : 本文将 MAT LAB 语言引入语音 信号处理教学中 , 以基音周期估计和端点检 测为例 , 阐述了利 用 MAT LAB 语言编程的 编程思想、 程 序的编写及实现。将语音信号处理过程编程开发成可执行的程序 , 生成可以执行的动画文件。可根据实际的分析需要改变其参数观察变化过 程 , 有助于将语音信号处理中抽象的概念形象化 , 促进学生对其理论的深刻理解。 关键词 : MAT LAB; 语音信号处理 ; 基音周期估计 ; 端点检测 中图分类号 : TN912; G642. 423 文献标识码 : A 文章编号 : 1008- 0686( 2005) 02- 0096- 04
1 根据短时自相关函数进行基音周期 估计
1. 1 基本原理
基音周期是语音最重要的参数之一 , 根据加窗
语音来估计基音周期 , 在语音编码器、 语音识别、 说
话人识别等领域都很重要。由信号自相关函数的性 质可知, 若原始信号是周期的 , 则其自相关函数也是
周期的, 且自相关函数的周期就是原始信号的周期。
Application of MATLAB in the Assistant Teaching of Speech Signal Pr coessing
ZHANG Li
( F aculty of I nf ormat ion Eng ineer ing , Shenzhen University , Shenzhen 518060, Chi na )

《语音信号处理》实验2-基音周期估计

《语音信号处理》实验2-基音周期估计

华南理工大学《语音信号处理》实验报告实验名称:基音周期估计姓名:学号:班级:10级电信5班日期:2013年5 月15日1.实验目的本次试验的目的是通过matlab编程,验证课本中基音周期估计的方法,本实验采用的方法是自相关法。

2. 实验原理1、基音周期基音是发浊音时声带震动所引起的周期性,而基音周期是指声带震动频率的倒数。

基音周期是语音信号的重要的参数之一,它描述语音激励源的一个重要特征,基音周期信息在多个领域有着广泛的应用,如语音识别、说话人识别、语音分析与综合以及低码率语音编码,发音系统疾病诊断、听觉残障者的语音指导等。

因为汉语是一种有调语言,基音的变化模式称为声调,它携带着非常重要的具有辨意作用的信息,有区别意义的功能,所以,基音的提取和估计对汉语更是一个十分重要的问题。

由于人的声道的易变性及其声道持征的因人而异,而基音周期的范围又很宽,而同—个人在不同情态下发音的基音周期也不同,加之基音周期还受到单词发音音调的影响,因而基音周期的精确检测实际上是一件比较困难的事情。

基音提取的主要困难反映在:①声门激励信号并不是一个完全周期的序列,在语音的头、尾部并不具有声带振动那样的周期性,有些清音和浊音的过渡帧是很难准确地判断是周期性还是非周期性的。

②声道共振峰有时会严重影响激励信号的谐波结构,所以,从语音信号中直接取出仅和声带振动有关的激励信号的信息并不容易。

③语音信号本身是准周期性的(即音调是有变化的),而且其波形的峰值点或过零点受共振峰的结构、噪声等的影响。

④基音周期变化范围大,从老年男性的50Hz到儿童和女性的450Hz,接近三个倍频程,给基音检测带来了一定的困难。

由于这些困难,所以迄今为止尚未找到一个完善的方法可以对于各类人群(包括男、女、儿童及不向语种)、各类应用领域和各种环境条件情况下都能获得满意的检测结果。

尽管基音检测有许多困难,但因为它的重要性,基音的检测提取一直是一个研究的课题,为此提出了各种各样的基音检测算法,如自相关函数(ACF)法、峰值提取算法(PPA)、平均幅度差函数(AMDF)法、并行处理技术、倒谱法、SIFT、谱图法、小波法等等。

Matlab在基音周期检测教学中的应用研究

Matlab在基音周期检测教学中的应用研究

Matlab在基音周期检测教学中的应用研究
基音周期检测是语音信号处理领域中的一个基本任务,用于确定连续语音中的基音周期。

在语音合成、自然语言处理、音频信号处理等领域都有广泛的应用。

本文将介绍Matlab在基音周期检测教学中的应用研究。

Matlab提供了许多有用的工具箱和函数,方便进行基音周期检测的教学和研究。

其中最常用的是信号处理工具箱(Signal Processing Toolbox),内置了许多用于语音分析和处理的函数。

Matlab中的autocorr()函数可以计算信号的自相关函数,用于估计基音周期;Matlab还提供了一些用于语音分析和合成的函数,如resample()、filter()等。

这些函数可以帮助学生了解基音周期检测的原理,并进行实际操作和实验。

Matlab可以用于基音周期检测算法的实现和验证。

学生可以使用Matlab编写基音周
期检测算法,并对不同语音信号进行测试和评估。

可以使用Matlab生成不同基音周期和频率特征的语音信号,并添加噪声进行测试。

通过比较算法估计的基音周期与信号的真实基
音周期,可以评估算法的准确性和鲁棒性。

这样的实验可以帮助学生深入理解基音周期检
测算法的原理和性能。

Matlab在基音周期检测教学中的应用研究具有重要意义。

通过Matlab的工具和函数,学生可以方便地学习和研究基音周期检测的原理和方法,实现和评估基音周期检测算法,
并进行可视化分析。

这将有助于提高学生的实践能力和科研水平,促进语音信号处理领域
的教学和研究。

基于MATLAB的语音信号的基音周期检测

基于MATLAB的语音信号的基音周期检测

基于MATLAB的语音信号的基音周期检测摘要:MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。

MATLAB将要性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛的应用于科学计算、控制系统和信息处理等领域的分析、仿真和设计工作。

MATLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。

由于信号与系统课程的许多内容都是基于公式演算,而MATLAB 借助符号数学工具箱提供的符号运算功能,基本满足设计需要。

例如:解微分方程、傅里叶正反变换、拉普拉斯正反变换和Z正反变换等。

MATLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲击响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析和零极点图绘制等内容。

本次课程设计为语音信号的基音周期检测,采集语音信号,对语音信号进行处理,区分清音浊音,并通过对采样值进行滤波、分帧、求短时自相关函数,得到浊音的基音周期。

关键字:清音、浊音、基音周期、基音检测、自相关函数目录1 概述 (1)2 AMDF算法原理及实现 (1)2.1 AMDF算法源程序 (2)3 ACF算法原理及实现 (4)3.1 用短时平均能量进行清/浊音的判断 (4)3.2 自相关函数基音检测的原理 (6)3.3 算法实现及相关程序 (6)3.3.1 带通滤波 (7)3.3.2 取样与分帧 (7)3.3.3 短时能量分析 (8)3.3.4 自相关函数分析 (11)4 总结与心得体会 (13)参考文献 (13)1 概述基音周期检测也称为基频检测(Pitch Detection) ,它的目标是找出和声带振动频率完全一致的基音周期变化轨迹曲线,或者是尽量相吻合的轨迹曲线。

基音周期检测在语音信号的各个处理领域中,如语音分析与合成、有调语音的辨意、低速率语音压缩编码、说话人识别等都是至关重要的,它的准确性及实时性对系统起着非常关键的作用,影响着整个系统的性能。

语音信号基音周期检测的matlab程序

语音信号基音周期检测的matlab程序

function nmax=find_maxn(r)%寻找峰值最大的n值及基音周期%r,自相关序列%maxn,为峰值最大的nzer=find(r==0); %找第一个零点如果存在jiaocha=0; %找第一近零点ii=1;while (jiaocha<=0)if(r(ii)>0 && r(ii+1)<0 && (ii+1)<length(r))jiaocha=ii;endii=ii+1;if ii==length(r) %没有找到符合要求的点jiaocha=1;endendif length(zer)>0 %检查是否存在零点if zer(1)<jiaocha %存在,则和jiaocha比较大小,用于祛除前点的对基音周期的查找带来的影响jiaocha=zer(1);endendr(1:jiaocha)=0; %祛除影响maxn=max(r); %找最大值temp=find(r==maxn);%返回第一个最大值nmax=temp(1);function jiyinzhouqi(filename,shift)%短时自相关分析%filename语音文件*.wav%zhouqi基音周期shift=10;[signal,fs]=wavread('f:/mywork/1.wav');shift=round(fs*shift); %帧移n1=fix(fs*0.97)+1; %分析起点970ms,帧长30msn2=fix(fs*1)+1;ii=1;for ii=1:(length(signal)-n1)/shift %分析次数if n2<length(signal) %防止溢出data=signal(n1:n2);N=n2-n1+1;R=zeros(1,N); %基音周期(n)多次分析数组for k=1:N-1 %求自相关序列for jj=1:N-kR(k)=R(k)+data(jj)*data(jj+k);endendvalue(ii)=find_maxn(R); %调用基音周期(n)分析函数n1=n1+shift; %移动帧n2=n2+shift;endend%figure(3)%plot(R);%axis([0,1000 -300 300])figure(1)stem(value);axis([0 length(value) 0 1000])len =length(value); %基音周期(n)多次分析数组长度aver=mean(value);index=find(abs((value-aver))>aver/5);value(index)=0; %去除大野点的影响len=len-length(index);for jj=1:3:len/3 %中值平滑,滑动窗口宽度3,精度为中值1/4(剔除野点)average=(value(jj)+value(jj+1)+value(jj+2))/3;for kk=1:3if abs((value(jj-1+kk))-average)>average/4value(jj-1+kk)=0; %将野点置零,同时数组长度减一len=len-1;endendendfigure(2)stem(value);axis([0 length(value) 0 max(value)])Tp=sum(value)/len/fs %求基音周期(Tp)。

Matlab基于倒谱和EMD的语音基音周期的提取

Matlab基于倒谱和EMD的语音基音周期的提取

---------------------------------------------------------------范文最新推荐------------------------------------------------------ Matlab基于倒谱和EMD的语音基音周期的提取在语音信号处理中,常用的语音特性是基于Mel频率的倒谱系数(MFCC)以及一些语音信号的固有特征,如基音周期等。

倒谱法可以较好地将语音信号中的激励信号和声道响应分离,并只需要用一些倒谱系数就能较好地描述语言信号的声道响应,在语音信号处理中占有很重要的位臵。

而倒谱解卷积法受加性噪声影响比较大,抗噪声性能不是很好。

针对这一存在问题,利用EMD 方法在理论上可以应用于任何类型的信号的分解,在处理非平稳及非线性数据上, 具有非常明显的优势这一优点。

本文中提出一种基于倒谱和EMD的语音基音周期提取的改进算法。

并在Matlab 中予以实现。

关键字:基音周期倒谱法EMD8664TitlePitch Period Extraction of Speech Signals based1 / 8on Cepstrum and EMDAbstractIn voice signal processing, MFCC and some inherent characteristics of voice signals, such as the frequency of pitch. Cepstrum can be used to separate the excitation signal and channel response, and can represent channel response with only a dozen cepstral coefficients. As a result, it has been a very important role in voice signal processing. While cepstrum deconvolution method is largely influenced by additive noise,and anti-noise performance is not very good.The EMD method can be applied to decompose any type of signals,and thus,having a very distinct advantage in handing non-stationary and non-linear data.For this problem,in this paper,an improved algorithm of pitch period extraction of speech signals based on cepstrum and EMD is proposed. Its implementation in MATLAB are described in detail.Key words:pitch periodCepstrumEMD---------------------------------------------------------------范文最新推荐------------------------------------------------------ 目次1 引言11 引言1.1 背景由于语言是人们在日常生活中的主要交流手段,因此语音信号处理在现代信息社会中占用重要地位。

基音周期提取2-基于线性相关系数的Matlab实现

基音周期提取2-基于线性相关系数的Matlab实现

基⾳周期提取2-基于线性相关系数的Matlab实现基⾳周期提取2-基于线性相关系数的Matlab实现基⾳周期提取结果图1 基⾳提取结果算法说明线性相关系数也称“⽪尔逊积矩相关系数”(Pearson product-moment correlation coefficient)通常⽤γ或ρ表⽰,是⽤来度量两个变量之间的相互关系(线性相关),取值范围在[-1,+1]之间。

γ>0为正相关,γ<0为负相关,γ=0表⽰不相关。

γ的绝对值越⼤,相关程度越⾼。

r=1时为完全正相关;如两者呈负相关则r为负值,⽽r=-1时为完全负相关。

通常|r|⼤于0.75时,认为两个变量有很强的线性相关性。

图2 线性相关系数计算公式式中x,y为两个向量,这⾥理解为两帧语⾳的采样序列。

当x,y为相邻的两帧数据,且帧长等于基⾳周期时,其相关系数为最⼤值(最接近1)。

Matlab应⽤编程Matlab中可⽤corrcoef(x,y)函数计算相关系数。

%inx: 输⼊的语⾳采样数据%Pos: 查找Pos点处的基⾳周期%minpth: 基⾳周期最⼩值对应的采样点数%maxpth: 基⾳周期最⼤值对应的采样点数%plotfig: 为1时绘制计算过程曲线图%%out: 以不同样点数作为期⾳周期的相似系数,其最⼤值点就对应基⾳周期function [out] = findPitchCorrcoef(inx,Pos,minpth,maxpth,plotfig)[line,row] = size(inx);out = 0;if(line<Pos+ceil(maxpth))return;endif(Pos<ceil(maxpth))return;endout=zeros(ceil(maxpth),1);for i=floor(minpth):ceil(maxpth)xa = inx(Pos-i:Pos); %以i为帧长,Pos点为分界,取其前后两帧数据xb = inx(Pos+1:Pos+1+i);if(max(abs(xa))<0.05) %为减⼩计算量,幅度⼩于0.05时认为是噪⾳,不作计算continue;endif(max(abs(xb))<0.05)continue;endcorrcoefxab = corrcoef(xa,xb);out(i)=corrcoefxab(2,1);endif(plotfig == 1) %绘计算过程曲线figure;subplot(2,1,1);plot(inx,'.-');grid on;subplot(2,1,2);plot(out,'*-');grid on;end图3 基⾳计算过程曲线由图3可以看出,在帧长为42点时(8K采样,对应190.5Hz),相邻两帧语⾳具有最⼤相似系数0.9359。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab在基音周期检测教学中的应用研究
首先,Matlab可以通过波形显示功能直接显示被测语音信号的波形。

这为分析语音信号提供了便利。

其次,Matlab可以使用自带的基音周期检测函数(如“pitches.m”等)对语音信号进行基音周期检测。

该函数会自动计算语音中每个周期的长度,这对验证实验结果和进行声学参数分析非常有帮助。

在基音周期检测的实际应用中,Matlab还可以进行预处理工作,如语音信号的预加重和预降噪处理。

预加重的目的是在语音信号的传输过程中抵消高频信号的衰减,因而能够提升信号的质量。

预降噪则是在语音信号中去除噪音干扰,提高基音周期检测的准确性。

Matlab中的信号处理函数可以轻松地完成这些预处理操作。

除了基于自带函数的基音周期检测方法外,Matlab还可以使用更高级的算法进行基音周期检测。

例如,短时傅里叶变换(STFT)算法可以将整个语音信号分割成多个小段,并分别进行频谱分析,以便更精确地计算基音周期。

此外,自适应滤波算法、小波变换算法和神经网络算法等也被广泛应用于基音周期检测中。

这些算法的实现可以基于Matlab的信号处理工具箱等工具完成。

总之,Matlab在基音周期检测教学中具有重要的应用价值。

它不仅能够直接显示语音信号波形,而且能够快速计算基音周期,还支持多种预处理和高级算法。

这将有助于学生更好地理解语音处理算法的原理和应用,提高基音周期检测的准确性和实用性。

相关文档
最新文档