Profile - CN081


CN081

基于SOPC的关键词识别电视换台控制器

五邑大学
信息工程学院


Finals


[print]


Project

Name of Project:基于SOPC的关键词识别电视换台控制器

Contact Information

Name:余晓鹏
E-Mail:xp861025@126.com
Telephone:0750-3294972
Mobile Phone:13631842568
Mailing Address:广东省江门市蓬江区东城村22号五邑大学

Contest Advisor

Name:张歆奕
E-Mail:bill3203@163.com
Telephone:13902880509

Members

No.NameE-MailEnglish Name
1余晓鹏xp861025@126.comyu xiao peng
2王光耀wywywgy@163.comwang guang yao
3程维好cwh19850912@163.comcheng wei hao

Project Paper - view as Preliminary(2011/08/29), Final(2011/08/29), Draft, Latest

1. 设计概述 (Preliminary Paper)

现代有线数字电视在频道选择上越来越丰富,少则四五十个台,多则上百,因此用户在选择感兴趣的台时就遇到一个麻烦,如果不知道这个台的确切位置的话,就可能面临好几十次的转台,例如我希望转个中央体育台,但我不知道中央体育在电视上对应的是几号台,因此我就要一个台一个台地去尝试,直到转到中央体育为止。本作品就是针对这种情况而设计的,它可以对关键词进行训练,并且学习红外信号,从而可以通过识别用户说出的关键词(电视台名称)来发送相应的红外信号给电视机,这样就方便的转到用户需要的台。除此之外一切符合红外标准的电器都可以通过本作品进行控制。

       作品采用DE2开发平台来完成设计,DE2开发板是友晶科技公司生产的一款相当优秀的FPGA开发板,丰富的板上资源和接口足以应付很多复杂的设计。本作品充分利用了板子上的资源,分别是LCDLEDFLASHSRAMSDRAMWM8731音频处理芯片,IrDA红外收发器,多个拨位开关和按键,还有音频的输入输出接口,通过以上资源和接口结合板子上的Cyclone 2 FPGA芯片完成整个作品的设计。

(Revision: 4 / 2011-08-28 23:55:30)

2. 功能描述 (Final Project Paper)

  

本作品是采用先进的SOPC技术设计的一款基于关键词识别的控制系统。系统的功能主要有以下几个方面:
一、    关键词建模。
系统对关键词的建模是一种组合的方式,以两个字的词为主,每个词系统分配一个ID用于词的组合,多于两个字的关键词将其拆开分别建模,例如“中央体育”,将分别对“中央”和“体育”两个关键词建模。这样建模的方法充分利用了电视台名称的一些语法规则,例如把“体育”,“中央”,“广东”,“上海”,“卫视”这几个词建好模,那么就能识别“广东体育”,“广东卫视”,“上海体育”,“上海卫视”,“中央体育”等若干个关键词,这样做的好处是节省存储空间,而且也相对提高了识别效果,因为两个字的识别比四个字的识别效率要好。
根据要求把需要建模的电视台名称变成关键词的组合形式进行关键词建模。某个关键词建模时,首先要录入此关键词,通过关键词识别来判断是否此关键词已存在,如果识别结果为不存在,则用户开始输入此关键词的训练样本利用仿生模式识别的方法进行关键词建模。如果识别结果为存在,则播放相应的识别结果(即识别的是什么关键词)的语音信息,如果用户要建模的关键词与语音信息匹配,则说明已存在此关键词的模板,然后跳过此关键词的建模过程,如果不匹配,则重新回到关键词的录入阶段,直到信息匹配或者识别结果为模板不存在,信息匹配则跳过建模,模板不存在则录入训练样本进行关键词建模。当需要建模的电视台名称的关键词组合都完成之后,系统顺序记下各个词的ID,包括跳过建模过程的关键词的ID。这个ID序列就表征着这个电视台的名称。
二、    关键词识别
识别关键词,就是识别电视台名称。在关键词识别阶段系统通过匹配算法,在用户录入的语音信息识别出是否存在关键词,当关键词出现时系统记下其对应的ID序列,最后根据ID序列来判断对应的电视台名称是否出现。
三、    红外信号的学习
    当对一个电视台的名称建模完毕之后,系统将提示用户输入对应的红外信号,而这个红外信号将通过DE2上的红外接收器接收,然后保存起来提供控制换台时使用。
