如何使用LabVIEW设计一款通用性语音识别系统?
来源:电子发烧友网 发布时间:2020-08-26 分享至微信

语音识别是通过识别或理解过程把语音信号转换为相应的文本文件或命令的高技术。虽然语音识别技术经过几十年的探索已经达到了相对较高的水平,但是其实现的方法较难、成本较高,编程语言C、VC+等对编程人员能力要求较高,难于推广,通用性较差。因此,本文介绍一种把LabVIEW平台和MATLAB结构化语言相结合的方法。

在LabVIEW平台中用声卡采集语音信号,建立起低成本的数据采集系统。利用Matlab script节点进行VQ算法训练与识别。VQ不仅可以压缩表示语音参数所需要的数码率,而且在减少运算量方面也是非常高效的。本文采用矢量量化方法(VQ),这种匹配方法简化了系统的复杂度,判断速度快,提高了编程效率,识别精度高。此方法实现起来不仅便于采样参数的控制而且成本低、易学习。



语音信号的实时采集


从数据采集的角度来看,PC声卡是一种音频范围内的数据采集卡,它同时具有AD和D/A转换功能,不仅价格低廉,而且兼容性好、性能稳定、灵活通用。因此,如果系统对采样频率等指标没有太高的要求,就可以用声卡作为数据采集设备。这样可以组成一个低成本高性能的数据采集系统。

语音信号一般被看作一种短时平稳的随机信号(10-20ms) ,主要是对他进行时域、频域和倒谱域上的信号分析。正常人的发音频率范围在40Hz到3400Hz左右,根据奈奎斯特采样定律(Nyquist Sampling Theorem),采样频率应为原始语音频率的两倍以上,通常采用8kHz采样率。满足声卡采集的要求。不同声卡信噪比等指标差异较大,所以质量较高的声卡采集的语音信号对系统的识别率也有一定的影响。

本系统采用电脑自带的声卡进行了语音信号实时采集,采集的语音信号以8kHz, 16位, 单声道格式(PCM格式)录入存储,从而得到了需要的*.wav文件。

LabVIEW 8.2提供了一系列使用Windows底层函数编写的与声卡有关的函数。这些函数位于LabVIEW 8.2函数选板的[编程]→[图像与声音]→[声音]→[输入]子选板中。利用[输入]子选板中所包含的这些函数,可将从麦克风等声音输入设备采集到的声音数据输入到LabVIEW。


LabVIEW 8.2处理声卡的过程如下:

 

(1)打开/释放声卡。在使用声卡前,必须先对其进行初始化。“配置声音输入”函数和“启动声音输入采集”函数分别用于配置和开启声卡;”声音输入清零“函数用于释放已经打开的声卡。

(2)数据采集与缓冲。利用“读取声音输入”函数采集数据并写入缓冲区。




语音识别算法


语音识别的算法有:(1)动态时间规正(DTW);(2)矢量量化的距离(VQ);(3)隐马尔可夫模型(HMM);(4)人工智能、神经网络和模糊识别。

DTW是基于小词汇、孤立词的语音识别系统。识别率比较高,但对大词汇量、连续语音识别贡献不大。矢量量化(VQ)技术是继DTW之后的一种识别方式。它将一组特征值组成一个特征值矢量, 通过对特征值适量的匹配来实现识别。这种方法在语音识别领域中被广泛使用,在提高语音识别精度方面做出了很大的贡献。HMM是继VQ后出现的一种基于概率的识别方式,主要在大词汇、连续语音识别中使用。人工智能、神经网络和模糊识别是最近十几年发展起来的新兴的学科,其中一些技术应用到语音识别中来,处于发展阶段,尚不完善。


矢量量化是一种最基本也是极其重要的信号压缩算法,充分利用矢量中各分量问隐含的各种内在关系,比标量量化性能优越,在语音编码、语音识别等方向的研究中扮演着重要角色。在VQ方法中模型匹配不依赖于参数的时间顺序,因而匹配过程中无需采用DTW技术,而且应用这种方法比应用DTW方法的参考模型存储量小,即码本码字小。鉴于本次设计是基于小词汇量的简单语音识别系统,所以最终选择了技术比较成熟、实现简单的VQ技术。系统利用Matlab script节 点进行VQ算法训练与识别,减少了运算量,提高了编程效率。



语音识别系统设计


语音识别系统由软、硬件两部分组成,硬件部分的任务是通过麦克风和声卡将语音信号转换为电信号,经过A/D转换,以数字信号的形式传入计算机,同时具备能将语音波形文件通过声卡外接耳机或音箱回放。系统框图如图2所示。

1、硬件部分

硬件包括3个部分:拾音及信号调理电路,A/D转换电路,PC机接口电路。由于声卡已经成为计算机的标准配置(集成或插卡形式),故采用声卡、话筒的组合实现这部分功能,使用简便从而提高工作效率。



2、软件部分

LabVIEW的一大特色是其基于图形的编程方式是采用数据流(DataStream)而非传统的文本方式的编程方法。该编程方式强调信号处理的实际过程,有利于简化编程,缩短开发时间和降低开发难度。

LabVIEW提供了MAILAB Script节点连接主流算法仿真分析软件Matlab,可以在节点中编辑MATLAB程序,解决复杂的数值运算。这样充分发挥Matlab强大的数据处理能力。软件在实现过程中,充分利用LabVIEW软件本身所提供的丰富的应用分析工具包如数字滤波器、频域分析等工具模块,避免大量的软硬件开发工作。



本文利用LabVIEW平台和MATLAB语言相结合的方法,把虚拟仪器技术应用于语音识别系统。此方法充分利用了LabVIEW灵活的图形编程和MATLAB数学计算,实行优势互补,实现采集语音样本操作简单,界面丰富友好,成本低,易学习,并且能不断随着虛拟仪器技术和计算机软硬件技术的进步而升级。基本符合实际应用的要求,具有一定的实际应用价值。该方案可用于小词汇量的汉语语音的实时识别。系统编程方便、计算简单、识别时间短,值得推广。

 

LabVIEW程序开发有很多优点,尤其是在某些特殊领域,其特点尤为突出。比如:测试测量,LabVIEW最初就是为测试测量领域来设计,并已经获得了广泛的承认。至今,大多数主流的测试仪器、数据采集设备都拥有专门的LabVIEW驱动程序,使用LabVIEW程序,可以非常快捷地控制这些设备。


同样,在控制领域,LabVIEW也是首先开拓了这一块区域。它有专门用于控制模块DSC程序,除此以外,工业控制领域常用的设备、数据线等也通常带有LabVIEW驱动程序;LabVIEW程序还包含了多种多样的数学运算函数,特别适合进行电路的模拟、仿真、原型设计等工作;譬如在设计电机之前,可以先在计算机上用LabVIEW程序搭建仿真原型,验证设计的合理性,找到潜在的问题,在学习过程中,可以通过它来进行仿真实验,加强自身的动手实践机会。


除此以外,LabVIEW还有诸多的技术优点 :适合快速开发、跨平台、图像可视化、入门简单、集成化VI开发等等...

 

但是对于有些初学者,可能仅仅知道LabVIEW的一些简单应用,对于LabVIEW如何进阶学习,具体要如何进一步提高实践能力,没有很好的理解、获得正确学习途径的能力。

 

[ 新闻来源:电子发烧友网,更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj]
存入云盘 收藏
举报
全部评论

暂无评论哦,快来评论一下吧!