基于tms320c6678的语种识别并行算法设计与实现

上传人:ldj****22 文档编号:33730724 上传时间:2018-02-17 格式:DOCX 页数:4 大小:129.21KB
返回 下载 相关 举报
基于tms320c6678的语种识别并行算法设计与实现_第1页
第1页 / 共4页
基于tms320c6678的语种识别并行算法设计与实现_第2页
第2页 / 共4页
基于tms320c6678的语种识别并行算法设计与实现_第3页
第3页 / 共4页
基于tms320c6678的语种识别并行算法设计与实现_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于tms320c6678的语种识别并行算法设计与实现》由会员分享,可在线阅读,更多相关《基于tms320c6678的语种识别并行算法设计与实现(4页珍藏版)》请在金锄头文库上搜索。

1、 基于 TMS320C6678 的语种识别并行算法设计与实现吉立新,刘伟伟,李邵梅 时间:2012 年 12 月 03 日 来源:电子技术应用 2012 年第 10 期摘 要: 针对语种识别在实际应用中的实时性需求,在分析语种识别算法原理和 多核 DSP 任务并行的基础上,设计了一种基于 TMS320C6678 的语种识别算法并行实现方法。该方法实现了任务级并行流水和核间高效通信。实验结果表明,该方法可靠、有效,并且使该系统至少能够完成 132 路的实时识别任务。关键词: 语种识别;多核 DSP;TMS320C6678;并行处理语种识别是计算机通过分析处理一个语音片段,判别其所属语言种类的过程

2、1。语种识别的任务在于快速准确地识别出语言的种类,自上世纪 90 年代以来,已经成为通信和信息领域一个新的学科增长点,在多语种信息服务、机器翻译及军事安全等领域都有着广泛的应用前景2。语种识别走向实用化,不仅要有令人满意的识别性能,其实时处理的效率也是必须要考虑的因素。因此,设计能够实现多路实时处理的语种识别系统是语种识别迈出实用化的关键一步。本文针对语种识别系统算法的特点,设计了一种基于 TI 多核处理器 TMS320C6678 的语种识别并行实现方法,实现了任务级的并行流水处理和核间的高效通信。1 平台介绍TMS320C6678 是基于 TI 公司最新 DSP 系列器件 TMS320C66

3、x、采用 8 个 1.25 GHz DSP 内核构建而成的业界首款 10 GHz DSP,可在 10 W 功耗下实现 160 GFLOP(Giga-Floating Point Operations per Second)浮点计算性能3。不仅能整合多个 DSP 以缩小板级空间并降低成本,同时还能减少整体的功耗要求,充分满足现代数字信号处理日益增长的需求。本文语种识别系统的开发在 TI 公司的最新 DSP 集成开发环境 CCSv5(Code Composer Studio)中基于浮点运算设计完成。2 基于 TMS320C6678 的语种识别算法优化2.1 语种识别算法分解本文的语种识别系统是基于

4、区分性 Model Pushing 算法4进行构建的,并且对特征参数进行了 fDWNAP5-6处理,因此系统的测试阶段由特征提取模块、fDWNAP 模块及对数似然得分模块 3 个模块构成,如图 1 所示。(1)特征提取模块特征提取模块的任务包括语音信号预处理、MFCC 提取、RASTA 滤波、SDC 扩展、VAD 检测、CMS 处理、高斯化等过程,该模块结束即输出 56 维的特征参数,其需要存储的参数包括汉明窗和梅尔滤波器组总共不到 2 KB。(2)fDWNAP 模块该模块的工作是对所提取的 56 维特征参数进行处理,以去除与语种无关的各种干扰信息,达到净化语种特征参数的目的。如参考文献6介绍

5、,该模块首先将特征参数映射至 SVM 的高维空间,然后利用训练得到的投影矩阵计算映射后的参数中所包含的干扰信息,再将干扰信息映射至特征空间,从而进行去除。该模块中事先训练得到的投影矩阵 P=I-wwT,wwT 是对称矩阵,因此存储 wwT 需要 7 MB 的存储空间。另外,K-L 变换矩阵 D 是对角矩阵,需要 112 KB 的存储空间。(3)对数似然得分模块如参考文献4所述,本模块主要任务是利用训练得到的各语种 GMM 模型对语音特征参数计算对数似然得分进行输出的判决。本模块需要存储训练阶段得到的各目标语种的 GMM 模型及非目标语种的 GMM 模型,即针对每个语种需要存储 2 个 GMM

