基于MATLAB基音检测分析

基于MATLAB基音检测分析

摘要:基音检测作为语音信号处理的重要手段,被广泛地应用于语音的合成、编码及识别等一系列语音信号处理技术问题。基音检测的准确性对于要求极高的语音识别、合成、分析、压缩编码等等都有重要的意义。该文用自相关函数法、平均幅度差函数法和倒谱法这三种常用的基音检测方法,运用MATLAB编程实现,对语音信号的基音周期轨迹图进行了比较分析,并由此得出和倒谱法进行语音信号基音的检测更为精确。

关键词:基音检测;MATLAB;自相关函数法;平均幅度差函数法;倒谱法

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)18-4293-03

1 概述

语音是人类相互之间进行信息交流的基本手段和重要载体,随着现代通信科学技术的迅速发展,尤其是计算机的日趋普及,对语音信号的处理发挥着越来越重要的作用。汉语中的声调对于语音的理解很重要,同时相同的汉语在不同的语气或词义下均有不同的声调[1]。因此,基音检测的准确性对于汉语语音信号的识别极为重要。

根据声带的震动情况,我们一般将语音信号分为清音和浊音两种[2]。清音和普通的白噪声相似,尚未发现明显的规律性;而浊音就是俗称的有声语言,携带着语音的大部分能量,并且具有明显的周期性。当人们在发出浊音的时候,气流往往会通过声门迫使声带产生规律性的震动,我们称之为激励脉冲串。通过声带震动产生的频率被定义为:基音频率,同样地,就有了基音周期[3]。通常所指的基音检测实际上就是一种对基音周期的估计,结果是希望能够找出与声带的振动频率相一致或较为吻合的轨迹曲线。

语音信号的处理包括四大类,分别为:语音合成、语音识别、语音编码以及语音识别 [2]。其中,准确提取语言信号参数对于整个的语音信号处理是至关重要的。只有当某些可以表示语音信号本质特征的参数被准确地提出,这些参数才可以被利用进行有效的语音合成,语音识别以及语音的压缩解码处理,其中语音周期提取的准确性会直接影响到语音合成的真实性,因此在众多参数中就会显得尤为重要[4]。

2 研究方法

2.1 自相关函数法(ACF函数法)

当采用ACF函数算法进行基音检测时,主要是利用了短时自相关函数能够取到最大值这一性质。使用此方法时,可以利用一个窗函数,使窗本身不动,而语音信号移动。窗口的长度[N]大于等于两倍的基音周期,当[N]越大,函数波形的细节会显示地越清晰,更加有利于基音的检测,然而会有繁重的计算量。

这一算法适用于在噪声环境下基音的提取。通过上面的性质可以知道,自相关函数都是在基音周期处出现峰值,并且标出出很强的规律性。在一般情况下,基波分量不是最强的分量,并且多变的谐波使得语音信号的波形变得较为复杂,对于基音检测是一大难题,经常发生的基频估计结果往往是:二次倍频或二次分频的实际基音频率。同时,还有一些清浊混杂的情况,使得基音检测成为目前的一大难题。

