自相关函数法基音周期提取(matlab版)
Matlab技术音频特征提取与识别

Matlab技术音频特征提取与识别随着数字音频技术的迅速发展,音频特征提取与识别在音乐、语音和语言处理等领域中起着重要的作用。
Matlab作为一种功能强大的编程语言和工具箱,提供了一系列用于音频特征提取和识别的函数和工具。
本文将通过对Matlab技术在音频特征提取与识别中的应用进行深入探讨。
一、音频特征提取原理1.1 音频信号的表示在音频处理中,我们需要将音频信号转化为数值数据进行处理。
音频信号通常以采样点的形式存储,每个采样点对应一个时间点上的声压值。
而音频信号的数值表示通常以PCM(Pulse Code Modulation)格式存储,即将连续的声压波形离散化为一系列离散的采样点。
1.2 常用音频特征音频特征是从音频信号中提取出来的数值化的数据,用于描述音频信号的某些特性。
常用的音频特征包括时域特征(如均值、方差、时域波形等)、频域特征(如功率谱密度、频谱形心等)和时频域特征(如短时傅里叶变换、小波变换等)等。
1.3 音频特征提取方法提取音频特征的方法有很多,其中常用且有效的方法包括自相关法、傅里叶变换法、小波变换法等。
自相关法是通过计算音频信号与其自身的相关性,来提取出声音的周期性特征;傅里叶变换法则是基于信号的频域特性进行分析,将信号分解为一系列频率成分;小波变换法则是在不同频率范围内,对信号进行分解和重构,从而快速获得信号的时频信息。
二、Matlab在音频特征提取中的应用2.1 音频读取与处理Matlab提供了一系列函数用于音频读取与处理,如audioread函数可读取音频文件,audiowrite函数可写入音频文件。
另外,Matlab还提供了多种音频处理函数,如加噪声、去噪声、时域滤波、频域滤波等,用于对音频信号进行预处理。
2.2 时域特征提取通过Matlab提供的函数,可以计算音频信号的时域特征,如幅度谱、短时平均能量、过零率等。
以短时平均能量为例,可通过将音频信号切分为一段段较短的时间片段,然后计算每段的能量平均值,从而得到音频信号的短时平均能量特征。
《语音信号处理》实验2-基音周期估计

华南理工大学《语音信号处理》实验报告实验名称:基音周期估计姓名:学号:班级:10级电信5班日期:2013年5 月15日1.实验目的本次试验的目的是通过matlab编程,验证课本中基音周期估计的方法,本实验采用的方法是自相关法。
2. 实验原理1、基音周期基音是发浊音时声带震动所引起的周期性,而基音周期是指声带震动频率的倒数。
基音周期是语音信号的重要的参数之一,它描述语音激励源的一个重要特征,基音周期信息在多个领域有着广泛的应用,如语音识别、说话人识别、语音分析与综合以及低码率语音编码,发音系统疾病诊断、听觉残障者的语音指导等。
因为汉语是一种有调语言,基音的变化模式称为声调,它携带着非常重要的具有辨意作用的信息,有区别意义的功能,所以,基音的提取和估计对汉语更是一个十分重要的问题。
由于人的声道的易变性及其声道持征的因人而异,而基音周期的范围又很宽,而同—个人在不同情态下发音的基音周期也不同,加之基音周期还受到单词发音音调的影响,因而基音周期的精确检测实际上是一件比较困难的事情。
基音提取的主要困难反映在:①声门激励信号并不是一个完全周期的序列,在语音的头、尾部并不具有声带振动那样的周期性,有些清音和浊音的过渡帧是很难准确地判断是周期性还是非周期性的。
②声道共振峰有时会严重影响激励信号的谐波结构,所以,从语音信号中直接取出仅和声带振动有关的激励信号的信息并不容易。
③语音信号本身是准周期性的(即音调是有变化的),而且其波形的峰值点或过零点受共振峰的结构、噪声等的影响。
④基音周期变化范围大,从老年男性的50Hz到儿童和女性的450Hz,接近三个倍频程,给基音检测带来了一定的困难。
由于这些困难,所以迄今为止尚未找到一个完善的方法可以对于各类人群(包括男、女、儿童及不向语种)、各类应用领域和各种环境条件情况下都能获得满意的检测结果。
尽管基音检测有许多困难,但因为它的重要性,基音的检测提取一直是一个研究的课题,为此提出了各种各样的基音检测算法,如自相关函数(ACF)法、峰值提取算法(PPA)、平均幅度差函数(AMDF)法、并行处理技术、倒谱法、SIFT、谱图法、小波法等等。
matlab 自相关法