6、模型。所有的 GMM 模型只是均值矢量不同,高斯混元权重及协方差矩阵都是共享 UBM 模型的。以 L 个语种为例,需要存储 2L 个均值矢量,即需要 224L KB 的存储空间,共享的高斯混元权重需要 2 KB 的存储空间,协方差矩阵由于是对角化的只需要 112 KB 的存储空间。2.2 算法实时性分析 首先对各模块的运算实时性进行分析。以 30 s 的语音(8 000 Hz 采样,帧长 25 ms,帧移 10 ms)为例,后端模型使用单个语种模型,利用 CCSv5 的环境进行软件仿真得到各模块处理所花的时钟周期数,然后按照 TMS320C6678 芯片的单个内核的工作主频(1.25 GHz)

7、计算得到处理时间,结果如表 1 所示。由表 1 可知,整个语种识别系统测试阶段,在算法代码未经任何优化的情况下,一段 30 s 的语音在单个 TMS320C66x CPU 内核上的处理时间约为 22.3 s,结果非常不理想,并且特征提取模块和对数似然得分模块耗时较多。为此,本文从两个方面对代码进行了优化:一是算法本身的约减,二是算法基于 TMS320C6678 平台的优化。2.3 算法优化(1)算法约减计算过程的优化主要对语种识别系统中对数似然得分模块的算法做约减。对数似然得分过程就是利用已经训练好的各语种 GMM 模型对输入的语音特征进行似然得分的计算,语种数越多,则该模块的耗时越多。利用

8、Top n 的方法,对每个模型选取得分最高的 10 个高斯用来计算对数似然得分。由于区分性 Model Pushing 模型是由 SVM 训练得到的支持向量重构而来,而支持向量由 GMM-UBM 模型自适应得到,因此,区分性 Model Pushing 模型与 GMM-UBM 模型的各高斯分量之间有着很强的对应关系。上述介绍说明,区分性 Model Pushing 模型与 GMM-UBM 模型有着很强的对应关系,可近似认为对同一个特征向量它们得分最大的高斯混元一致7。针对拥有512 个高斯混元的 GMM,似然得分的计算结果必定仅仅集中于很少的几个高斯混元,大部分的高斯混元得分都会非常小以致可以

9、忽略。因此,考虑将得分小的高斯混元结果忽略不计,只计算得分大的高斯混元。鉴于 fDWNAP 模块包含特征向量对 GMM-UBM 计算后验概率的部分,可利用该部分的结果选取 Top 10 的高斯混元用于后端对数似然得分的计算。(2)基于 TMS320C6678 平台的算法优化基于平台的优化主要是通过选择 CCSv5 提供的编译优化参数来实现。通过不断的参数选择、搭配,获得最理想的参数优化方式,提高代码中循环运算的性能,使用软件流水调度技术提高代码的并行执行效率。除此之外,特征提取阶段的 FFT 和 fDWNAP 的矩阵运算等算法采用 DSPlib 中优化的库函数进行替代,利用优化的库函数可以极大

10、地提升代码的运行速度。(3)算法优化前后识别性能对比首先检验 Top 10 算法对系统识别性能的影响。在测试集中模型使用 Top 10 的区分性 Model Pushing,前端特征参数保持不变,在 VC+2010 的环境下测试系统性能。实验所用语料库为实验室采集的电话信道通话语音,含汉语普通话、日语和英语 3 个语种,测试集包含汉语 1 000 段、日语 450 段及英语 750 段,共2 200 段 30 s 的语音和 3 000 段 10 s 的语音(各语种 1 000 段)。系统性能用等错误率 EER(Equal Error Rate)2衡量,实验结果如表 2 所示。由表 2 可以看出

11、,相对于全高斯得分模型,Top 10 得分模型系统性能有所下降,主要因为舍弃了其他得分低的高斯成分,而其中必定包含部分语种区分信息,但舍弃掉的这一部分所含的语种信息有限,所以性能下降在可接受范围之内(相对下降小于 5%)。该优化方法下模块的运算量下降是显而易见的,同样耗时也会大幅下降。(4)算法优化前后系统实时性对比对经算法优化的系统耗时做如下测试,同样以 30 s 的语音(8 000 Hz 采样,帧长 25 ms,帧移 10 ms)为例,用 CCSv5 的环境进行软件仿真得到各模块处理所花的时钟周期数,然后按照 TMS320C6678 芯片的单个内核的工作主频(1.25 GHz)计算得到处理

