新闻中心

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

DSP嵌入式说话人识别系统的设计与实现

作者: 时间:2009-12-28 来源:网络 收藏

语音处理采用TI公司的TMS320C6713芯片,该芯片浮点运算,最高时钟频率225 MHz,使用该芯片外部存储器接口可对外部存储器(SDRAM)数据传输和程序存储器(FLASH ROM)进行程序读写;依靠JTAG接口电路通过仿真器进行仿真调试,与主机数据交换;通过片内外设McBSP完成串行数据的接收和发送,实现对音频处理模块的控制等工作。
FLASH ROM最大可提供512 KB空间,通常为前256 KB可用。SDRAM最大容量为16 MB,为该提供较大的数据存储空间。CPLD为存储器的扩展实现逻辑编码。电源为TPS54310芯片,可为提供3.3 V和1.26 V两种电压。
1.2 选择
要训练10个人的语音,每个人的语音存放在FLASH ROM的不同位置。在训练的开始阶段,系统需确定当前训练者的身份,以便对训练完成后者模型参数存储位置有准确的判断。对当前训练者身份的选择由系统中的4个Switch实现。若把每个Switch的开关两种状态看成是二进制数的0,1,则最终可形成16种组合,代表16个人。该系统选取前10个组合。
1.3 AIC23语音采集
考虑到系统的实用性,语音的输入由mic in接口输入。语音采集若设为双声道,则采集的左右声道数据差别不大,对没有太大的帮助,而且采集到的语音会占用太大存储器空间,故采用单声道采样;对于采样精度要求,TLV320AIC23可实现8~96 kHz,16 b,20 b,24 b,32 b,的不同采样,随着采样频率的提高,采样间隔将相应的缩短,要求更大的内存空间和更长的处理时间,实验表明,采样率由16 kHz下降到8 kHz,所造成的率的微乎其微,但是可以节省50%的动态存储空间,并可减少大量的运算。对于采样位数,16 b精度已能满足该系统要求,故采样精度设为8 kHz,16 b采样。
1.4 数据的存储
由TLV320AIC23获得的语音信号的数据,只有赋值给相应的数组,才能在接下来的算法中有所应用。为此在SDRAM中定义一片数组存储区域。对于数组大小及类型的选择基于以下两点:
(1)数组大小选择。该系统算法中包含训练和两个内容。语音信号的训练需要大量的数据才能准确的提取语音的特征参量。该系统采用8 kHz采样率的10 s的语音信号,所需的数组空间大小为80 000个数据单位;语音信号的识别要求快速性,该系统采用时间较短的8 kHz 3 s语音信号,所需数组空间大小为30 000个数据单位,为了减少数据空间,系统设定为与训练数组共用前30 000个数据单位的空间。
(2)数组类型为浮点型,由于设定的采样格式是16 b采样,而采样后数据类型是Uint32,语音数据位于低16位,所以赋值过程中取低16位数据赋值给数组。
1.5 模型参数存入与参数调出
将模型参数存入FLASH ROM的目的是保存训练所得的参数,以供识别时调用。训练可能用于多次识别,或者训练和识别可能处于不同的时间地点,所以,保存参数的存储器选定为具有掉电时数据不丢失特点的FLASH ROM。每个者语音参数代表一个说话者身份,所以每个说话者模型参数应存储在FLASHROM中一个确定的位置。为此,该系统在FLASHROM中分配了10块的区域,每个说话者模型参数占有一块特定的区域。
在FLASH ROM中存人数据格式为32 b无符号整数。而训练得到的是浮点型的数据。这就要求在数据存入之前将浮点数转换为32 b无符号类型的整数,假设要转换的数据为float x[M][N]则转换方法如下:
(1)x[M][N]归一化;
(2)对x[M][N]乘以一常数K得到有符号整型的数组y[M][N],即:
y[M][N]=x[M][N]×K (1)
(3)屏蔽第32位符号位,得到32 b无符号类型的整数数组。方法如下:
z[i][j]=y[i][j]0x7FFFFFFF (2)
(4)将z[i][j]存入FLASH ROM。
通过统计实验数据发现归一化后数据的范围为10-5~1,故K选择为108,既可以实现较大精度的转化,又不会影响第31位的数值。转换得到的有符号整型数组y[M][N]范围为-108~108,在存储器中正数为原码表示,负数为补码表示,通过计算发现,该范围的正数第31位为0,负数第31位为1,所以,上述第(3)步,将有符号数转换为无符号数后,数值的正负改为使用第31位标识。在识别阶段,要将说话者的GMM参数依次从FLASH ROM中读出,逐个与待识别者语音的MFCC参数比较,求最大似然值。参数调出过程与以上存入过程相反。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