3G 手机语音识别应用中DSP的选择策略
成本、性能和效率的折衷
DSP的速度越快,就越便于利用现代的HMM技术,如信道匹配和声域匹配技术,因此,理论上讲,DSP速度越快,ASR系统的性能就越好。然而,并行处理方法在提高ASR系统吞吐量中也扮演着重要角色。例如,一个具有4 ALU(算术逻辑单元)的200MHzDSP比只有1 ALU但运行于400MHz的DSP具有更高的吞吐量。根据具体应用的不同,2到3个单ALU DSP提供的性能与一个具有4 ALU的DSP相仿。相对一个具有4 ALU的DSP处理器方案来说,多个单ALU的DSP会提高手机的成本,因此对于适销对路产品要充分权衡成本与性能之间的折衷。
总之,当比较一个600MHz的单ALU DSP和一个300MHz但有4 ALU的DSP时,设计工程师始终应把握的最终目标是高效的运算吞吐量,具有多个ALU的DSP也许是最好的解决方案。
性能与功耗
顶级性能的DSP采用并行结构来获得最佳的性能空间。有个著名的平衡型并行结构StarCore SC140就采用了指令级并行结构,它具有4个并行ALU以及一个称为变长执行集(VLES)的改进型甚长指令字模型。VLES的优点在于它支持在内存中完成高效的指令调度、执行和打包。它能通过一个指令队列对前端提供反馈,并通过调度器控制后端,因此除非需要执行计算,VLES处理一般不消耗功率。
在并行VLES结构中,一些特殊指令需要成组以避免空操作(Nop),由于减少了时钟周期,处理时间也相应减少了。比较而言,在甚长指令字计算中,所有执行步骤都必须按顺序排列,因此在一个8字节的执行集甚至是1字节数据时,系统就需要7个占位符(placeholder)或Nop。
由于VLES结构不需要Nop,VLES设计中的复杂性从硬件或编程器转移到了编译器。由于每个周期都充满了数据,因此每个周期就具有更高的效率,从而也提高了电源与内存的使用效率。
电源管理
由于ASR系统需要连续处理语音数据,会使DSP成为消耗电能的主要部件,因此高效利用电源对设备成功走向市场至关重要。
在高性能DSP中,选择16位指令集而非32位指令集能提高代码密度,进一步减少对内存、功耗和体积的需求,一部分原因是由于更短的16位指令集可以减少寄存器和数据线数量。例如在ASR应用中,存储的词汇量可能达到2.5MB(对于1024簇的三音素状态,5个合成和39个参数来说,声学HMM状态模型是400KB;一本有1万个三态三音素代码本是60KB;三音素状态转移概率矩阵是500KB;一个具有40个杂乱态2万字的双字母组是1.6MB)。如果DSP具有高的代码密度,能为ASR系统提供固定数量的存储器,那么就可以获得更好更大的声学和语言模型。
片上和片外存储器
对于ASR系统中使用的DSP来说,有效地利用片上和片外存储器是另外一个重要的课题。由于ASR系统需要大量的存储空间用于词汇与模式识别数据的存储,一个灵活的存储结构在这里将显得特别重要。例如,一个具备统一寻址存储器的DSP能使设计工程师很好地平衡程序和数据,还能平衡系统算法的复杂性与声学和语言模型的大小以获得最优化的性能。
例如,如果具有100条命令的识别系统模型只有100kB的片上系统内存,总共内存空间需求是240kB,那么采用二次识别方法能更有效地利用片上快速存储器。
第一次(原始识别阶段)只使用39个参数中的13个MFCC,因此模型大小为80kB,可以载入片上内存。原始识别阶段的候选命令数量要比原来的100个少,比方说是33个命令,但可信度高达99.9%。
第二次(精确识别阶段)把33个候选命令的39个参数作为模型使用,大小是80kB,因此又可以把该模型装载入片上内存。这种二次识别方法会引入一些延时,但延时非常小,大约只有10ms,说话人一般不会觉察到。
统一寻址存储器能够支持较大的词汇库或命令集,还能支持较大的HMM模型或神经网络系数,因此能简单化实时任务。例如为ASR系统的程序和数据准备100kB的存储器,设计工程师就能平衡好算法复杂性与词汇量或命令集大小之间的关系。如果程序要占50kB,那么数据只能是50kB。如果允许降低识别精度而将程序代码压缩到20kB,那么命令集就能用到80kB,也就是增加了词汇库容量。
在ASR系统中,高度并行化、高代码密度和有效利用存储器等优点还能使DSP完成语音识别以外的任务。在大多数情况下,设计工程师可以将部分计算资源分配给语音识别之用,而将剩余资源用来执行信道处理系统中所需的其它任务。
评论