python自相关函数提取基音周期_Python语音基础操作--4.2基音周期检测

《语音信号处理试验教程》(梁瑞宇等)的代码主要是Matlab实现的,现在Python比较热门,所以把这个项目大部分内容写成了Python实现,大部分是手动写的。使用CSDN博客查看帮助文件:

Python语音基础操作–2.1语音录制,播放,读取

Python语音基础操作–2.2语音编辑

Python语音基础操作–2.3声强与响度

Python语音基础操作–2.4语音信号生成

Python语音基础操作–3.1语音分帧与加窗

Python语音基础操作–3.2短时时域分析

Python语音基础操作–3.3短时频域分析

Python语音基础操作–3.4倒谱分析与MFCC系数

Python语音基础操作–4.1语音端点检测

Python语音基础操作–4.2基音周期检测

Python语音基础操作–4.3共振峰估计

Python语音基础操作–5.1自适应滤波

Python语音基础操作–5.2谱减法

Python语音基础操作–5.4小波分解

Python语音基础操作–6.1PCM编码

Python语音基础操作–6.2LPC编码

Python语音基础操作–6.3ADPCM编码

Python语音基础操作–7.1帧合并

Python语音基础操作–7.2LPC的语音合成

Python语音基础操作–10.1基于动态时间规整(DTW)的孤立字语音识别试验

Python语音基础操作–10.2隐马尔科夫模型的孤立字识别

Python语音基础操作–11.1矢量量化(VQ)的说话人情感识别

Python语音基础操作–11.2基于GMM的说话人识别模型

Python语音基础操作–12.1基于KNN的情感识别

Python语音基础操作–12.2基于神经网络的情感识别

Python语音基础操作–12.3基于支持向量机SVM的语音情感识别

Python语音基础操作–12.4基于LDA,PCA的语音情感识别

代码可在Github上下载:busyyang/python_sound_open

人在发声时候,根据声带是否振动可以将语音信号分为清音和浊音。

浊音:有声语音,携带语言中大部分能量,在时域上有明显的周期性

清音:类似于白噪声,没明显周期性

在发浊音时候,声门使声带产生张弛震荡式振动,产生准周期激励冲激串。这种声带振动的频率被称为基音频率,相应的周期就是基音周期。基音频率在很大程度上反应了个人的特征。比如,男性的基音频率范围在70-200Hz范围内,女性和小孩的基音频率在200-450Hz之间。

基音周期的估计就是基音检测,基音检测的最终目的是为了找出和声带振动频率完全一致或者尽可能相同的轨迹曲线。目前基音检测可大致分为:非基于时间检测和基于事件检测(事件是指声门闭合)。

非基于事件检测方法有:自相关函数法,平均幅值差函数法,倒谱法。计算量小,但是准确率不一定高。基于事件检测方法是指通过声门闭合的时刻开对基音周期进行估计,而不需要对语音信号进行短时平稳假设,主要有小波变换,Hilbert-Huang变换。由于这是时频域的处理方式,所以在时频域上都有较好的局部特性,检测精度高,但是计算量巨大。

基音检测预处理

由于语音信号的头部与尾部不具有声带震荡的周期性。为了提高检测准确率,基音检测通常要进行端点检测,但是基音检测的端点检测更加严格,这里采用能熵比的方式:

E E F n = 1 + ∣ L E n / H n ∣ EEF_n=\sqrt{1+|LE_n/H_n|}EEFn​=1+∣LEn​/Hn​∣​

但是只用一个T 1 T_1T1​门限做判断,判断能熵比是不是大于T 1 T_1T1​,认为大于T 1 T_1T1​的部分是有效段的候选值。再判断长度是不是大于最小长度L m i n L_{min}Lmin​,一般认为L m i n = 10 L_{min}=10Lmin​=10。

为了减少共振峰的干扰,选择60-500Hz的预处理滤波器。由于语音信号对相位不敏感,可以考虑选择计算量小的椭圆IIR滤波器。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值