12、时间,结果如表 3 所示。 由以上分析可以看到,算法优化后的系统耗时由 22.3 s 减少至 1.36 s,下降非常明显,其中下降最多的是 fDWNAP 模块和对数似然得分模块。在整个系统中,经过算法优化, fDWNAP 模块耗时所占比例依旧最大,因此在多核任务并行设计时,需要将该模块的任务进行分解。3 基于 TMS320C6678 的语种识别算法并行设计3.1 模块间通信分析根据语种识别的系统结构,测试过程分为 3 个模块,各模块的算法都已经进行了相应的优化。这些模块相互配合,通过控制信号完成数据流的交互。任务的控制流程主要是模块的执行次序,任务分配在不同核上的模块之间以传递消息的方式实现同

13、步。模块间数据的传递会造成相应的时间延迟,因此,控制流程的设计准则为最大化系统的处理能力。模块间的数据流程主要是数据的传输方向,描述模块与外部数据间的相互关系。相反,最小化模块间的数据通信量则是数据流程的设计准则。语种识别系统算法各模块间控制流程和数据流程的通信示意图如图 2 所示。该图由数据层和控制层两部分构成,控制信号的传输由虚线箭头表示,数据的传输由实线箭头表示。3.2 模块任务的核映射为了充分利用所有内核 CPU 的计算资源以最大限度地提高系统处理速度,根据算法优化前后的系统实时性测试结果及各模块运算量分析,将 fDWNAP 模块的矩阵乘法任务分配到多个核并行执行。因本文的语种识别系统

14、适合于数据流模式的任务并行方式,将整个系统的运算任务适当地分配给各个内核,实现任务级的并行流水。由于 fDWNAP 模块计算复杂度大,制约了整个系统任务级流水的处理速度。为了充分发挥 TMS320C6678 的性能优势,将该模块任务映射到多个核进行处理。该模块首先需要计算特征矢量对应的自适应 GSV;然后通过投影矩阵计算 SVM 特征域的干扰空间,这一部分的大矩阵乘法占据了整个模块的绝大部分运算量;最后还需要将干扰空间返回映射到特征域,并在特征域去除干扰。整个模块 80%以上的运算量都集中在大矩阵的乘法上,故采用将大矩阵拆为小矩阵分配到多个核上并行运算,将其他任务集中在一个核上进行处理。在该模

15、块内还是一个任务级的流水处理方式,矩阵相乘部分是核级相同的并行流水处理方式。4 基于 TMS320C6678 的语种识别算法实现4.1 语种识别算法在 TMS320C6678 中的实现根据设计思路,将本文提出的语种识别算法在 CCSv5 上进行软件仿真。其中,利用 SYS/BIOS8提供核间任务调度,利用 IPC9实现核间同步和通信。启动系统,完成所有核的初始化后,首先调用 IPC_start 函数让各核进入同步等待状态,然后各核上的程序才能开始执行。从共享存储器划出 MSM_IN 和MSM_OUT 2 块存储区,MSM_IN 存储 K-L 变换矩阵和各语种 GMM 模型,MSM_OUT 存储

16、判决输出结果。投影矩阵数据存储在外接 DDR3 存储器中的位置信息事先存在 Core1 中。Core1 将投影矩阵数据分成 5 份,通过 Notify_sendEvent 函数将 5 份数据的地址发送到 Core2、Core3、Core4、Core5 和Core6。Core2、Core3、Core4、Core5 和 Core6 上的子矩阵乘法任务一直处于悬挂状态,直到 Core1 发送过来数据地址,矩阵乘法任务才开始并行执行。各核分别根据数据地址从外接 DDR3 读取数据与 Core1 传递的数据计算干扰因子向量,计算完毕再利用 MessageQ_put 函数将干扰因子向量数据的 Message 写入到Core1 建立的消息队列上。Core1 利用 MessageQ_get 函数从消息队列读取 Message,从 Message 中获取干扰因子向量数据;然后计算补偿后的特征向量;接着Core1 利用 MessageQ_put 函数将补偿的特征向量数据的 Message 写入到 Core7 建立的消息队列上,Core

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号