语音信号的短时自相关序列求解以及xcorr与autocorr问题

【数字语音处理】Part3 语音信号的短时时域分析:短时平均、短时自相关、语音端点检测、基音周期估值 Part3 语音信号的短时时域分析一、帧和加窗的概念二、短时平均能量三、短时平均幅度函数四、短时平均过零率五、短时自相关分析六、基于能量和过零率的语音端点检测七、基音周期估值八、总结 一、帧和加窗的概念 1.短时分析将语音流分为一段一段来处理,每一段称为一“帧”; 2.帧长:1030ms,20ms常见;(帧率)帧移:01/2帧长,帧与帧之间的平滑过度; 3.为了减少语音帧的截断效应,需要加窗处理... 阅读详情

           对于语音来说,短时自相关函数分析是一个重要的方法,能够用来求得浊音的基音周期,也可以用来求得语音识别中的特征参数。它的短时自相关函数为:

         

但是,在计算短时自相关时,窗选语音段为有限长度N,而求和上限为N-1-k,因此当k增加时可用于计算的数据就越来越少了,从而导致k增加时自相关函数的幅度减小。为了解决这个问题,提出了语音修正的短时自相关。修正的短时自相关函数,其定义如下:



     为了用Matlab计算一帧语音的自相关序列,可以采用Matlab中提供的xcorr和autocorr函数,也可以自己按照上面的公式动手编写。

代码如下:

加上frame1帧长为256的信号。

%用修正的自相关函数计算自相关,采用两个不同长度的窗口

N=128; %
K=128;
A=[];
for k=1:K
    sum=0;
    for m=1:N
        sum=sum+frame1(m)*frame1(m+k-1);
    end
    A(k)=sum;
end
for k=1:K
    A1(k)=A(k)/A(1);
end
subplot(4,1,2);
plot(A1);
title('修改的自相关函数求自相关');

该方法计算得出的自相关序列只有128个点,但是如果想得到更多的点呢? 可是用Matlab提供的函数xcorr和autocorr可以计算数量为帧长256个自相关序列,其中xcorr计算出来的为对称序列,需要去掉负延迟(lag)的自相关序列。而autocorr只取了一边,不是对称的。

下面介绍下xcorr与autocorr的具体区别:

1.xcorr

C=xcorr(A,B),求向量A与B的互相关系数。如果A和B都是长度为M的向量,则返回2*M-1个胡相关系数C。
如果A和B的长度不一样,短的向量补0,然后计算互相关。如果A是行向量,C也是行向量。

xcorr(A),如果A是一个向量,则求自相关序列。如果A是一个M*N的矩阵,则求出的结果为2M-1行N^2列的自相关序列。延迟为0
的点位于该序列的中间。


xcorr(A,MaxLag),MaxLag=M-1,M为向量A的长度。求延迟为-MaxLag到MaxLag之间的相关函数。


[c,lags]=xcorr(A,MaxLag,ScaleOpt);返回的lags为延迟下标


ScaleOpt为归一化选项:'biased':自相关序列乘以1/M ;‘unbiased’:自相关序列乘以 1/(M-abs(lags))
 'coeff':归一化序列让延迟为0的自相关序列为1.
‘none’:不归一化


例子: s=[1  2  3];  
r=xcorr(s);
 r =3.0000    8.0000   14.0000    8.0000    3.0000
上面的矩阵,M=3,最后得到5个结果,其中第三个是自己和自己相乘,最后相加的结果,值最大1*1+2*2+3*3=14。而第二个和
第四个分别是间隔正负1的结果也就是1*2+2*3=8,2*1+3*2=8。第1个和第五个分别是间隔正负2,也就是1*3=3,3*1=3。

可见:xcorr默认的MaxLag=M-1=2.ScaleOpt默认为none.
MaxLag=2;
r=xcorr(s,MaxLag,'biased');
r =1.0000    2.6667    4.6667    2.6667    1.0000
相当于乘以1/3


MaxLag=2;
[r,lags]=xcorr(s,MaxLag,'unbiased');
 r=3.0000    4.0000    4.6667    4.0000    3.0000
