语音识别及处理简介

  |   0 评论   |   192 浏览

背景

语音识别,即自动语音识别Automatic Speech Recognition(ASR),让计算机识别出语音内容的技术。

本文从头开始,为零基础的同学介绍一下语音识别原理。

硬件简介

以实验课上的方案为例,如下图所示

imagepng

数据采集

  • TLC2272: 双路低噪声轨至轨运算放大器,将音频信号转换为差分信号。
  • TLC320AD50: 单通道编解码器,差分输入,单端输出。
  • LW386: 功率放大器

模拟输入-> 模拟输出:先用 TLC2272 将音频信号转换为差分信号,输入给 TLC320AD50,再输出给 LW386。

Flash存储

我们要采集语音信号,因此需要将编码器的内容输出出来。

  • TMS320C5402: 16位定点DSP。

通过 TLC320AD50 向 TMS320C5402 传输语音信号数据,进行DSP处理。

imagepng

语音信号处理简介

语音识别部分

语音信号中的数据非常丰富,需要将有用的信息提取出来,即特征提取。

对于非特定人语音识别,特征需要反映语义信息,减少说话人的信息。

对于特定人语音识别(即声纹识别),则刚好相反。

具体如下:

imagepng

  • 预处理
  • 端点检测: VAD
  • 特征参数提取
  • 语音库
  • 测度中心
  • 判决

预处理

预处理:反混叠滤波,A/D变换,预加重,加窗和分帧处理。

  • 预加重:提升高频部分,便于声道处理。
  • 加窗:矩形窗 / 汉明窗,因为语音信号有 10 ~ 30ms的短时平稳性。

端点检测

端点检测VAD,即进行起点和终点检测。

一般采用时域分析法,以能量、振幅和过零率为依据。详见[1]。

特征参数提取

识别参数可以为:

  • 频谱,倒谱,线性预测系数
  • 音长,音调,声调等超音段信息函数

语音库

语音库即声学参数模板。通过训练和聚类方法,找出多次重复的语音参数,经过长时间训练再聚类得到。

语音模板库中,对每一个词都有一个模型。

测度中心

在识别阶段,对于测试语音,在语音模板库中,计算对应的测度。通过测度值,来识别出测试语音。

计算测度的方法有很多种,如动态时间规整法(Dynamic Time Wraping, DTW)、有限状态矢量量化法,隐马尔可夫模型等。详见[1]。

DTW是为了解决语速多变的问题。比如测试语音参数有N帧矢量,参考模板有M种矢量,N不等于M。

DTW就是找一个函数j=w(i),将测试矢量的时间轴i映射到模板的时间轴j上,并使函数满足:

imagepng

其中d[T(i), R(w(i))]是第i帧测试矢量T和第j帧矢量R(j)之间的距离测度。D是处理最优归整情况下两矢量之间的匹配路径。

其实就是要找到函数D,即是一个泛函求解问题。当D值最小值,即找到了两矢量匹配时累积距离最小的归整函数,保证了他们之间最大的声学相似性。

DTW的求解方法之一,是使用动态规划(DP)方法,详见[1]。

判决

判决,即将上面计算出来的测度值,选择其中最好的结果,由识别系统输出的过程。

实时滤波部分

通过DSP上的TMS320C5402,将含噪声的语音,进行实时采集,经过A/D处理,转为数字信号。

再调用DSP中的滤波算法,进行滤波。

最后将结果经过D/A处理,转为模拟信号。

回波去噪部分

使用自适应滤波器。

自适应算法,比如LMS算法,即最小均方误差判据算法,让理解信号与滤波器的输出之差的平方值的期望值最小。由此计算得到最佳的权重。

如果直接采用矩阵求解,计算量比较大。故一般采用迭代法求解。

参考

评论

发表评论

validate