当前位置:首页 > 工业控制 > 电子设计自动化

摘 要: 目前,基于PC或DSP的系统其处理能力无法满足海量语音信号高速处理需求的增长。本文分析了VQ(矢量量化)搜索算法的硬件实现复杂度,针对说话人识别过程中运算量最大、耗时最长的判决过程,提出了一种基于标签的说话人判决模型实现方案。该设计用FPGA实现,可对多路电话信道说话人进行实时判决识别。
关键词: 说话人识别;VQ;标签;多路;FPGA

说话人识别和指纹识别、虹膜识别一样,属于生物识别技术的一种[1],是通过从语音信号中提取说话人信息来鉴别说话人身份的技术。与其他生物识别技术相比,说话人识别具有更为简便、自然、准确、经济及可扩展性好等众多优势。与语音识别不同,说话人识别不考虑语音中的字词意思,强调说话人的个性。
说话人识别由训练和识别两个阶段构成,图1为一个典型的说话人识别系统结构框图。其中特征提取单元从输入语音中提取出能够反映说话人特征的参数;在训练阶段,用合适的模型来表征这些特征参数,使得模型能够代表该说话人的语音特性,这一阶段一般离线运行;在识别阶段,用已经建立的参考模型对测试语音的特征参数按一定的相似性测度和判决规则进行模式匹配,把相似性得分最高者作为识别结果。


基于成本和灵活性方面的考虑,当前大部分说话人识别系统都是基于计算机软件或DSP来构建的。但对于一些大型应用,如企业的客服中心,为提高服务质量和效率,希望自动识别客户身份;公安部门为调查取证,需要对多路电话进行实时监控或对海量录音电话进行高速处理。对于这些基于电信网的大容量、实时性要求比较高的应用,基于PC或DSP的系统其处理能力越来越不能满足需求的增长。本文针对基于PC或DSP的系统在识别阶段实时性较差的问题,提出了一种基于VQ模型的硬件判决实现结构,并用FPGA实现。
1 VQ模型原理及算法复杂度分析
1.1 VQ模型原理
基于VQ[2]方法的说话人识别系统在训练阶段把每个人的训练语音数据通过标准的聚类过程生成码本C,假设有S个目标说话人,则需要建立S个码本。在选定了失真测度和初始码本后,通常采用LBG[3]算法生成码本。识别时将测试输入语音矢量按此码本进行编码,以量化产生的失真作为判决标准。L帧测试语音矢量{xt},t=1,2,…,L的模板匹配得分z为[4]

其中,测试是以最小匹配得分作为测试语音和模型相似程度的判定依据。
采用VQ模型识别过程并不需要进行时间对齐,从而大大减少了系统的复杂度。对于文本无关的说话人识别,其识别率较高,且判断速度快,对于计算量化失真的搜索过程,目前硬件实现通常采用全搜索算法。
失真测度采用欧式失真,即均方误差,特点是易于硬件处理,且符合语音主观感知的条件,与系统所采用的MFCC参数相匹配(若采用LPC则不适宜用欧式失真)[5]
1.2 算法适应性修改及运算复杂度分析
1.2.1 算法适应性修改
设码本为C={c0,c1,c2,…,cN-1},其中每个码矢为k维矢量,特征参数x也是k维矢量。在欧氏失真的条件下,特征参数x对码矢c的失真计算如下式:

其中e是和码矢相关的固定值,在离线生成码本时计算出来,并作为码本的一部分。由上面的分析可知,求最小距离相当于最大化||x·c||。因此,一帧测试矢量对一个码本的最小距离的搜索过程可等价地描述为矩阵-矢量相乘,即下式:

式中:C为N行k列码本矩阵,x为测试矢量,e为由各码矢的e值组成的列向量。
对于一个码本来讲,每一帧参数的量化误差为:

在进行说话人识别时,假设需要M帧测试矢量,则需比较每个码本对这M帧参数的得分,即各帧的量化误差的累加和。对一个说话人来讲,M值对每个码本都是固定的,因此只需计算max{xi·c+e}的累加和即可,识别过程也由搜索最小值转化为搜索最大值。
根据上面分析可知,测试矢量和码字矢量之间的距离可以通过计算它们之间的内积来实现,而不必用先相减再平方的方式。对硬件实现来讲,每次求距离的过程将减少k次减法的运算量,可带来面积和时序上的优化。
1.2.2 运算复杂度分析
假设码本数为S,码本容量为N,码字为k维矢量,下面对运算复杂度进行分析。
由前面的分析可知,一帧测试矢量对一个码矢的距离计算量为K次乘法,K-1次加法,再加上e,共K次乘加操作,则一帧测试矢量对一个码本(N个码矢)完成失真计算的运算量:N×k次乘累加,N-1次比较。
计算M帧测试矢量对一个码本的距离,共需要:(M×K×k)次乘加,(M×N-1)次比较,另加(M-1)次加操作(完成M个误差的累加)。
对于有S个说话人(S个码本)的系统,定义其VQ搜索复杂度为f,即完成一次说话人判决所需的主要运算量,这里只取乘加运算,则:
f=S×M×N×k (7)
例如,在本文中,目标说话人S=64,码本容量N取64,k取24维,完成一次识别的典型M值为1 024,共需要:f=64×1 024×64×24=100 663 296次乘加运算。
VQ识别时其运算复杂度与上面4个参数成线性关系,对于码本来讲,其存储复杂度与S、N、k这3个参数成线性关系。
2 硬件实现结构
2.1 功能描述
系统采用24维MFCC参数(12维MFCC及12维ΔMFCC),数据位宽为32位。因为整个系统的典型应用为多路电话信道(如E1信道),可完成多路电话语音的同时处理。为了区分当前参数属于哪一话路,采用的方式是给每一帧参数前加上一个标签,也是32位宽,内容包括话路号及格式信息,这都由系统前端处理完成。因此VQ判决模块的实际输入数据可视为25维参数,以FIFO为接口串行输入。输入帧格式如图2。


当某一话路满足判决条件,即输入了足够的参数(如设定1 024帧)时,判决模块将进行判决。判决完成后输出结果有效信号,持续若干个时钟周期,使外部系统读出判决结果。输出的判决结果为32位,高16位为话路号,低16位为码本号,以告知外部控制系统当前输入中哪一路话出现了哪个说话人。
为了进行实时判决,需要在下一帧测试矢量的最后一个数据到来之前完成当前帧的量化工作,即计算出当前帧与每个码本的距离,实现高速的核心是使用并行乘法。这里的“实时”是指从测试数据输入到判决结果输出的过程,只有算法上的延迟,无需在前面存储测试数据。
2.2 实现结构及模块划分
图3为VQ判决模块的内部结构框图,给出了主要的控制信号和数据。其中包括两个接口,一个测试数据输入接口,一个读码本接口,测试数据通过FIFO输入,码本存储于外部RAM。整个架构从功能上可分为接口部分、控制部分和运算部分。下面具体介绍各子模块功能,同时说明整个模块的工作流程。


2.2.1 测试矢量接口
根据FIFO的空标志rdempty,产生读请求信号rdreq,读到的数据首先进入一个24级移位寄存器,并对读进行计数。计数值满24后,发出tag_ready使能,在下一时钟上升沿输出tag至初始化模块。第25个数读进来后,clr_tag有效。该模块接收来自初始化模块的load_tv使能信号,持续一个时钟周期,若load_tv有效,在上升沿时将移位寄存器组的数据读入寄存器组,实现串并转换,将测试矢量送至并行乘单元。功能示意如图4。
2.2.2 码本接口
收到初始化模块的load_code信号后,开始产生地址和读信号,按顺序读出码本数据。内部也有移位寄存器组和数据寄存器组,实现串并转换,同图4所示结构相似。读满一帧24个数之后,产生opr_en使能,在下一时钟沿把数据加载到寄存器组,并行乘法也将在opr_en有效后的第一个时钟沿开始。opr_en作为基本的使能信号,同时提供给下一级的并行乘加模块和运算控制模块。
2.2.3 初始化子模块
初始化状态机如图5所示,分为空闲、初始化和循环三个状态。根据读入的标签数据tag,判断该帧测试数据是否有效,从而决定是否开始运算过程。当接收的clr_tag有效时,表示该帧的最后一个数据已经进入移位寄存器,此时判断tag是否有效。若有效,则提取tag中的话路号,输出至运算控制模块,同时使load_tv、load_code两个信号有效。load_tv为加载测试矢量使能,load_code为加载码本使能。