matlab 自相关法Matlab自相关法是一种常用的信号处理方法,在信号处理、统计分析等领域具有广泛的应用。
本文将介绍Matlab自相关法的基本原理、算法实现及其在实际应用中的应用案例。
一、Matlab自相关法的基本原理自相关法是一种基于信号的统计分析方法,用于研究信号的相关性和周期性。
在Matlab中,自相关函数可以通过调用相关函数实现。
自相关函数定义如下:Rxx(tau) = E(x(t)x(t+tau))其中,x(t)为原始信号,tau为时间延迟。
二、Matlab自相关法的算法实现1. 读取信号数据需要将待分析的信号数据读入到Matlab中,可以通过load函数或者importdata函数实现。
2. 计算自相关函数利用Matlab的相关函数,可以方便地计算自相关函数。
具体的调用方法为:Rxx = xcorr(x)其中,x为原始信号数据。
3. 绘制自相关函数图像通过调用plot函数,可以将自相关函数的结果以图像的形式展示出来。
可以设置横轴为时间延迟tau,纵轴为自相关函数的值Rxx。
三、Matlab自相关法的应用案例1. 信号分析自相关法可以用于信号的分析,比如检测信号中的周期性成分。
通过计算自相关函数,可以得到信号的周期性特征。
2. 语音识别在语音识别领域,自相关法被广泛应用。
利用自相关函数可以提取语音信号中的共振峰信息,从而实现语音识别。
3. 图像处理在图像处理中,自相关法可以用于图像的模板匹配。
通过计算图像的自相关函数,可以实现图像的特征匹配和目标检测。
四、总结本文介绍了Matlab自相关法的基本原理、算法实现及其在实际应用中的应用案例。
通过使用Matlab自相关函数,可以方便地进行信号分析、语音识别和图像处理等任务。
希望本文对读者理解和应用Matlab自相关法有所帮助。
基于自相关函数法的语音基音周期的检测

基于自相关函数法的语音基音周期的检测
方臻成
【期刊名称】《科学与财富》
【年(卷),期】2014(000)009
【摘要】语音的基音周期是指人说话时声带振动的周期,它是语音信号的一个重
要参数,广泛运用在语音识别、说话人识别、发音系统诊断、语言指导等多个领域。
因此,准确的提取语音信号的基音周期显得尤为重要。
本文针对基音周期检测,介绍了一种较为简单的方法---自相关函数法。
【总页数】1页(P203-203)
【作者】方臻成
【作者单位】华南理工大学电子与信息学院,广州市,510641
【正文语种】中文
【相关文献】
1.基于改进小波变换的语音基音周期检测 [J], 吴兴铨;周金治
2.一种基于线性预测与自相关函数法的语音基音周期检测新算法 [J], 柏静;韦岗
3.基于LPC的藏语语音基音周期的检测分析 [J], 马英;陈超;贾国庆
4.基于自相关函数的藏语语音基音周期检测 [J], 李积逊;余玲梅
5.基于倒谱分析法的藏语语音基音周期检测 [J], 李积逊;范武英
因版权原因,仅展示原文概要,查看原文内容请购买。
语音中提取基音频率matlab程序