四、    根据关键词识别的结果控制电视切换到对应的台。
这个功能其实就是利用了DE2上的红外发射器实现。当在关键词识别阶段识别出对应的电视台名称的时候,系统就将其对应的在红外学习阶段保存的红外信号发射出去,实现换台控制。
五、    用户管理
    系统上电之后会提示用户登陆,用户凭借已有的ID或新注册的ID登陆系统,因为在一般情况下很可能会被多个用户使用,针对每个用户,系统都会保存起对应的模板数据,这样不但方便管理,而且会相对的提高识别效果。
(Revision: 4 / 2011-08-28 23:32:17)

3. 性能参数 (Final Project Paper)

 

 
一.关键词的识别率与误识率
不同阈值对识别效果影响比较大。表1、表2为在Matlab中,每个词的训练样本数为3,在不同的阈值情况下对100个测试样本的识别效果。
          表1 Matlab中不同阈值的识别率比较
 
 
 
 
 
 
                  表2 不同阈值的误识率比较
 
 
由表12可看出,当阈值为130的时候识别率和误识率相对比较好,表4就是在实际作品中测试出来的识别率,测试样本为20个,每个词的训练样本数为3
            表作品实际测试识别率
电视台
识别率
江门教育
90%
江门公共
90%
中央体育
95%
广东体育
85%
中央四台
85%
江门综合
80%
 
二.识别速度
系统在关键词识别方面能很好的达到实时处理。在关键词的识别算法中,把计算时间较长的部分和重复复用的部分都以硬件的形式挂在AVALON总线上供NIOS调用,这两个部分分别是语音数据的功率谱计算部分和在识别中求12维特征空间中一点到某一线段距离的部分。
功率谱计算部分是采用基于Goertzel算法的256点的浮点DFT,计算出的DFT再求出幅值的平方,从而计算出功率谱。利用timestamp检查这部分的运行时间大约需要0.46ms,从数据的传输开始到转换后的256点数据接收完毕,其中包括了数据的浮点转换。
另外一个部分,如果利用软件来处理的话,耗时大概是110微秒,而由于识别的时候在一帧的处理时间里对这模块的调用可能达到几百次,因此这样的处理速度不能达到实时要求,做成硬件模块后,速度达到了11.7微秒,速度大约是原来的10倍。

        系统的语音帧为256点,帧移为128,采样频率为8k,所以帧与帧之间相隔16ms。实际测试中,在10个关键词模板情况下,说出给定关键词后,大约是4ms的时间系统就能给出识别结果。由上所述,可以看出利用FPGA构造的高速数据处理单元有效地实现算法的实时处理。 

(Revision: 9 / 2011-08-28 23:59:18)

4. 设计结构 (Preliminary Paper)

 

一、总体设计框图
1 系统总体框图
系统总体框图如图1所示,其中大方框内为在DE2开发板上用到的各种资源和接口,包括SDRAMFLASH等,其中最主要的是型号为Cyclone 2 EP2C35FPGA芯片,除了开发板外还需要外接麦克风和扬声器来负责语音信号的录入与播放,而系统也通过接收来自遥控器的红外信号来进行红外信号的学习,并发射红外信号控制电视换台。如上所述系统的实现是在DE2开发板的基础上,而实际操作中可以做成一个模块作为电视的一部分嵌入电视机里头。
二、系统硬件框图
  系统硬件框图如图2所示,其中大方框内为芯片内的大体硬件结构,方框外为外围电路。其中AUDIO ControllerIrDA ControllerPow_Spectrum InterfacePoint_Line_D Interface为自定义组件。AUDIO Controller是芯片内部与音频处理芯片的接口,IrDA Controller则是与外部红外收发器的接口,Pow_Spectrum Interface为功率谱计算单元,Point_Line_D Interface为算法中求12维空间中一点到一线段距离的硬件加速处理单元。
 