abs(lags)= 2 1 0 1 2
相当于乘以1/(M-abs(lags)),第一个为1/(3-2)=1; 1/(3-1); 1/(3-0);1/(3-1);1/(3-2)

MaxLag=2;
[r,lags]=xcorr(s,MaxLag,'coeff'); (注该方法相当于修正的自相关函数)
 r=0.2143    0.5714    1.0000    0.5714    0.2143
相当于r=r./r(M)  即3/14=0.2143    8/14=0.5714,  14/14=1.00;

2.autocorr
[acf,lags,bounds] = autocorr(y) 
[acf,lags,bounds] = autocorr(y,numLags,numMA,numSTD)
计算随机时间变量y的自相关函数,当没有输出参数,将画出在置信区间的自相关函数。
 numLags:为自相关函数的延迟,默认为min[20,length(y)-1];该函数忽略了延迟小于0的序列。


下面用修正的自相关函数和xcorr,autocorr来计算一帧语音的自相关序列

代码如下:

clc;
clear all;
[y,fs,nbits]=wavread('1b.wav');
frameSize=256;
overLap=128;
lag=255;
frameMat=buffer2(y,frameSize,overLap);
[ndim,nFrame]=size(frameMat);
frame1=frameMat(:,50);
subplot(4,1,1);
%plot([1:frameSize]/fs,frame1);
%画出该语音帧的时域波形图
plot([1:frameSize],frame1);

%用修正的自相关函数计算自相关,采用两个不同长度的窗口
N=128;
K=128;
A=[];
for k=1:K
    sum=0;
    for m=1:N
        sum=sum+frame1(m)*frame1(m+k-1);
    end
    A(k)=sum;
end
for k=1:K
    A1(k)=A(k)/A(1);
end
subplot(4,1,2);
plot(A1);
title('修改的自相关函数求自相关');
%xcorr求自相关时,没有减去均值,没有归一化,而autocorr求自相关是减去了均值也做了归一化处理
%%%%%xcorr不减去均值求自相关

[c,lags]=xcorr(frame1,lag, 'unbiased'); %unbiased估计不会衰减,默认的最大lag为frameSize-1;
%d=c./c(lag+1);%归一化,除以能量 已经用1/(M-abs(lags))进行了归一化
subplot(4,1,3);
plot(lags(lag+1:end),c(lag+1:end));
%axis([0,256,-1,1]);
title('xcorr求自相关unbiased(没有减去均值)');%该函数实现本身没有减掉均值做相关




[c,lags]=xcorr(frame1,lag, 'biased'); %unbiased估计不会衰减,默认的最大lag为frameSize-1;
%d=c./c(lag+1);%归一化,除以能量 已经用1/(M-abs(lags))进行了归一化
subplot(4,1,4);
plot(lags(lag+1:end),c(lag+1:end));
%axis([0,256,-1,1]);
title('xcorr求自相关biased(没有减去均值)');%该函数实现本身没有减掉均值做相关

[c,lags]=xcorr(frame1,lag, 'coeff'); 
%d=c./c(lag+1);%归一化,除以能量 已经用1/(c(lag+1))进行了归一化
figure;
subplot(4,1,1);
plot(lags(lag+1:end),c(lag+1:end));
%axis([0,256,-1,1]);
title('xcorr求自相关coeff(没有减去均值)');%该函数实现本身没有减掉均值做相关

%%%%%xcorr减去均值求自相关
frame2=frame1-mean(frame1);%减掉均值
[c1,lags1]=xcorr(frame2,lag, 'unbiased'); %unbiased估计不会衰减,默认的最大lag为frameSize-1;
%d1=c1./c1(lag+1);%归一化,除以能量
%figure;
subplot(4,1,2);
plot(lags1(lag+1:end),c1(lag+1:end));
%axis([0,256,-1,1]);
title('xcorr求自相关unbiased(减去均值)');%该函数实现本身没有减掉均值做相关




[c1,lags1]=xcorr(frame2,lag, 'coeff'); %unbiased估计不会衰减,默认的最大lag为frameSize-1;
%d1=c1./c1(lag+1);%归一化,除以能量
%figure;
subplot(4,1,3);
plot(lags1(lag+1:end),c1(lag+1:end));
%axis([0,256,-1,1]);
title('xcorr求自相关coeff(减去均值)');%该函数实现本身没有减掉均值做相关