temp2=0.0;
for j=L-d+1:L
temp=temp+s(j-i)*s(j);
temp1=temp1+s(j-i)*s(j-i);
temp2=temp2+s(j)*s(j);
%求到结果后放到rr序列中时,注意到下标为i时实际上已经是错开
%i+20-1,因此pitch.m在调用这个时需要有一句p=19+ind_pitch;
function r=corr(s,d,flag)
epsilon=1.0e-10; % to avoid divided by zero
L=length(s);
j=1;
mi=[1];
for i=1:L-1
if s(i)>s(i+1)
newstate=-1;
end
if s(i)t*max_value
j=j+1;
% t times the global maximum
% max_index=maxx(s,t)
%输入一个序列和一个标量t
%首先求出序列s的最大值max_value
%然后如果序列中的一个点比相邻两个点都大
%而且还大于max_value的t倍
%就把这个点的位置存放在序列mi中
%在序列mi最后再补上序列的最后一个点
mi(j)=i;
end
end
oldstate=newstate;
end
ll=length(mi);
mi(ll+1)=length(s);
%%pitch.m
% This is a function to find the pitch period of a long enough speech
matlab语音信号基频参数提取

[b,a]=ellip(4,0.1,20,wp); % 构造椭圆滤波器
data=filter(b,a,data2);
%plot(data);% 求加窗处理后的数据经过滤波器的响应
[xmax,index]=max(data1);
%画基频图
plot(yy);
[ymax,maxindex] = max(yy);
fmax=fs/(maxindex+30);
%fmaxce2;
fmaxce2=fmax;
%fmax=roundn(fmax,-3);
fmax21=roundn((fmax-5),3);
fmax22=roundn((fmax+5),3);
run(cc,'runtohalt')
%ddatV=read(cc,address(cc,'fIn'),'single',256)
%idattV=read(cc,address(cc,'fOut'),'single',1000)
%plot(abs(idattV))
timewin=floor(0.015*fs);
xwin=data1(index-timewin:index+timewin);
[y,lags]=xcov(xwin);
ylen=length(y);
halflen=(ylen+1)/2 +30;
yy=y(halflen: ylen);
blocksize =length(data1); % 计算窗函数长度
window = hanning(blocksize); % 计算汉宁窗函数(此函数为MATLAB自带)
实验二语音信号的基音周期提取最终报告

实验二语音信号的基音周期提取一、实验目的1、熟练运用MATLAB软件的运用,学习通过MATLAB软件编程来进行语音信号的基因周期提取。
2、掌握语音信号的基音周期提取的方法,实现其中一种基频提取方法。
3、学会用自相关法进行语音信号的基因检测.二、实验仪器设备及软件HP D538、MATLAB三、实验原理浊音信号的自相关函数在基因周期的整数倍位置上出现峰值,而清音的自相关函数没有明显的峰值出现。
因此检测自相关函数是否有峰值就可以判断是清音还是浊音,而峰-峰值之间对应的就是基音周期。
影响从自相关函数中正确提取基音周期的最主要原因是声道响应。
当基音的周期性和共振峰的周期性混在一起时,被检测出来的峰值可能会偏离原来峰值的真实位置。
另外,在某些浊音中,第一共振频率可能会等于或低于基音频率.此时,如果其幅度很高,它就可能在自相关函数中产生一个峰值,而该峰值又可以同基音频率的峰值相比拟。
1、自相关函数对于离散的语音信号x(n),它的自相关函数定义为:R(k)=Σx(n)x(n-k),如果信号x(n))具有周期性,那么它的自相关函数也具有周期性,而且周期与信号x(n)的周期性相同。
自相关函数提供了一种获取周期信号周期的方法。
在周期信号周期的整数倍上,它的自相关函数可以达到最大值,因此可以不考虑起始时间,而从自相关函数的第一个最大值的位置估计出信号的基音周期,这使自相关函数成为信号基音周期估计的一种工具.2、短时自相关函数语音信号是非平稳的信号,所以对信号的处理都使用短时自相关函数。
短时自相关函数是在信号的第N 个样本点附近用短时窗截取一段信号,做自相关计算所得的结果Rm(k)=Σx(n)x(n-k)式中,n表示窗函数是从第n点开始加入。
3、算法通过对自相关基音检测原理的分析,考虑到检测准确度和检测速率2方面的因素,提出了算法实现方案,并对算法进行了Matlab编程实现。
算法包含6个功能模块:带通滤波、取样、分帧、短时能量分析、相关运算、基音检测。
Matlab在基音周期检测教学中的应用研究