2.2.4 运算控制模块
对于时分复用的多路电话信道,控制模块首先要根据标签对输入的测试矢量完成分路计数的功能。当id_re-ady有效时,读入话路号slice_id,进行帧计数,对应到说话人识别系统前端,就是对输入话音进行计时。计数结果将决定对当前话路是继续累加还是进行判决。如果计满设定的帧数M,则使判决信号rcg_en为高,输出至累加/判决子模块。
运算控制模块还要为累加和存储器产生地址和写请求信号,地址和写请求也输入到累加/判决子模块。地址的产生依赖于话路号slice_id和码本的个数S。
2.2.5 并行乘加及比较选择模块
并行乘加模块由24个乘法器构成并行乘法阵列,24个乘结果直接输出到5级流水式加法器树,并行乘加结果为||x·c||+e,在以opr_en为基准进行相应延迟后得到的使能信号的作用下,进行流水输出。这里的乘法是有符号数乘法,利用FPGA内部的DSP块实现,在用HDL语言描述时,需指明乘法器输入为有符号数。并行乘法是提高速度的关键,在一个时钟周期内即可完成24次乘法,结果直接相加,加法器树也在使能信号作用下以流水线形式输出。比较选择模块由寄存器和比较器构成,与并行乘加单元共同完成量化功能,并暂存量化误差。
2.2.6 累加/判决模块及缓存结构
累加/判决模块及缓存结构是实现分路判决的关键,上面提到的并行乘加和比较选择模块实现的是矢量量化的功能,其目的是得到量化误差,而接下来则需要对量化误差进行累加,并根据累加和进行判决。累加和缓存采用以码本号为横坐标、以话路号为纵坐标的二维结构,这样做的好处是在进行分路的同时,可以利用地址信息作为判决结果。图6以32路话、64个码本为例,其中坐标为(i,j)的单元格的内容为第i路说话人对第j个码本的距离累加和。


为了防止累加和溢出,该部分缓存利用片内RAM实现,并采用增加位宽的方式,增加16位,即可提供最多65 536帧的误差累加而保证无溢出。利用FPGA可相对自由的定义数据及存储格式来处理溢出问题,这是DSP系统无法比拟的优势之一。当判决使能rcg_en为低时,根据地址值,将到来的数据累加到相应的存储单元;当rcg_en高时,依次读出该话路所对应的行中每个存储单元的值,进行比较,同时保存并更新最大值所对应的地址,作为结果输出。
3 仿真与综合结果
本系统选择的目标器件为Altera公司的StratixII 系列中的EP2S60F1020C3,配置有36个36×36bit硬件乘法器,能对本设计中的并行乘加结构提供足够的支持。设计采用Verilog HDL语言描述,利用QuartusII 7.1自带的综合工具综合,用Modelsim6.1进行仿真。图7为模块联调时部分信号的仿真波形图,显示了初始化完成新一帧开始运算的情况,当加载测试矢量和码本矢量的使能信号load_tv和load_code有效后,运算开始。其中前面处理单元写入FIFO的特征参数为低速数据,判决模块在读满下一帧之前要处理完当前寄存器中的数据。


表1为在32路话、64个码本、时钟约束100M的条件下,利用QuartusII进行综合、布局布线后的主要资源利用率及时序情况。


从资源利用情况来看,因为设计采用了并行乘法,所以消耗最多的是FPGA内置的DSP资源,其次是片上RAM资源,主要用于累加和缓存,当话路数或码本数发生改变时,消耗的RAM资源也会相应变化。整个系统可稳定运行于100MHz时钟,对于一个E1链路、64个码本,完成一帧测试矢量量化误差计算所需时间为64×64×10=40960ns,远小于完成一个2M链路实时判决所需时间0.5ms(16ms内到来32帧测试矢量,即每帧最慢处理时间为0.5ms),留有充足的设计裕量,可扩展性较好。
随着FPGA技术的发展,其在数字信号处理领域的应用范围迅速扩大,使得利用FPGA实现复杂算法成为现实。利用VQ原理进行说话人识别,其硬件结构从功能上可分为两个部分:矢量量化部分和利用量化误差累加和进行判决的部分。其中矢量量化部分的结构可根据应用需求和所选器件的资源情况灵活改变。例如,若器件的内置DSP块资源紧张,则可以减少乘法器及加法器的数量,改为乘累加的形式,用两个以上时钟周期完成一次矢量距离运算。本设计中矢量量化部分和多路判决部分是相对独立的,量化部分结构改变并不影响判决部分;若话路数或码本数发生变化,则只需对累加和缓存大小进行调整即可。
目前,本设计已成功应用于多路实时说话人识别系统,可满足至少1个2M链路、64个说话人集合的闭集判决,并可根据实际情况扩展。
参考文献
[1] 王炳锡.实用语音识别基础[M].北京:国防工业出版社,2005.
[2] 吴乐南.数据压缩[M].北京:电子工业出版社,2000.