2.2 平均幅度差函数法(AMDF函数法

得到语音信号基音周期的具体过程是:首先对语音信号的序列进行z变换,然后对其取模再取对数,最后再进行逆z变换。根据语音信号的产生及瞬时平稳的特性可以得知:声道滤波器频谱与声源频谱的乘积就得到了短时谱的语音信号。对于浊音信号而言,脉冲激励源的周期性表现为快速变化的周期性细致结构[8]。语音信号倒谱的取得是:首先对语音信号的短时谱取对数,然后再进行反傅里叶变换,因此,浊音信号的倒谱会出现周期性的冲激,就可以从倒谱波形中提取出相对应的基音周期。

3 基于MATLAB基音检测

本文所采用的语音文件为:在windows附件中的录音机功能录制2-3秒 “啊”的四个音调,采样频率为11.025KHz,位数为16位,声道为单声道。

从已得到的语音信号中选取一段较理想的样本,取样点数应为帧长的整数倍。对语音信号的采样,通过软件MATLAB对语音文件的计算得知其语音长度为2.5秒,若采样频率为11KHz,共计27500个采样点。采样模块从采样频率为11KHz的语音信号中截取11000个样点进行分析,取帧长为20ms,即每帧为220个样点值,共分为50帧。运用matlab编写程序得出以下结果:

图1是原始语音信号的波形,图2是采样信号的波形,从原始语音信号中截取11000个样点进行分析.

图3是用ACF函数法得到的基音轨迹图,这一算法适用于在噪声环境下基音的提取。由图中可知,信号在是在基音周期处出现峰值,并且标出出很强的规律性。

图4是用AMDF函数法得到的基因轨迹图,平均幅度差函数法只需进行加减法和取绝对值等简单的计算,算法简单,运算量比自相关函数法大大减少,容易在计算机实现。

图5是运用倒谱法得到的基音检测轨迹图.倒谱法对于干净语

基音检测 matlab,基于MATLAB基音检测分析.doc相关推荐

  1. 【缺陷检测】基于matlab AlexNet和SVM异常螺母检测【含Matlab源码 2147期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [缺陷检测]基于matlab形态学水果蔬菜缺陷检测[含Matlab源码 820期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

  2. 【雷达检测】基于matlab模拟海洋监视雷达检测仿真【含Matlab源码 2268期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[雷达检测]基于matlab模拟海洋监视雷达检测仿真[含Matlab源码 2268期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方 ...

  3. 显微镜镜头缺陷检测系统 基于matlab的图像处理系统

    第一步 可以见到的显微镜镜头的圆形 显示镜头的轮廓 图像处理后,可以框选感兴趣的区域,并且将镜头位置处粗略显示出来 定位一部分缺陷位置 得到缺陷的轮廓 研究了一种sobel改进的方法,并且得到最佳的数 ...

  4. 【血管检测】基于matlab mom方法结合Hessian和曲线拟合血管直径测量【含Matlab源码 1970期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[血管检测]基于matlab mom方法结合Hessian和曲线拟合血管直径测量[含Matlab源码 1970期] 点击上面蓝色字体,直接 ...

  5. 基于MATLAB的平面刚架有限元分析,根据MATLAB的平面刚架静力分析.doc

    根据MATLAB的平面刚架静力分析.doc 基于MATLAB的平面刚架静力分析为了进一步理解有限元方法计算的过程,本文根据矩阵位移法的基本原理应用MATLAB编制计算程序对以平面刚架结构进行了静力分析 ...

  6. 【目标检测】基于matlab GUI背景差分算法视频运动物体跟踪【含Matlab源码 1915期】

    一.背景差分法和帧间差分法的车辆运动目标检测简介 1 引言 运动目标检测是从图像序列中检测运动目标.通过运动目标检测可以得到图像中的运动目标,获取图像中的运动信息.运动目标检测在医学辅助诊断.航天航空 ...

  7. 【缺陷检测】基于matlab GUI印刷电路板自动缺陷检测【含Matlab源码 1912期】

    ⛄一.印刷电路板自动缺陷检测简介 我国是PCB生产大国,据世界电子电路理事会WECC各协会统计[1],2007年中国大陆PCB产值占全球总产值的27.9%,仅一年时间就比2006年增长了17.0%.但 ...

  8. 【火灾检测】基于matlab GUI森林火灾检测系统(带面板)【含Matlab源码 1921期】

    ⛄一.火灾检测简介 1 引言 目前森林火灾是破坏森林的最主要的灾害之一, 影响很大.森林是各种珍禽异兽的家园, 森林遭受火灾后, 会破坏野生动物赖以生存的环境.严重的森林火灾不仅能引起水土流失, 还会 ...

  9. 【车道线检测】基于matlab Hough变换图片车道线检测 【含Matlab源码 276期】

    ⛄一.Hough变换图片车道线检测简介 1 引言 随着人们生活水平的提高, 科技的不断进步, 智能驾驶技术逐渐受到了研究者们的广泛研究和关注.先进驾驶辅助系统 (Advanced Driver Ass ...

最新文章

  1. 一行代码:你的纯文本秒变Markdown
  2. Ext js call方法
  3. 高效管理论坛广告贴的小窍门
  4. 女学霸考 692 分想当“程序媛”,网友:快劝劝孩子
  5. 在Access数据库中使用SQL查询分析器
  6. iOS11、iPhoneX、Xcode9 的注意点汇总
  7. matlab 入门 实验,matlab入门实验.doc
  8. 基于java springmvc+mybatis酒水商城管理系统设计和实现
  9. android exo解码问题,android – exoplayer-自动更改质量不起作用(hls)
  10. Android平台epub阅读器推荐
  11. Zookeeper一致性级别分析,含爱奇艺,小米,腾讯,阿里
  12. GB_T28181-2016.pdf
  13. Qt qml 下使QtCharts
  14. 树莓派4b入门之开发RFID系统—两种MFRC522读写脚本
  15. Systemverilog中static、automatic区别
  16. Python中的第三方包
  17. setTimeout()的用法
  18. SemEval-2022 Task 6 有意讽刺检测
  19. GPLT练习集L1 25--32
  20. 为什么大量淘宝天猫商家转战亚马逊?亚马逊有什么优势和劣势?

热门文章

  1. java 耦合度_Java第三十八天,Spring框架系列,使用工厂模式降低程序耦合度
  2. 归档和解档-Archiver
  3. linux-x86_64 error,ORA-09817/Linux-x86_64 Error: 28: No space left on device/ORA-01075
  4. 复数卷积 tensorflow_PyTorch 中的傅里叶卷积
  5. php设置路径别名,react设置文件路径别名的具体方法你知道么
  6. Linux的实际操作:用户管理(用户添加useradd -d和设置用户密码passwd)
  7. linux system更好方法,Linux将程序添加到服务的方法(通用【但最好还是用systemd】)...
  8. php如何获取服务器时间_php如何获取当前日期
  9. 适合程序员的耳机_为什么很多程序员工作时都戴耳机?
  10. python汉诺塔_汉诺塔递归算法/搬金盘的婆罗门 - Python实现