2系统硬件框图
      
三、系统软件流程
软件流程如图3所示,系统上电后用户选择用户模板来初始化系统,然后判断工作模式,跟据用户选择不同的模式进入不同的处理过程,包括建模、识别、数据库清零三种模式。
3系统软件流程
(Revision: 8 / 2011-08-28 23:47:44)

5. 设计方法 (Final Project Paper)

 

设计总体主要分三个部分,分别是关键词识别算法部分、红外收发部分、语音信号采集。
一.关键词算法部分
本系统采用的是基于仿生模式识别的关键词识别算法,而传统的关键词识别算法主要是基于HMMDTW等。仿生模式识别是王守觉院士提出的一种全新的模式识别理论,在传统模式识别中,人们考虑模式识别问题的主要出发点是若干类别的最佳划分问题,而仿生模式识别的基本出发点是把模式识别问题看成对各样模式认识的过程,而不是划分。本作品采用的基于仿生模式识别的关键词算法有两个比较突出的特点:一是能在训练样本较少的情况上得到较好的识别效果,这个很适合用来实现本作品,因为作品是针对一般用户的在一般情况下使用,少量的训练样本更符合实际情况。二是在为某个关键词建模的时候所需要的训练样本是孤立词形式,而一般关键词算法需要在一段话中经过分析然后截取关键词所在的语音段为训练样本。本算法包括关键词的建模和识别两部分。
1.     关键词建模
关键词建模可分三个部分:1)录入训练样本并进行端点检测,2)利用仿生模式识别的超香肠模型构建主路径,3)其他的样本与主路径匹配,生成主路径的分支。
录入训练样本并进行端点检测。每录入一次有效样本,系统都会对其进行端点检测,端点检测采用的是短时平均过门限率与短时能量两个参数结合的判决方法,当语音帧短时能量大于设定的高能量阈值时判断为有效语音帧,而低于低能量阈值则非语音帧,而介于两者之间的再利用其平均过门限率进行判断,高于过门限率阈值的为有效语音帧,否则为非语音帧。系统采用的端点检测方法是分别从录入语音的首帧和末帧进行搜索,从首帧开始找到的第一个有效语音帧为语音的开始,从末帧开始往回搜到的第一个有效语音帧为结束帧,显然这种检测方法不具备实时性,但因为处于训练阶段对实时性要求不高,因此本系统采用这种端点检测方法。
构造主路径。首先求出所有训练样本中语音长度最长的,然后利用超香肠模型进行建模,具体建模方法为:将此样本经端点检测后映射到特征空间的各个点根据时间先后编上序号。第一和第二个点作为第一根香肠的端点,然后其他的点与它求距离,将在其覆盖范围内的点去掉,接着将剩下的点中序号最小点的与第二个点作为第三根香肠的两个端点,与上一步一样将其覆盖范围内的点去掉,再与剩下的序号最低的点构成下一个香肠,直到所有的点计算完毕,每根香肠也按其顺序先后编上序号。至此形成了主路径。
生成主路径分支。其他的样本中每点与已建好香肠匹配,如果在某跟香肠覆盖范围内则去掉这点,如果在所有香肠的覆盖范围外,就求出与其最近的一根香肠,并与这根香肠中距离较短的香肠端点形成一根新的香肠,生成的新的香肠编号跟与其相连的香肠一样,直到所有样本的所有点求解完毕,这样就形成了类似于树一样的模板,包括主路径和各香肠分支
系统采用超香肠模型来进行仿生模式识别建模,采用超香肠模型的原因是识别效果比较好和复杂度相对低,经MATLAB仿真,超香肠比超三角的识别效果要好,而且复杂度要低。在建模和识别过程中要确定某点是否在这个超香肠或者超三角的覆盖范围里就是要求欧式距离,在超香肠模型中主要是求点到线段的距离,而在超三角中主要是求点到三角面的距离,后者的复杂度比前者高,因为这部分对时间要求比较高,复杂度高很可能执行时间会长一些,因此经过分析后,系统采用了超香肠模型。
以上建模方法基本出发点是:假设相同的关键词会经历大致相同的路径,例如由上述建模方法得出的超香肠树的香肠编号为1~9,而相同的关键词可以顺序经历134689,也可以是24568等等,即不一定要覆盖1~9所有的路径,但会顺序经历其中的几个,图4为一个关键词模板路径的举例:1~9为主路径,在主路径上的分支与其最接近的一根香肠相同编号。
4 关键词模板路径
2.关键词识别
当输入的语音流按照给定的顺序经历上述关键词模型的模板中的给定的路径(即关键词建模中所说基本出发点),加上能达到各种参数的约束条件,那么就判定对应的关键词出现。识别出的每个关键词对应一个ID,最后根据ID序列找出对应电视台。
 