%%%%用auotcorr求自相关
[c2,lags2,bound]=autocorr(frame1,lag);
subplot(4,1,4);
plot(lags2(1:end),c2(1:end));
%axis([0,256,-1,1]);
title('autocorr求自相关');%该函数减掉了均值在做相关,最后做了归一化

如下图所示:

从上图可以看出autocorr(y)求得的结果相当于xcorr(y-mean(y),MaxLag,'coeff')的结果。



Matlab的autocorr自相关函数 今天看了一下时间序列模型ARIMA模型,在对数据处理的时候,需要对其进行平稳性检验。 对序列的平稳性的检验有两种检验方法:一种是根据时序图和自相关图的特征作出判断的图检验,该方法操作简单,应用广泛,缺点是带有主观性;另一种是构造检验统计量进行的方法,目前最常用的方法是单位根检验,这个本文不作介绍。 对于时序图检验,根据平稳时间序列的均值和方差都为常数的性质,平稳序列的时序图显示该序列值始终在一个 阅读详情

相关推荐

序列的自相关和互相关计算

-- Ref [1] [2] [3] ------------------------------------------------------------------------ 1.自相关和互相关概念 互相关(Cross-correlation) 对于连续函数,有如下定义: 对于离散函数,有如下定义: 在信号处理中,用互相关来衡量两个时间序列 x(t) 和 y(

E-Note 11万+

短时时域分析

短时时域分析 语音信号的时域分析就是分析和提取语音信号的时域参数。进行语音分析时,最先接触到并且也是最直观的是它的时域波形。语音信号本身就是时域信号,因而时域分析是最早使用,也是应用最广泛的一种分析方法,这种方法直接利用语音信号的时域波形。时域分析通常用于最基本的参数分析及应用,如语音的分割、预处理、大分类等。这种分析方法的特点是:①表示语音信号比较直观、物理意义明确。②实现起来比较简单、运算量少...

quyuquan2014的博客 4595

基音提取之短时自相关法

短时自相关函数的基音提取方法 对于语音序列x(n),第i帧语音信号为,则短时自相关函数的定义为 k为时间延迟量。 短时自相关函数的重要性质: 1、若是周期信号,周期为T,则也是周期信号,且周期相同。 2、当...

他山之石,可以攻玉 6285

《数字语音处理》- 1. 基于MATLAB的语音信号时域特征分析

/1

镰刀 & 锤子;热情 & 初心 3989

语音信号分析之短时相关分析

目录 1. 短时相关 2. 短时相关提取流程 3. 短时平均幅差 4.代码实现与效果 1. 短时相关 短时相关分为短时自相关和短时负相关。相关函数用于测定两个信号的时域相似性,语音中主要研究自相关,可以分析语音波形的同步性,周期性等。短时自相关框图如图所示: 2. 短时相关提取流程 首先对语音加窗,这里采用较为简单的直角窗 短时相关的计算公式如下: 其中为最大延迟...

学如不及,犹恐失之 3543

MATLAB语音信号处理系统设计:从模块到仿真全流程解析

语音信号处理是数字信号处理的重要分支,而MATLAB凭借强大的算法开发和可视化能力,成为工程实现与教学科研的常用平台。在系统设计中,采样率设定、分帧加窗、双门限端点检测、滤波器设计及特征提取等基础概念,构成了从信号采集到结果呈现的完整链路。理解这些原理不仅有助于构建高效的分析系统,还能将技术价值延伸到语音识别、降噪通信和声学监测等实际场景。本文围绕基于MATLAB的语音信号处理系统设计,从模块划分到仿真图规范,详细梳理了包括参数配置、代码实现和常见坑点在内的闭环路径,为工程实践与毕业设计提供可复用的参考。

weixin_30768881的博客 209

语音信号处理(2):短时时域分析——平均幅值、短时过零率、短时自相关函数、短时平均幅度差函数

短时时域分析——平均幅值、短时过零率、短时自相关函数、短时平均幅度差函数

荆鹏的博客 7771

android+音乐节拍检测,科学网—音乐节拍跟踪或音乐节拍检测软件,LilyBeats alpha - 石自强的博文...

我们设计并实现了一种用于实时跟踪音乐节拍的软件。该软件可以用于智能灯方案提供商,为其提供灯光随音乐变化的核心解决方案。首先给出软件的下载链接:或者音乐节拍是乐曲中表示固定单位时值和强弱规律的组织形式,亦称拍子。它有两个特性:周期性和连续性。节拍周期性表现为节拍结构,是乐曲中周期性出现的节奏序列。节拍连续性表现为音乐的平均速度,其单位为bpm(beat per minute每分钟音乐节拍的个数)。音...

weixin_39571403的博客 1400

现代数字信号处理笔记

现代数字信号处理 Chapter2:维纳滤波卡尔曼滤波 2.3 信号的自相关序列Rxx=0.8|m|,m=0,±1,±2,⋯Rxx=0.8|m|,m=0,±1,±2,⋯R_{xx}=0.8^{|m|}, m=0,\pm1,\pm2,\cdots。观察信号:x(n)=s(n)+v(n)x(n)=s(n)+v(n)x(n)=s(n)+v(n)。其中v(n)v(n)v(n)为零均值方差为0...

爱穿格子裤的专栏 5460

Label Studio + SAM2分割半自动标注与yolo11训练

Label Studio + SAM2分割半自动标注与yolo11训练

schFallingCloud 1408

在WinXP操作系统上安装Tornado2.2详细教程

使用VxWorks的人都想在自己的电脑中装VxWorks的编译器Tornado,然而Win10操作系统对于Tornado并不友好,根本装不成功。而对于Win7操作系统,之前在实验室一台Win7上装Tornado成功过,并且一直在上面进行vx开发,但是过一段时间在其他Win7上装Tornado时又不能成功,由此说明Tornado对于Win7操作系统对Tornado的兼容也不是很好,所以想要长久使用T...

weixin_43822311的博客 4480

matlab 短时自相关实现

短时自相关

hugang的博客 1334

ensp VRRP+MSTP综合性实验

网络结构拓扑图 实验要求 要求: 1、全网互通,IP地址任意规划,路径最优,无环路。 2、AR1上面有一个loopback口,ip地址为1.1.1.1/24, 要求所有电脑能访问。 3、vlan10通过LSW1访问1.1.1.1,当LSW1出现问题即使 g0/0/1故障亦能通过lsw2访问。 vlan30通过LSW2访问1.1.1.1,当LSW2出现问题即使 g0/0/1故障亦能通过lsw1访问。 4、LSW1为vlan10的主根,vlan30的备根。 LSW2为vlan30的主根,vlan1

qq_45631844的博客 1万+

Matlab中求自相关函数xcorr和autocorr的区别

Matlab中有两个现成的函数可以求自相关:方法1是利用互相关函数xcorr;方法2是自相关函数autocorr。        但是对于向量x,只是进行xcorr(x)和autocorr(x),求的的结果却差别很大。除了xcorr求得的序列是一个中心对称的偶函数序列外,数值的大小也不对应。        看了help,然后自己实验了一下,终于找到了原因。首先,autocorr是对序列减去均值

zhuifengren2012的专栏 6982

Qt界面编程(三)—— 父子关系、对象树、信号和槽(自定义信号和槽、Qt5与Qt4的写法)

Qt框架默认提供的标准信号和槽不足以完成我们日常应用开发的需求,比如说点击某个按钮让另一个按钮的文字改变,这时候标准信号和槽就没有提供这样的函数。但是Qt信号和槽机制提供了允许我们自己设计自己的信号和槽。声明在类的signals域下没有返回值,void类型的函数只有函数声明,没有定义可以有参数,可以重载通过emit关键字来触发信号,形式:emit object->sig(参数);

此心光明事上练的博客 1695

【C语言】字符常量详解

字符常量是C语言中处理字符数据的重要工具。通过单引号括起一个字符,我们可以方便地使用字符常量进行字符判断、字符运算和字符串处理等操作。理解字符常量的表示方法、使用场景和ASCII码对应关系,对于编写高效的C语言程序至关重要。

LuckiBit 5017

matlab中的xcorr和autocorr

Matlab中用于计算自相关函数的指令是xcorr.比如矩阵A=[1 2 3];     xcorr(A)=3.0000 8.0000 14.0000 8.0000 3.0000 自相关函数是信号间隔的函数,间隔有正负间隔,所以n个长度的信号,有2n-1个自相关函数值,分别描述的是不同信号间隔的相似程度。      比如,上面的矩阵,最后得到5个结果,其中第三个是自己和自己相乘,

xiaoding133的专栏【Stay hungry,Stay foolish】 1万+

VMware Horizon 8 2111 部署系列(九)创建即时克隆桌面池

即时克隆桌面池是在 vCenter Server 中使用 vmFork 技术(称为即时克隆 API)从最佳配置映像创建的自动桌面池。即时克隆共享同一个基础映像虚拟机,使用基础映像虚拟机的快照创建的,它使用的存储空间也少于完整虚拟机。 即时克隆始终保持开机状态,并在注销后从当前发布的映像重新创建。...

白昼的技术专栏 4042

Matlab中autocorr和xcorr函数

写论文,用到了自相关(autocorrelation)函数。在网上查了很多资料,对自相关有了一定的了解,但是都解释的不清楚,甚至有些混乱。既然实验采用的是matlab的autocorr函数,那就深入研究一下它是怎么实现的。help autocorr 的描述是英文的,自己硬着头皮翻译了一遍,希望对用到自相关的同学有帮助。(只把需要用到的翻译了,其它的没用到,我也不懂)  AUTOCORR

“点点”专栏 3万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

语音信号的时域处理(二)

通过短时时域处理技术,可获得语音信号的相关特性。今天,介绍如何利用短时自相关函数提取语音信号中的基音。 那么,什么是基音呢?声带每开启和闭合一次的时间称音调周期或基音周期,其倒数称为基音频率,简称基音。基音与个人声带的长短、薄厚、韧性、劲度和发音习惯等有关,在很大程度上反应了个人的特征。此外,基音还随人的性别、年龄而定,老年男性偏低(约50Hz),小孩和青年女性偏高(约450Hz)。基音主要应用于...

Leisure_ksj的博客 2604

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

语音信号处理理论概述

语音信号的分析是语音信号处理的基础和前提,语音通信、语音合成和语音识别这些技术只有在分析出可表示语音信号本质特征的参数,才能利用这些参数进行高效的处理。而且,语音信号分析的准确性和精确性也决定了语音合成的音质好坏。因此,在语音信号处理应用中语音信号分析具有十分重要的地位。语音分析中使用到的是“短时时间分析技术”。之所以不能用处理平稳信号的数字信号处理技术对它进行分析,是因为语音信号的属性和特征是随时间变化而变化的,它是一个非平稳态的过程。

FPGA/MATLAB学习教程/源码/项目合作开发 1756

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

数字信号处理-8-自相关

信号前后序列之间是相关的,为计算序列相关性,我们可以平移信号,然后计算平移之后的信号与原始信号之间的相关性。NumPy 提供了一个函数 correlate 来计算两个函数之间的相关性或者一个函数的自相关。

weixin_40994552的博客 2409

时间序列自相关性

自相关就是数据与自身的相关性,测量一个随机变量与自身变量之间的相关性,因此叫自相关。如果相关性的值为1则变量完全相关,-1则完成负相关,0则不相关。趋势:比如最近滞后的相关性较高且随着滞后的增加而缓慢下降,那么数据中存在一些趋势。自回归模型(AR),线性回归模型,通过前某些时刻值预测未来时刻的值(线性)。周期性:比如某些滞后的相关性通常高于其他数值,则意味着有周期性。时间序列,自相关是时间序列再两个不同时间点上的相关性即滞后。N 是时间序列y的长度,k是时间序列的特定的滞后。系数可以通过最小二乘法求得。

weixin_42192481的博客 801

【语音分析】基于matlab短时自相关基音周期检测+LPC预测增益计算【含Matlab源码 1517期】

短时自相关基音周期检测+LPC预测增益计算 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 5802
上一篇: 【校园招聘】2013百度软件研发笔试题
下一篇: 语音特征参数MFCC计算的详细过程
xiaoding133
博客等级 码龄19年 415粉丝 159原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值