微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于TMS320VC5507的语音识别系统实现

基于TMS320VC5507的语音识别系统实现

时间:05-01 来源:互联网 点击:

  1 语音识别片上系统概述

  随着数字信号处理技术的发展,语音识别片上系统已成为人们研究的热点。然而,复杂的系统与硬件需求的矛盾,一定程度上限制了它的应用和推广。本文针对上述问题,采用相应的识别策略[1],合理安排算法流程,完成了高性能特定人与非特定人识别系统的片上实现。

  2 硬件平台

  DSP选型时需综合考虑运算速度、成本、功耗、硬件资源和程序可移植性等因素。本系统采用美国德州仪器(TI)生产的TMS320VC5507定点DSP作为核心处理器[2],并配合使用PLL时钟发生器、JTEG标准测试接口、异步通信串口、DMA控制器、通用输入输出GPIO端口以及多通道缓冲串口(McBSPs)等主要片内外设。系统硬件平台如图1所示。

  VC5507 DSP芯片采用先进的多总线结构,内含64 K×16 bit的片上RAM和64 KB的ROM;片内可屏蔽ROM固化有引导转载程序(Bootloader)和中断向量表等;采用流水线结构提高指令执行的整体速度。与C54x系列DSP不同的是,VC5507DSP的存储空间包括统一的数据、程序空间和I/O空间,寻址空间可达16 MB;片内包含两个算术逻辑单元(ALUs),在最高时钟频率200 MHz下,指令周期可达5 ns,最高速度可达400 MIPS。

  存储器采用三菱公司生产的M5M29GB/T320VP系列Flash芯片。全片容量2 MW,分为128个扇区,通过外部存储器接口(EMIF)方式与读写时序接入DSP;采用2.7 V~3.6 V单电源供电。该系列Flash支持块编程操作[3],读写速度要快得多,有利于实时性的改善。

  基金项目:国家自然科学基金资助项目60572083

  

  图1 语音识别系统硬件框图

  A/D、D/A转换器采用英国Wolfson公司生产的WM8973L芯片。该芯片支持16位A/D、D/A转换,具有可编程输入输出增益控制,可通过软件设置8~96 KHz的多种采样频率[4]。

  3 软件结构

  3.1 系统概述

  特定人识别系统采用12维MFCC参数作为识别引擎的特征参数,训练与识别都是在片上实时实现的,系统框架如图2(a)所示。在训练阶段,由片上实时提取每个词条的特征参数存放到Flash中作为模板库。在识别阶段,将待识别词条实时提取特征参数、端点检测以后,利用动态时间规整(DTW)算法与模板库中的所有模板进行匹配,选择失真度最小的模板作为识别结果。当词表改变时,只需调整Flash存储方式,算法本身无需改动。

  

  (a) 特定人系统

  

  (b) 非特定人系统

  图2 识别系统框架

  非特定人识别系统的输入特征矢量为27维,包括12维MFCC、12维MFCC一阶差分、一阶对数能量、一阶差分能量以及二阶差分能量。系统以基于因素的CDHMM模型为基本识别框架,采用Viterbi解码的帧同步搜索算法进行识别。HMM模型训练事先在PC机上进行,而Viterbi搜索则在DSP芯片上实时实现,整个系统为双层结构,如图2(b)所示。

  训练阶段主要完成如下任务:给定一个HMM模型和一组观察矢量集合,采用迭代算法调整模型参数,使得新模型和给定的观察矢量集合的似然度最大。首先用初始模型估计观察矢量由隐含层所有可能的状态序列输出的后验概率,然后根据前一步的估计结果,利用最大似然准则估计新的HMM模型,所得到的参数用作下一次迭代。识别阶段采用Viterbi搜索,所构建的识别网络包括状态号和状态连接关系等信息。为了减少网络搜索的内存占用量,采用每个词条单独建立网络的方法,使得每个词条的搜索过程可在内存中独立进行[5]。

  3.2 语音传输与中断程序设计

  受硬件条件限制,系统的多任务调度是由中断服务机制完成的。除了Reset和非屏蔽中断(NMI)外,还设置了两个DMA通道中断。其中DMA通道2负责将麦克风录制的语音数据送至DSP内核进行运算处理;DMA通道3负责将回放语音数据传送至扬声器输出。

  在内存中,分别设有两个128 W的接收缓冲区和发送缓冲区。以接收端为例,对于8 kHz采样语音,每0.125 ms接收一个16 bits的采样数据,存入其中一个接收缓冲区中。16 ms后,该接收缓冲区满,由DMA控制器向CPU发出中断请求,进行VAD、特征提取等操作。与此同时,另一个接收缓冲区继续接收语音数据。这种数据传输方式又称为Ping-Pong传输,接收和发送分别设置两个缓冲区,利用等待时隙,当其中一个缓冲区数据传输完成,产生中断时,另一缓冲区继续工作。这种双缓冲区传输方式可以明显改善系统实时性能。

  3.3 端点检测

输入到硬件平台的语音信号前后经常含有大量静音或噪声。出于节省硬件资源的考虑,需要引入端点检测算法。为了兼顾实时性能和硬件资源占用率,并防止语音切分过严而影响识别性能,采用基于循环缓冲

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top