语音识别小程序 下载本文

内容发布更新时间 : 2024/11/14 13:29:40星期一 下面是文章的全部内容请认真阅读。

数字语音识别小程序

摘要:通过提取声音信号的MFCC作为特征,利用动态时间规整技术实现匹配算法,实现了特定人孤立汉语数字语音的识别,并利用Matlab编写了简单的图形用户界面。 关键词:语音识别;MFCC(梅尔频率倒谱系数);DTW(动态时间规整)

一、MATLAB简介

MATLAB是一种功能强大、效率高、交互性好的数值计算和可视化计算机高级语言,它将数值分析、信号处理和图形显示有机地融合为一体,使得技术人员可以在较短的时间里对自己的想法进行实验验证。在MATLAB基础上进行汉语数字语言识别的图形用户界面开发与程序设计的。

二、语音识别系统的本质

语音识别系统本质上是一种模式识别系统,它包括了特征提取、模式匹配、参考模型库这三个基本单元。典型系统的基本结构如图1所示。

语音输入语言信号预处理特征提取训练识别模式识别识别结果模型库

图1 典型语音识别系统

目前常用的技术有特征参数匹配法、隐马尔科夫法和神经网络法。其中语音特征参数可以是能量、基音频率、过量率、共振峰值等,目前常用的参数为基于发声声道特征模型,通过线性预测分析的线性预测倒谱系数LPCC和基于人耳的听觉机理,反映听觉特性,模拟人耳对声音频率感知的梅尔倒谱系数MFCC等。

MFCC的频率特性反映了人耳的听觉特性,因而在用于代替人耳来分析语音时。与LPCC相比,不依赖于全极点语音产生模型的假定,抗噪能力较强。所以使用MFCC参数作为语音识别的主要特征参数。

三、语音信号的分析与处理

1 信号采集

本实验直接用电脑的声卡进行语音信号的数字化采样量化处理。采用Matlab的audiorecorder对象进行声音信号采集。使用默认参数8kHz采样率,8位量化精度,单声道。

2 预加重处理

因为发声过程中声带和嘴唇的效应,使得高频共振峰的振幅低于低频共振峰的振幅,进行预加重的目的就是为了对信号进行平滑,提升高频部分,补偿声带和嘴唇的效应,平坦信号频谱,保持整个频带中的信噪比,以便于进行频谱分析或声道参数分析。

3 端点检测

端点检测即从一段信号中检测出语音信号的起始点和结束点,在孤立词识别中,可以减少非实时系统中的大量计算。常见的端点检测方法有利用时域特征的音量、过零率,利用频域特征的频谱变异数、频谱的熵等。时域方法计算量小,实现简单,且足以满足一般应用。

短时能量可以利用帧内数据的平方和进行计算。

编程时当能量值大于开启阈值时确定为起始点,小于关闭阈值时确定为语音结束点。

4 MFCC特征提取

数字语音信号经过以上的预加重处理和端点检测之后,将进行梅尔倒谱系数MFCC的计算。

1)分帧

语音整体上是非平稳信号,但其特性在20ms的量级内基本保持不变。取10ms为一帧,为避免相邻帧间的过大变化,帧之间应设置重叠,选取帧移为帧长的一半。另外为了方便后面的FFT计算,这里的帧长取为2的整幂指数。

2)加窗

由于进行离散傅里叶变换时将时域信号进行了周期延拓,在两端一般会有不连续的现象,为了减少吉布斯效应,通常要进行加窗处理,弱化边缘信号。在语音信号处理中常用海明窗(hamming windows),在Matlab中有其实现函数。

3)傅里叶变换

语音的时域信号变化迅速,不易分析,而频域变化相对缓慢,因此对加窗后的信号进行快速傅里叶变换FFT,再折半舍弃对称部分后平方计算信号能量谱。

4)三角带通滤波器 5)离散余弦转换 通过离散余弦转换,将能量集中在前面几项中,达到在减少判别参数提高运算速度的同时又不失其准确性的目的。

5 训练与识别

在特征匹配方面有动态时间规整(DTW)技术,有效地解决了语音信号的特征提取和不等长语音匹配问题。此外还有矢量量化(VQ)和隐马尔科夫模型(HMM)理论,但这些基于统计的识别技术都需要大量的语音材料来提取统计特征,实现也比较麻烦。相对而言,DTW实现简单,在特定人孤立词的识别方面也能够有足够的准确度。

动态时间规整是将时间规整和距离测度结合起来的一种非线性规整技术。算法的思想就是把未知量均匀地伸长或缩短,直到与参考模式的长度一致。在这一过程中,未知语音的时间轴要不均匀地扭曲或弯折,以使其特征与模型特征对正。

真正进行语音识别时,首先需要采集0~9的汉语语音信号,计算各自的MFCC参数并存储起来作为参考模板。进行识别时,将待识别信号的参数特征依次与模板特征进行DTW匹配,并从中选取距离最小的作为识别结果。

四、Matlab的GUI实现

最后采用Matlab的GUI工具箱搭建一个简单的用户界面,能够用前面介绍的原理进行汉语数字语音的识别,而且便于操作,方便使用。