Matlab在基音周期检测教学中的应用研究我们需要了解一些基本的概念和原理。
基音周期指的是连续说话过程中声带振动的周期性,它对应于声道系统的特征,可以通过周期估计来获取。
常见的基音周期估计方法有自相关法、互相关法和短时傅立叶变换法等。
这些方法在Matlab中都可以很方便地实现。
对于自相关法,Matlab提供了xcorr函数来计算信号的自相关函数,然后可以通过寻找自相关函数的峰值来估计基音周期。
我们可以使用如下的代码来实现基音周期的自相关估计:```matlab[x, Fs] = audioread('音频文件名.wav');x = x(:,1); % 取一个声道R = xcorr(x); % 计算自相关函数[~,I] = max(R);T = I / Fs; % 基音周期```对于短时傅立叶变换法,Matlab提供了stft函数来计算短时傅立叶变换,然后可以通过寻找频谱的峰值来估计基音周期。
下面是一个使用短时傅立叶变换法进行基音周期估计的示例代码:使用这些基音周期估计方法,可以对语音信号进行周期性分析,进一步研究和应用各种语音处理算法。
我们可以通过基音周期检测来识别说话人的特征,从而实现说话人识别系统;我们也可以根据基音周期检测结果来实现语音转换,实现男声转女声、音乐转唱等效果。
Matlab在基音周期检测教学中具有重要的应用研究价值。
通过Matlab提供的强大的科学计算功能,我们可以方便地实现基音周期估计算法,并进行相关的研究和分析。
基音周期检测的研究不仅对语音信号处理具有重要意义,同时也可以为语音合成、说话人识别、语音转换等应用领域提供支持和指导。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自相关函数法基音周期提取(matlab版)
function nmax=find_maxn(r)
%maxn,为峰值最大的n
zer=find(r==0); %找第一个零点如果存在
jiaocha=0; %找第一近零点
ii=1;
while (jiaocha<=0)
if(r(ii)>0 && r(ii+1)<0 && (ii+1)<length(r))< p=""> jiaocha=ii;
end
ii=ii+1;
if ii==length(r) %没有找到符合要求的点
jiaocha=1;
end
end
if length(zer)>0 %检查是否存在零点
if zer(1)
end
end
r(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,帧长30ms
n2=fix(fs*1)+1;
ii=1;
for ii=1:(length(signal)-n1)/shift %分析次数
if n2<length(signal)< p="">
data=signal(n1:n2);
N=n2-n1+1;
R=zeros(1,N); %基音周期(n)多次分析数组
for k=1:N-1
for jj=1:N-k
R(k)=R(k)+data(jj)*data(jj+k);
end
end
value(ii)=find_maxn(R); %调用基音周期(n)分析函数
n1=n1+shift; %移动帧
n2=n2+shift;
end
end
%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:3
if abs((value(jj-1+kk))-average)>average/4
value(jj-1+kk)=0; %将野点置零,同时数组长度减一
len=len-1;
end
end
end
figure(2)
stem(value);
axis([0 length(value) 0 max(value)])
Tp=sum(value)/len/fs %求基音周期(Tp)
</length(signal)<>
</length(r))<>。