.红外信号的收发
DE2开发板拥有一个115.2Kb/s 的红外收发器。在FPGA内部建立可挂在AVALON总线上的控制模块。这个模块控制红外收发器实现接收和发送。红外收发控制模块代码有两部分组成:红外信号接收解码,红外信号编码发送。红外信号的编解码模块是以NEC的红外标准来编写的,因为大部分电视遥控信号都遵循此标准。
 
.语音信号采集
语音信号的采集是通过WM8731专用语音芯片完成的,而在芯片内部,在AVALON总线上挂上一个WM8731接口,通过NIOS来控制语音的采集,WM8731接口组件采用的是友晶科技在DE2-70上已设计好的组件,然后将其移植到比赛用的DE2上。
 
作品采用的关键词算法中有两个部分对处理速度要求比较高,为了实现系统的实时处理,将这两个部分设计成硬件模块,实现软硬件协同设计。这两个部分分别是功率谱计算部分和12维特征空间中一点到一线段距离的部分。
自定义功率谱计算组件。Goertzel算法的主要公式如下:
 由于求功率谱需要的只是幅度信息因此我们只需要用到公式13,仔细分析公式1可以看出每当接收一次x(n),可以设置k=0~255来计算出那样当最后一个x(n)到达时只需要通过相同的周期就可以计算出最终的,然后再利用公式3求出功率谱,因此此模块是以DFT为主的求功率谱的模块。基于Goertzel算法功率谱计算单元结构如下图5所示,模块把256点的计算分成4个块,每个块计算64点,rom模块存放的是公式1中的系数,因为对于每个k,系数是一定的,以查找表的方式能有效地提高计算速度,模块中的浮点加法,减法,乘法器都是采用10流水线级的结构,一个x(n)的到来经过20个周期得出第一个结果,64点计算完是84个周期,而在Avalon总线上每个x(n)的间隔大约有100个周期(因为需要对数据进行转换才能发到总线上,所以两数据间的间隔较大),因此模块完全可以利用这个时间间隔来完成所有计算。最后一点到来的时候经过84个周期出来结果再通过求模的模块得出功率谱。从256点数据的发送到256点数据的接收整个过程大约需要0.46ms,与FFT IP CORE比较并没有速度上的劣势,这是由于模块能实现对每点数据实时处理,并不需要接收完256点后再处理。硬件加速后一帧MFCC的处理时间是2.6ms左右。
 
   
5 基于Goertzel算法的功率谱计算硬件模块结构
 