[3] LINDE Y,BUZO A,GRAY R M.An Algorithm for Vector Quantizer Design[J].IEEETransactions on Communications,1980,28(1):84-95.
[4] 王炜.文本无关的连续自然语音的说话人识别及基于DSP的实现[D].郑州:解放军信息工程大学,2004.
[5] 王炳锡.语音编码[M].西安:西安电子科技大学出版社,2002:102-104.
[6] [美]PARHI K K著.VLSI数字信号处理系统:设计与实现.陈弘毅译.北京:机械工业出版社,2004.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

开关电源模块所属商标类别为第9类。开关电源模块十大品牌数据由CN10排排榜技术研究部门和CNPP品牌数据研究部门通过资料收集整理,并基于大数据统计及人为根据市场和参数条件变化的分析研究专业测评而得出,是大数据、云计算、数...

关键字: 电路 开关电源 模块

XL5300TOF直接飞行时间(dToF)传感器采用单模块封装设计,集成了单光子雪崩二极管(SPAD)接收阵列以及VCSEL激光发射器。该传感器可对物体进行精确的距离测量而不受物体颜色、反射率和纹理的影响,为市场上的微型...

关键字: 测距模块 模块

系统参数设置窗口用于设置系统整体和各个模块的参数,一般情况下,不需要对整个系统默认参数进行改动设置,只需要对软件的一些常用参数进行设置,比如光标设置,封装库指定等。已达到使软件快速高效地配置资源的目的,从而更高效地使用软...

关键字: 参数设置 模块 软件

ARM处理器是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。全称为Advanced RISC Machine。ARM处理器本身是32位设计,但也配备16位指令集,一般来讲比等价32位代码节省达35%,却...

关键字: 米家 模块 机器人

德国布伦瑞克工业大学空间系统研究所Institute of Space Systems(IRAS)与德国亚琛工业大学结构力学与轻量化设计研究所Institute of Structural Mechanics and L...

关键字: 机械臂 模块

摘要:该项目是基于当今互联网技术构建的、基于高校教学内容的服务平台,旨在建立一个教学资源共享与师生互相交流的平台,从而减轻教师在传统教学中的工作负担,同时也为学生提供更广阔的学习空间。介绍了教学服务平台的主要建设内容以及...

关键字: Dreamweaver 教学资源 MySQL 模块

PCF8591 ADC 模数转换模块使用

关键字: 模数 模块

ANSYS是世界上著名的大型通用有限元计算软件,它包括热、电、磁、流体和结构等诸多模块,具有强大的求解器和前、后处理功能,为我们解决复杂、庞大的工程项目和致力于高水平的科研攻关提供了一个优良的工作环境,更使我们从繁琐、单...

关键字: ansys 模块

摘要:随着社会的不断进步,小区的物业管理现代化水平与群众的关系日益密切。通过对小区物业管理系统的功能目标和功能需求进行分析,给出了在B/S模式基础上,通过.NET平台并采用ADO.NET技术来开发小区物业管理信息系统的具...

关键字: 小区物业管理 BS架构 ADO.NET技术 模块

中国 北京,2021年9月7日——移动应用、基础设施与航空航天、国防应用中 RF 解决方案的领先供应商 Qorvo®, Inc.宣布,Murata 采用Qorvo IC推出了小型超宽带技术 (UWB) 模块,尺寸仅为 1...

关键字: Qorvo Murata UWB 模块
关闭
关闭