基于归一化互相关函数的语音基音周期检测

本文介绍了基于归一化互相关函数的基音检测方法,通过MATLAB复现鲍长春老师的理论。首先阐述了语音产生的模型和清浊音特性,然后详细讲解了基音检测的原理,包括去均值、低通滤波和数值滤波等预处理步骤。最后,通过计算归一化互相关函数、后处理和清浊判决确定基音周期。
摘要由CSDN通过智能技术生成

本文是对鲍长春老师《基于归一化互相关函数的基音检测》的MATLAB复现。

  • 语音信号的产生模型和清浊音特性
    空气从肺部排除行成气流,气流激励升到从嘴唇或鼻孔或同时从嘴唇和鼻孔辐射出来而产生语音。当气流通过声门时,如果声带的张力刚好使声带张弛震荡,产生一股准周期的气流,这一气流激励声道就产生浊音语音。当气流通过声门时,声道的某处发生了收缩而产生一个狭窄的通道,当空气流到达此处时被迫以高速通过紧缩部分而在附近产生气流湍流,这种湍流通过声道便行成清音语音。
    浊音语音信号为周期冲击序列,其周期为。清音语音信号为白噪声序列,满足均值为0,方差为1的高斯分布。
    语音产生的“源-系统”模型(根据发声器官和语音产生过程):
    在这里插入图片描述
    可实现的数字模型(激励源、声道模型和辐射模型):
    在这里插入图片描述

  • 检测基音周期的基本原理
    基音是指发浊音时声带振动所引起的周期性,基音周期是声带振动频率的倒数。基音检测是语音处理中一个非常重要的问题,找到一个完善的适用于不同的讲话者、不同要求和环境、准确和可靠的基音检测的方法是语音处理领域最具挑战性的任务之一。目前,大多数基音检测方法都采用的是自相关法。
    对于浊音信号的互相关函数,在基音周期的整数倍位置上出现峰值,而清音的自相关函数没有明显的峰值出现;因此检测是否有峰值就可判断是清音或浊音,检测峰值的位置就可以提取基音周期值。

  • 程序框图
    在这里插入图片描述

  • 读入语音信号
    已知语音数据文件是经8KHz采样频率采样的信号。

clear;clc;
fid=fopen('female.dat');
x1=fread(fid,16000,'short');
figure;plot(x1);title('读信号');
grid

采用fread函数以二进制数据读入数据。设定信号长度为16000,精度为16位整数型。语音信号图如下:
在这里插入图片描述

  • 语音信号分帧
    设20ms的语音信号为一帧,计算出帧长为160个样点,并设置帧移为160。用矩形窗作为分帧的窗函数。为方便后续计算,对分帧后的矩阵作转置,计算出帧数。
%分帧
wlen=8000*20*10.^(-3); inc=160;          % 给出帧长和帧移
win=boxcar(wlen);         % 给出矩形窗
N=length(x1);               % 信号长度
time=(0:N-1)/8000;           % 计算出信号的时间刻度
X=enframe(x1,win,inc);     % 分帧
X=X';
fn&#
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值