VC++和Matlab混合编程的语音识别研究

[09-12 18:26:33]   来源:http://www.88dzw.com  EDA/PLD   阅读:8383

文章摘要:摘要:采用VC++和Matlab混合编程搭建了一个高效的基于HMM的语音识别实验验证平台。结合FPGA的特点,直接使用加法器、乘法器、比较器等建立一个Viterbi算法结构,采用改进方法计算Viterbi得分,实现一种简单的基于HMM的语音模板匹配。1 引言Matlab 是一款高性能的数值计算和可视化软件,集成数值分析、矩阵计算、信号运算、 信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境。目前,基于Matlab 的语音识别开发平台虽然在可读性、可移植性和可扩充性上优于其它编程语言,且调试功能 强大、数据库函数丰富,可使研究人员“站在巨人的肩上”更加直观、方便地进行分析、计 算与

VC++和Matlab混合编程的语音识别研究,标签:eda技术,eda技术实用教程,http://www.88dzw.com

  摘要:采用VC++和Matlab混合编程搭建了一个高效的基于HMM的语音识别实验验证平台。结合FPGA的特点,直接使用加法器、乘法器、比较器等建立一个Viterbi算法结构,采用改进方法计算Viterbi得分,实现一种简单的基于HMM的语音模板匹配。

  1 引言

  Matlab 是一款高性能的数值计算和可视化软件,集成数值分析、矩阵计算、信号运算、 信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境。目前,基于Matlab 的语音识别开发平台虽然在可读性、可移植性和可扩充性上优于其它编程语言,且调试功能 强大、数据库函数丰富,可使研究人员“站在巨人的肩上”更加直观、方便地进行分析、计 算与设计工作,从而大大地节省了时间[1]。但考虑到其执行代码速度低下,不能直接与硬件 底层直接接触等缺点,因此提出了采用Matlab 和VC++混合编程来搭建语音识别实验平台, 并对传统Viterbi 算法进行变形,直接使用FPGA 的加法器、比较器和逻辑操作来计算观察 值序列,以实现一种简单的嵌入式语音模板匹配。

  2 基于HMM 的语音识别

  2.1 语音识别系统

  语音识别系统(Speech Recognition System,SRS)基本上是一个模式分类的任务,即通 过训练,系统能够把输入的语音按一定模式进行分类[2]。实验在Matlab 7.0 系统上建立了一 个简单的基于隐马尔可夫模型(Hidden Markov Model,HMM)的语音识别过程,如图1。


  (1)语音输入:在一般实验室环境下进行语音信号采样,采样格式为PCM,采样频率 16 KHZ,A/D 的量化精度8 Bit。然后经过去噪、预加重、分帧、加窗等处理过程,去掉语音信号中包含的大量冗余信息,加强语音信号的高频共振峰,便于进行频谱分析。

  (2)端点检测:考虑到语音信号的录制是在较为安静的实验室环境下进行,利用过零 率Z 来检测清音,用短时能量E 来检测浊音,两者配合实现可靠的端点检测[3]。

  (3)特征提取和量化:对有效语音段进行特征提取,即提取基于Mel 刻度的倒频谱矢 量(Mel Frequency Cepstrum Coefficients,MFCC),它是识别过程中的输入特征值。特征值 经矢量量化Vector Quantization,VQ),输出VQ 码本类别号,即HMM 训练与识别阶段使 用的观察值序列o。

  (4)模型训练与语音识别:训练阶段,系统采用一系列训练观察值估计HMM 参数,


  2.2 Viterbi 算法

  由于计算复杂度的限制,对于基于HMM 的实时语音识别来说,需要设计一个高效的硬 件结构来执行Viterbi 译码过程,以加速HMM 的识别过程。考虑了FPGA 的特点,分别采 用对数概率和状态概率的最小路径对传统的Viterbi 算法进行变形,其计算P( o |λ ) v  的过程 如下[5]:


  通过上面的变形,不仅可以使传统 Viterbi 算法中的乘法转成加法,降低时间消化,有 效地避免数据下溢的问题。而且随着Viterbi 计算过程的进行,已计算的状态概率值随之增 加,改原来找结束概率的最大值为最小值[6]。因此,只需要计算T 时刻的概率T δ( i) ,它是 大于前参考单词模型的最小值Pv 的。

  实验将直接使用 FPGA 的加法器、比较器和逻辑操作来实现上述公式(2)和公式(3), 可以显著提高系统效率,系统结构如下图2。

[1] [2]  下一页


Tag:EDA/PLDeda技术,eda技术实用教程EDA/PLD
分类导航
最新更新
热门排行