12MFCC特征参数到一根超香肠的距离是这样定义的如图4所示,如果点O的在直线AB的垂足O’在线段AB上,则所求距离为OO’,如果在线段AB外则取OAOB中较小的那个。经检测处理时间为11.7微秒,有这些硬件模块加上NIOS中的算法部分就构成了关键词的算法
6 超香肠模型的点O到线段AB的距离

由以上可知道,系统包括若干个个自定义组件,与NIOS结合起来充分体现了软硬件协同设计的概念,利用了NIOS负责算法和各种控制信号的调度,而其他组件有的作为接口负责数据的传输,有的作为高速数据处理单元对实时性要求高的地方进行硬件加速,形成了一个软硬结合的片上系统。

(Revision: 7 / 2011-08-28 23:54:05)

6. 设计特点 (Preliminary Paper)

 

系统的设计有以下几个特点:
1.   算法特点。系统采用基于仿生模式识别的关键词识别算法,它是一种基于“认识”的模式识别,在传统模式识别中,人们考虑模式识别问题的主要出发点是若干类别的最佳划分问题,而仿生模式识别的基本出发点是把模式识别问题看成对各样模式认识的过程,而不是划分。系统采用的算法有两个主要特点:1)训练阶段只需要关键词的孤立词形式,而一般的关键词算法则需要在一个语音段中截取关键词部分作为训练样本。2)在少量训练样本的情况下能达到较好的效果。
2.   识别时利用关键词的组合的方式来识别出电视台,大大节省了存储空间并且对系统的识别效果有一定的帮助。而且利用关键词识别取代孤立词识别具有更好的鲁棒性。
3.   算法的实现采用软硬件协同设计的方法,把计算速度要求较高的部分用硬件实现,从而达到实时处理效果。
4.   算法实现时利用FPGA独有的并行性。例如在功率谱计算模块中利用四个相同的处理单元来并行处理数据从而有效地提高处理速度。
4.作品使用方便,具有一定的新颖性和实用性
(Revision: 5 / 2011-08-28 23:39:13)

7. 总结 (Final Project Paper)

   

通过这次比赛我对FPGASOPC等有了更深入的了解。
FPGA硬件思想,要设计一个硬件模块必须开始时头脑要有一个大概电路的结构,然后用硬件语言描述出来,实现同一个功能可以有不同的硬件结构,不同的结构消耗的硬件资源和处理时间不一样,通常这两个参数是成反比的,消耗的硬件资源越多一般会获得更高的处理速度。同时Verilog语言用得好,可以缩减电路面积。
 SOPC的软硬结合的思想,针对硬件描述语言描述复杂算法比较困难的特点,嵌入一个CPU软核刚好形成互补,从而可以将复杂算法部分交给CPU处理,而对数据处理速度要求高的算法部分可以写成硬件模块挂在总线上,如此给设计者带来了相当大的灵活性,而且各种丰富的IP资源让设计者缩短了开发时间,例如本系统中用到的浮点计算单元,在某些地方用到的FIFO,等等都充分地利用了IP资源。通过自定义组件,更加了解AVALON各种接口的作用和使用方法,从而可以根据不用的接口要求设计出符合其要求的组件。
各种仿真分析工具的使用,在验证系统功能的过程中,使用了QuartusII自带的仿真工具和signaltap逻辑分析仪,其中用得最多的就是signal逻辑分析仪了,这一工具的使用大大地方便了设计者查看芯片内部信号,像在本系统的各个自定义组件的仿真测试方面就发挥了极其重要的作用,通过分析组件中各个信号的时序来解决问题,最终实现其功能。
最后对仿生模式识别算法的一些想法,仿生模式识别的基本思想确实是一种区别于传统的思想,基于“认识”更加能区分各种事物的特征,从而达到更好的效果,我相信,提出更好的几何模型和更加有效地建模方法将会使仿生模式识别在模式识别领域发挥更大的作用。
(Revision: 5 / 2011-08-29 00:00:10)