新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 说话人识别算法的定点DSP实现

说话人识别算法的定点DSP实现

作者:时间:2011-04-12来源:网络收藏


2 系统描述
主要包括特征提取和模式两个方面。MFCC特征参数是从频率域提取语音信号的特征参数,并根据人耳的听觉特性进行降维,既可减小计算复杂度,又能获得良好的效果。MFCC特征提取过程如图3所示。

本文引用地址:http://www.eepw.com.cn/article/150856.htm

c.jpg


人识别建模的方法主要有矢量量化(VQ)、高斯混合模型(GMM)、支持向量基(SVM)、人工神经网络(ANN),以及动态时间规整(DTW)等。综合考虑嵌入式系统上的识别率和计算量,本文采用DTW方法文本相关的人识别。

3 算法和优化
TDSDM642是TI公司推出的芯片,具有性价比高、运算速度快的优点,但是对于浮点运算比较困难,因此在系统时需要对算法进行浮点到定点的移植。同时,为了使上的代码获得最好的性能,还应该根据TDSDM642芯片片内资源的特征进行优化。优化的方法有编译优化、软件流水、内联函数等。通过优化可以明显提高代码执行速度,并减小代码尺寸。
说话人识别当中,计算耗时最长的是MFCC参数的提取和参数模型的训练,本文采用以下优化方法。
3.1 编译器优化
TI公司的CCS编译器可以对C代码进行不同级别的优化,通过打开不同的优化选项,可以针对具体的硬件平台进行不同程度的优化,包括代码的大小、运行的速度等。通常经过CCS优化的程序,运行速度已经相当快,结构设计良好的程序能实现90%的优化。如果还没有达到系统设计的要求,则需要对代码进行手工优化。
3.2 软件流水优化
TDSDM642处理器采用C64x系列芯片,其内部共有8条软件流水线,可以8条指令并行执行,能够大大提高系统性能。恰当地设计软件结构,并配合合适的编译优化选项,可以充分利用芯片内的软件流水优化提高系统性能。CCS的编译优化一般只针对最内层的循环进行流水
优化,并且在循环中代码应该尽量简单,如果循环中含有大量判断、跳转等指令,那么编译出来的软件流水会大打折扣,有时甚至无法进行流水执行指令,这样处理器的性能就不能充分地发挥出来。
3.3 循环展开优化
循环展开是另一种优化程序的方法。为了充分利用芯片内的硬件资源,使尽可能多的指令同时并行执行,可以采用将小循环展开的方式,使片内资源的性能得到最大的发挥。CCS优化编译器通常情况下会根据程序的情况自动展开循环,编程人员也可以采用编译指令或手工方式展开循环优化程序。
3.4 采用内联函数
TI公司的C6000编译器含有大量的内联函数,支持从C语言里直接调用汇编程序,从而大大提高程序的执行速度。系统提供的内联函数还可以支持C64x系列DSP特有指令的执行,例如数据打包相乘等操作,可以进一步提高系统数据处理能力。

4 实验结果
本文在TDSDM642 EVM平台上实现了实时的说话人识别系统。经过对10个人的语音数据进行识别实验,正确率达到90%,可以达到实用水平。通过改进算法和调整参数,可以进一步提高系统识别率,以满足安全系统的更高要求。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