FPGA(VHDL)语音识别

在Altera DE0上使用MATLAB和VHDL的简单语音识别系统。

介绍

该项目是一个试验,目的是在低端和教育性FPGA(如Altera DE0)上开发简单的语音识别引擎。 耗尽低端FPGA的局限性并驯服它们来做高级工作也是一个简单的挑战。

设计该系统的目的是识别在笔记本电脑的麦克风中说出的数字(1或0),然后通过UART将该数字传输到FPGA。 工业界和学术界都在该领域投入了大量精力来开发软件和硬件,以提供可靠的解决方案。 但是,由于世界各地都使用大量口音,这个难题仍然是研究的活跃领域。

语音识别发现了许多应用程序,包括医疗保健,人工智能,人机交互,交互式语音响应系统,军事,航空电子等。另一个最重要的应用程序是帮助残障人士更好地与世界互动。

理论

通过描述要识别的话语类型,可以将语音识别系统分为几个模型。 这些类别应考虑确定说话者开始和结束说话的时间的能力。 在这个项目中,我旨在实现隔离的单词识别系统,该系统通常在要说的单词上使用汉明窗。

语音识别引擎大致分为两种,即模式识别和声学语音系统。 前者使用已知/经过训练的模式来确定匹配,而后者则使用人体的属性来比较语音特征(诸如元音之类的语音)。 模式识别系统与当前的计算技术相结合并且倾向于具有更高的准确性。

语音识别系统的基本结构如下

  • 语音信号记录
  • 频谱分析(FFT,加窗,MFCC,功率谱)
  • 概率估计(神经网络,隐马尔可夫模型,VQ)。
  • 信号解码与决策

使用麦克风捕获音频信号,并将其记录在时域中(即随时间而变化)。 人类语音信号不稳定的问题以及在时域中对此类信号的分析是非常复杂的问题,并且计算成本很高。

频谱分析的作用来了,通过对输入信号进行一系列转换和处理算法,将其转换为可用形式,以便可以对其进行进一步分析。

使用方法:

DFT

离散傅里叶变换(DFT)将函数的等距样本的有限序列转换为离散时间傅里叶变换(DTFT)的等长样本的等长序列,这是频率的复数值函数 。

汉明窗

每当执行有限傅立叶变换时,都将其隐式地应用于无限重复的信号。 因此,如果有限采样的开始和结束不匹配,那么它将看起来像信号的不连续性,并在傅立叶变换中显示为大量的高频废话,这是您不想要的。

而且,如果样本恰好是漂亮的正弦波,但整数周期未恰好适合有限样本,则您的FT将在各种位置显示出可观的能量,而实际频率远不及此。

窗口化数据可确保两端匹配,同时使所有内容保持合理平滑;这大大减少了“光谱泄漏”的种类。

欧氏距离

在信息论中,两个等长字符串之间的汉明距离是相应符号不同的位置数。 换句话说,它测量将一个字符串转换为另一个字符串所需的最小替换数,或可能将一个字符串转换为另一个字符串的最小错误数。 在更一般的上下文中,汉明距离是用于测量两个序列之间的编辑距离的几个字符串指标之一。

FFT

FFT是一种快速的O [N log(⁡N)]算法,用于计算离散傅立叶变换(DFT),它实际上是O [N ^ 2]计算。 FFT通过将N点时域信号分解为N个时域信号(每个时域信号由一个点组成)来进行操作。 第二步是计算与这N个时域信号相对应的N个频谱。 最后,将N个频谱合成为单个频谱。

实现

该系统最初仅打算在没有外部设备的情况下在FPGA中开发,但是由于我的板卡功能有限,因此无法做到这一点,因此我将项目分为两个阶段,即前端(信号采集和分析)和后端(模式匹配和估算,决策和用户界面)。

详情参阅http://viadean.com/vhdl_speech_recog.html

你可能感兴趣的:(编程,电子,FPGA,VHDL,语音识别)