基于SOPC技术的语音识别系统.doc_第1页
基于SOPC技术的语音识别系统.doc_第2页
基于SOPC技术的语音识别系统.doc_第3页
基于SOPC技术的语音识别系统.doc_第4页
基于SOPC技术的语音识别系统.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2010 届毕业生届毕业生 毕业论文毕业论文 题题 目目: 基于基于 SOPC 技术的语音识别系统技术的语音识别系统 院系名称:院系名称: 信息科学与工程信息科学与工程 专业班级:专业班级: 电科电科 0601 学生姓名:学生姓名: 张文峰张文峰 学学 号:号: 20064360103 指导教师:指导教师: 张庆辉张庆辉 教师职称:教师职称: 副教授副教授 年年 月月 日日 摘 要 近年来,语音识别研究大部分集中在算法设计和改进等方面,而随着半导体技术的 高速发展,集成电路规模的不断增大与各种研发技术水平的不断提高,新的硬件平台的 推出,语音识别实现平台有了更多的选择。语音识别技术在与 DSP、FPGA、ASIC 等器 件为平台的嵌入式系统结合后,逐渐向实用化、小型化方向发展。 本文首先在对语音信号的时域处理方法进行研究的基础上,对常用特征参数提取原 理和特点进行研究,其中,重点研究了美尔频率倒谱系数的原理和特点,设计和实现了 提取步骤。然后,在对主流模式匹配方法的研究基础上,重点研究了矢量量化的方法, 并在介绍了矢量量化的原理和失真测度的基础上,研究矢量量化器最优码本设计的算法 遗传算法。接着,对本系统所使用的基于SOPC的硬件平台进行了设计,并设计和实现 了硬件模块与软件系统的接口。最后,设计了一套以LPC为特征参数、以遗传算法为码 本设计算法、以矢量量化为模式匹配方法的说话人识别算法,在基于FPGA的嵌入式平台 上实现,并对算法进行一系列的软、硬件优化,同时,提出了一种新的失真距离计算方 法一分段距离均值法,通过在实际硬件平台上的实验,得出了在增大各码本失真距离间 距方面有着较好效果的结论。本系统获得了很高的识别率和拒识率,并具有运算速度快、 差错率低、系统硬件要求较低等优点,具备了一定的实用化能力。 关键词: FPGA,SOPC,语音识别,语音采集,LPC,IP 核 Title Speech Recognition System Based on SOPC Technology Abstract In the recent years,research for speech recognition mostly focuses on algorithm design and improvement. With the rapid development of semiconductor technology, scale with integrated circuit continuously enlarging, and level of all kinds of development technique continuously improving, new hardware platform protruding, there are a lot of selections on speech recognition platform. Combination with DSP、FPGA、ASIC devices which are embedded systems, speech recognition research gradually looks toward to practical development and miniaturization. Firstly, in the time domain speech signal processing method on the basis of common principles and characteristics of feature extraction research, which focuses on the Mel Frequency Cepstral Coefficients principles and characteristics, design and implementation of the extraction step. Then, in the mainstream mode matching method based on the research, focusing on the vector quantization method, and introduces the theory and vector quantization distortion measure based on vector quantization of the optimal codebook design algorithm - Genetic Algorithm. Then, this system uses a hardware platform based SOPC design, and design and implementation of hardware modules and software interfaces. Finally, the design of a set of LPC as feature parameters, the genetic algorithm to code the design algorithm to vector quantization method for the pattern matching algorithm for speaker recognition, FPGA-based embedded platform to achieve, and a series of algorithms software and hardware optimization, also proposed a new method of distortion from the distance of a sub-average method, by the actual hardware platform experiments, increasing the code in the space of this distortion has a better distance effect conclusions. The system received high recognition rate and rejection rate, and with computing speed, error rate is low, the advantages of low hardware requirements, with some of the practical capabilities. Keywords :FPGA,SOPC,speech recognition,speech acquisition,LPC, IP core 目 录 摘摘 要要.I ABSTRACT.II 1 绪绪论论 .1 1.1 课题研究背景及意义.1 1.2 课题研究的现状.2 1.3 本课题的主要研究内容及安排 .4 2 SOPC 技术与语音识别系统概述技术与语音识别系统概述5 2.1 SOPC 技术概述 5 2.2 语音识别原理及系统概述 .6 3 基于基于 SOPC 技术与系统软硬件开发平台简介技术与系统软硬件开发平台简介.8 3.1 基于 FPGA 的 SOPC 技术.8 3.2 FPGA 基本开发流程.10 4 系统整体构建与功能分析系统整体构建与功能分析18 4.1 系统整体框架设计.18 4.2 系统软件主要算法流程设计 .19 5 基于基于 FPGA 语音识别系统各功能模块设计与仿真语音识别系统各功能模块设计与仿真.20 5.1 语音采集与预处理模块 .20 5.2 语音数据的 LPC 特征提取 27 5.3 DTW 识别模块29 6 基于基于 FPGA 语音识别系统整体实现语音识别系统整体实现.31 6.1 系统整体实现.31 6.2 性能参数.33 6.3 系统语音识别结果.35 7 总结与展望总结与展望.36 7.1 工作总结.36 7.2 系统展望.37 参参 考考 文文 献献.40 1 绪绪论论 1.1 课题研究背景及意义课题研究背景及意义 1.1.1 选题的背景 语音识别起源于20 世纪50 年代A T 数字化预处理包括语音信号采样、反混叠带通滤波、去除个体发音差异和设备、环 境引起的噪声影响等; 特征提取模块用于提取语音中反映本质特征的声学参数, 常 用的特征有短时平均幅度、短时平均跨零率、线性预测系数、基音频率、倒谱和共 振峰等。在训练阶段, 将特征参数进行一定的处理后, 为每个词条建立一个模型, 保存为模板库。在识别阶段, 语音信号经过相同的通道得到语音特征参数, 生成测 试模板, 与参考模板进行匹配, 基于一定的判别规则(例如构词规则、语法规则、语 义规则等) 将匹配分数最高的参考模板作为识别结果。同时在模式匹配和判别时还 可以在很多专家的帮助下, 提高识别的准确率。 2.2.2 语音识别系统分类和组成 语音识别系统会有不同的系统设计和实现,因而会有不同的应用范围及限制。 它的分类种类也很多,现在举出几个大家比较重要的分类方式。按发音方式分为孤 立词、连接词和连续语音的语音识别系统。语音识别系统可能要求说话者以单字、 单词、或是短语为发音单位,其间就必须要略微停顿,否则识别就会有问题。以前 的语音识别系统,几乎都是以单字或单词为单位的孤立语音识别系统,随着连续语音 识别技术渐趋成熟,连续词和连续语音这个最自然的说话方式,将成为语音识别系 统的主流。按词汇量大小分为小词表、中词表和大词表以及无限词汇量语音识别系 统。如果语音识别系统只为你进行电话拔号,那它只要能听懂10个数字就行了,这属 于小词汇量语音识别系统;如果它是为你自动转接话务, 那它还应识别单位名、人 名和时间等成千上百的词和字,这属于中等词汇量语音识别系统;如果它是把一篇 口述的演讲报告转换成为文字,这属于大词汇量语音识别系统。按说话人适应范围 分为特定人、限定人和非特定人语音识别系统。特定人系统是指系统在使用前必须 由用户输入大量的发音数据、对其进行训练。非特定人系统则试图达到在系统构建 成功之后, 用户需要事先输入大量的训练数据, 即可使用的目的。 语音识别包括两个基本的步骤,一个是系统“学习”或“训练”。这一阶段的 任务是建立声学模型以及进行文法分析的语言模型。另一个是“识别”或“测试”。 根据识别系统的类型选择合适的一种识别方法,采用语音分析方法提取出这种识别 方法所需要的语音特征参数,按照一定的准则和测度与系统模型比对,经过判决后 得出识别结果。一个典型语音识别系统的实现过程如图1-2所示。 预 处 理 模式匹配识别 建立模型 判 决 图 2-2 典型语音识别系统 语音识别系统,除了包含核心的识别程序,语音输入手段、参数分析、标准声 学模型、词典、文法语言模型等等也是不可或缺的。根据识别结果在实际环境下实 现一定的应用,还必须考虑环境技术,用户接口输入和输出技术等诸多因素。因而, 语音识别技术加上各种外围技术的组合,才能构成一个完备的实际应用系统。 3 基于基于 SOPC 技术与系统软硬件开发平台简介技术与系统软硬件开发平台简介 3.1 基于基于 FPGA 的的 SOPC 技术技术 嵌入式系统发展趋势为小体积、低功耗、高性能。如今MCU、DSP和FPGA三 种处理器在现代嵌入式系统中是三分天下,各自都具有独特的优势但在某方面又存 在不足。当前ARM和51系列单片机为代表的MCU家族在强大的软件系统支持和控 制处理微机接口方面占据领先之位;而在大的数据处理方面市场又被DSP抢占; FPGA在高速复杂逻辑处理方面独领风骚,同时其大规模的内部存储容量和内嵌乘 法器,高速并行处理能力,在信号处理方面也突出了它的优势。因而三者的结合是 未来嵌入式系统发展的趋势。SOPCMCU+DSP+FPGA,微电子技术发展至今取 得了长足的进展,而最终将实现SOC方案。而在整个设计流程中,SOPC技术是一 种有效的解决方案。SOPC主要源自全球著名的微电子产商Altera, 其涵义为可编程 的片上系统,或者说是基于大规模FPGA的单片系统。之所以如此快速发展,跟目前 CPLD/PGFA逻辑门及其内部RAM容量越来越大,性能也越来越高是分不开的,加 之价格下跌,强大的可编程能力,使得CPLD/PGFA不仅可以实现一个高复杂高难 度的系统,而且还能快速升级,提升系统性能。 3.1.1 基于 FPGA 嵌入式 IP 硬核的 SOPC 系统 此种理念是在FPGA中移植一个微处理器。当前非常流行的32位ARM知识产权 处理器以硬核方式植入FPGA中,利用FPGA中丰富的逻辑宏单元以及IP软核做成接 口功能模块,如配置常规的SRAM、SDRAM、FLASH驱动等,同时可以配置网络 通信接口、串口、USB接口、视频接口、音频采集、键盘接口等等,就能很好地解 决系统一体化、功耗低、整体稳定性提高的问题。对此,Altera和Xilinx公司都相继 推出了这方面的器件。例如,Xilinx的Virtex-II Pro系列中植入了IBM PowerPC405 处理器;Altera的Excalibur系列FPGA中就植入了ARM922T嵌入式系统处理器。如 此实现了高效SOPC系统,使得FPGA灵活的硬件设计与微处理CPU的强大软件功能 有机的结合起来。 3.1.2 基于 FPGA 嵌入式 IP 软核的 SOPC 系统 基于FPGA嵌入式IP硬核方案存在如下不足之处,首先,此类硬核多来自第三 方公司,FPGA产商一般不能直接控制其自是产权费用,使得FPGA器件价格偏高不 利于市场拓展。其次,硬件平台的固定导致用户要根据具体植入的微处理器的结构 去设计系统。而在熟悉指令系统,总线架构,微机接口等过程中,延误了系统开发 周期,若换另一种IP硬核处理器,又得重新更新知识体系。鉴于不完美的地方,提 出基于FPGA嵌入式IP软核方案。以适应更多的电路功能要求。软核嵌入式系统处 理器目前最有代表性是Altera的Nios和NiosII,及Xilinx的MicroBlaze。尤其是Altera 的Nios和NiosII,技术方案启动到如今第二代产品的升级,技术沉淀使得Nios CPU 系统很好的克服解决了上述不利因素。而且也逐渐有电子公司启用Nios 方案,开 发SOPC系统,即商业化。 Altera的Nios软核采用32位/16位总线指令集和数据通道的嵌入式系统微处理器 IP软核,可以配置多个CPU,CPU分为三个等级,有低端经济型,中档标准型,高 端快速型,此三种CPU都是32位精简指令微处理器,所不同的是逻辑单元的利用率, 存储资源的开辟,以及是否嵌入硬件乘法器和除法器,数据缓存等等。软核采用 Avalon总线结构通信接口。开发者可以利用强大的软硬件调试实时代码,调试功能 可根据FPGA 的JTAG端口收到的指令,在线监视并控制片内处理器的工作情况。 同时,强大的Quartus II软件开发平台作为SOPC的载体,用户可不用管低层的实现, 而生成Nios II 核,在Avalon总线灵活配置系统多个用户接口模块核,如高速缓存 模块,RS232串口通讯模块,SDRAM控制器、三态桥,标准以太网协议接口,直 接数据存取DMA,定时器产生波特率,以及多个协处理器,实现双CPU,甚至多 核协同处理,实现多机通信。只要根据向导就可以轻松地导出软核,就相当于生成 了一个可以裁减的用户CPU。这时用户可以根据设计要求,利用Quartus II的SOPC Builder,对核外围进行构建,使得整个系统在硬件结构、功能特点、资源占用等方 面全面满足用户系统设计要求。并且只要FPGA资源允许,软核的移植是没有限制 的。在这点上,Nios显然优于Xilinx的MicroBlaze。成本上,Nios时Altera直接推出 的非第三方知识产权,所有用户可以不用支付知识产权费,因此,这也是本系统采 用Altera的FGPA作为开发设计平台的一个重要的因素。对于数字信号处理方向研究 者来说,Matlab 是我们必备的系统分析仿真工具,而DSP Builder作为Matlab的插 件,与Matlab的结合,使得用户直接用Matlab中的Simulink 完成系统级的设计, Altera公司提供了丰富的IP模块方便用户调用。用户把DSP Builder生成的模块调入 Quartus II综合,生成VHDL硬件描述语言,就可以及其方便的生成单元顶层模块, 与NIOS II融为一体,实现片内嵌入式系统。 3.2 FPGA 基本开发流程基本开发流程 FPGA如同一张白纸,工程师既可以用传统的原理图输入,也可以用硬件描述 语言设计,本文主要基于Verilog HDL 语言设计。通过软件仿真,可以先验证设计 是否正确。在PCB完成后,还可以利用FPGA的在线更改,随时更改设计而不必改 动硬件电路。所有,FGPA开发数字电路大大缩短时间,减少PCB面积,提高系统 可靠性。要开发FPGA必须了解FPGA本身的结构特性,还要熟悉相关的软件平台。 下面将以本系统的软件平台Quartus II7.0 来介绍它的开发流程。 3.2.1 基于 Quartus II 7.0 的 FPGA 设计 Quartus II 7.0是Altera公司推出的CPLD/FPGA开发工具,Quartus II 7.0提供了完 全集成且与电路结构无关的软件开发环境,具有数字逻辑设计的全部特性。 它可利用原理图、结构框图、VerilogHDL、AHDL或者VHDL完成电路输入保 存为设计实体文件。软件包括芯片电路平面布局连线编辑,LogicLock增量设计, 用户还可以优化系统,添加对原系统的后续模块。功能强大的逻辑综合工具,完备 的电路功能仿真与时序逻辑仿真工具,定时/时序分析,更有SignalTap II逻辑分析 仪进行内嵌式的在线逻辑分析。Quartus II 7.0还支持源文件的添加与创建,将它们 链接生成目标文件。自动定位编译错误、高效的编程与验证工具以及可读入标准的 EDIF网表文件、VHDL网表文件和Verilog网表文件联合第三方EDA软件如 Modolesim 使用的VHDL网表文件和Verilog网表文件。下图是Quartus II 7.0的主界 面: 图3-1 Quartus 7.0 主界面 Quartus II 7.0的使用说明可以参考help帮助文档,7.0以上的版本都有视频演示, 让用户一步到位入门EDA软件平台,熟悉里面各种功能的基本应用。由于Quartus II 是目前市场上专业的综合工具,也是最快的,强大的功能是需要相当一段时间才能 精通的。如图3-2是一个典型的FPGA设计流程。 图3-2 FPGA设计流程图 所有的工程项目在建立是都是大同小异的,Quartus II 7.0 也是以工程的单元对 设计过程进行管理。首先建立顶层文件,若是以图形的形式建立,相当于一张原理 图,所有模块都用总线连接整合在一块。若是用文本文件建立,一定要以工程名命 名模块名。在建立子模块时,建议尽量采用 ALTERA 公司提供的 LPM 功能模块。 Quartus II 7.0 软件环境里面包含了丰富的的常用模块,如向上向下的增减计数器、 累加器、译码器、比较器、FIFO、存储器等等。这些自带的 LPM 模块都是性能优 越的模块,在用户系统中用到,将有利用整体系统的综合,一般若系统中单个模块 设计不合理,如速度、资源等不考虑周全,将造成整个系统的瓶颈,以作者的经验 教训,如不懂得在工程中采用这些现有的功能模块是非常浪费。针对用户自己的系 统,用户一般要建立自己的功能模块。可以用 Verilog HDL 或原理图输入。这个过 程好比你要做一个电路,现在市场上没现在你想要的功能,你就自己做一块这样的 芯片,添加到电路中。在顶层文件中,把各个模块实例化调用后,就做成了用户的 电路系统。下一步就是选择芯片型号,为顶层图分配管脚。至此可以对系统顶层文 件进行编译,最好先进行语法分析,通过之后才整体综合。综合时可以设置优化逻 辑组合、综合逻辑以及布线约束等。综合后得到*.sof 文件或者*.pof 文件,这就是 目标下载文件了,前者是通过 JTAG 下载到 FPGA 中 RAM 中的,若掉电后,信息 就丢失了;后者时下载到配置芯片中的 E2PROM 中,重新启动后,系统自动引导 把配置文件加载到 FPGA 内部,达到掉电不丢失信息的目的。但是在线调试的方式 编程是非常快的,而后者就要等一段较长的时间。另外仿真工具软件自带的已经较 完善了,更加专业的第三方软件验证,一般是公司做成品会用到。 3.2.2 SOPC 基本开发流程 下图是SOPC软件开发环境,基于Altera公司的中高端FPGA芯片实现片上系统。 其中NiosII是用Quartus II 自带的SOPC Builder 来定制的,DSP则用到MATLAB的 Simulink 中的DSP Builder来定制,其知识产权属于Altera。 图3-3 SOPC Builder工程新建图 图3-4 SOPC 软件主界面 Altera的SOPC,NiosII占有举足轻重的地位,它拓展了目前世界上最流行的软 核嵌入式处理器的性能,把NiosII CPU嵌入高端StratixII、Stratix、Cyclone等系列器 件中,用户可以获得超过200DMIPS的性能。 Nios CPU是16/32位结构可定制并包含5级流水线的通用RISC微处理器。CPU通 过Avalon总线与外设交换数据。此总线是一种比较简单的内部协议总线,提供了同 步操作,外设统一编址,带延迟的读写操作时序特性。并且Altera公司提供的标准 外设接口,减少了系统的开发周期,给用户提供一个平台可以添加自定义的IP驱动 接口直接挂载到Avalon总线上面。此CPU还包括当前流行的所有微处理器具有的高 速缓存、中断处理、硬件加速、寄存器、完备的指令系统。下图描述了Nios 系统 的整体结构。可以看到,所有的外设都是挂载到总线上面的,即使CPU也是作为一 个外设模块处理。 图3-5 Nios 系统整体结构 以下是配套的Nios II IDE 7.0 软件开发环境,在SOPC片上系统的硬件部分综 合完成后,指令的执行要交给CPU,软件编写与调试都是通过Nios II IDE集成开发 环境完成的。它与一般的C编译器开发环境类似,对一般的编译软件如SYSTEM C 熟悉的用户可以很轻松的入门。由于编译时,要链接过多的库文件,所以在编译前 要设置一些选项优化编译。即使如此,首次编译时,都会编译较长的时间,工程越 大,编译时间也相应更加长,不熟悉的用户可能刚用到会不习惯。当编译通过后, 可以在线调试程序了,硬件系统已经在Quartus II中综合定型了,到此只需要修改软 件,程序调试通过后,可以通过FLASH 烧写工具把软件部分固化在FLASH中。而 最终硬件部分可以烧写进配置芯片中固化,重新启动系统,软硬件会协同工作。 图3-6 Nios II IDE 主界面 至此可以从整体上得出 SOPC 结构功能图,图中 DSP 各模块都是一些 IP Core, 对于这些数字信号处理的算法核是常用的计算模块,一些开发商会把它们做成专业 的知识产权核,我们可以用综合工具仿真,而要是进行二次开发就需要购买了,有 的研究者会自己研发。这些都将具有共同的特点可以挂载在总线上,自定义模块可 以是用户做的一些接口驱动。 图3-7 SOPC结构图 3.2.3 系统硬件平台 ALTERA DE1 开发板介绍 本系统的硬件平台是建立在 ALTERA DE1 开发教学板上,Altera 提供了配套 的资料进行开发板的教学和演示实验。DE1 的核心控制器是 Cyclone II EP2C20F484C7N FPGA,484-pin 的 FBGA 封装,所有重要的组件都连接在核心控 制芯片上,用户可以编程控制各个组件。 下图是开发板的实物图。 图3-8 开发板实物图 DE1 开发板包括以下芯片和功能模块: ALTERA Cyclone II 2C20 FPGA 芯片,这是核心控制器,用户的系统设计目标 文件将运行在芯片中的 SRAM 中;ALTERA 串行配置芯片EPCS16,这是固化 配置文件的芯片,只有固化了目标文件,才能调电不丢失信息,一般的 FPGA 都有 对应的一个配置芯片。USB Blster 用于编程下载和 JTAG 在线调试或是主动串行模 式的下载方案;开发板上面有一个 512K SRAM,8M 的 SDRAM,SDRAM 可以用来 供 NIOS II 程序运行;4M 的 FLASH 可以固化 NIOS II 的程序代码;外围的接口电 路包括 SD 卡座;按键开关和拨动开关;LED 灯;WM8731 音频编解码芯片, VGA 接口,串口和键盘接口,加上 27MHZ 和 50MHZ 的晶振。前面几节介绍的软 件都可以配套 DE1 开发板使用。图 3-8 给出了 DE1 开发板的模块功能图。为方便 起见,这里把所有的组件都连接在 Cyclone II 上。上面提到的各个芯片和功能模块 全部清晰地描述如图所示。 i.Cyclone II EP2C20 FPGA Cyclone II EP2C20 是高密度结构的 FPGA,由二维行列结构组成执行用户逻辑。 逻辑阵列由逻辑阵列块(LAB)组成,每个 LAB 又由 16 个逻辑单元(LE)组成。 EP2C20 有 18,752 个 LE。Cyclone II 提供一个全局时钟网络,这个全局时钟为芯片 中所有的资源提供时钟,如输入/输出单元,LE,内嵌乘法器,和嵌入式存储块等。 EP2C20 含有 4 个锁相环,用户可进行时钟同步和相位偏移和输出外部高速时钟用。 EP2C20 内嵌 52 个 M4K 存储块,M4K 存储块是双通道 4K 存储块,用户可以设置 双通道,单通道,位宽可以到达 36 位综合至 260MHZ 高性能存储器。EP2C20 还 嵌入了硬件乘法器,由 52 个 99 位或 26 个 1818 位速度高到 250MHZ 的高性 能内嵌有符号乘法器。 在基于 FPGA 语音识别系统设计中,所有的 SOPC 系统都是建立在此芯片上, 包括系统各个功能模块,NIOS CPU,接口驱动都综合成目标文件*.sof 下载到 Cyclone II 2C20FPGA。 ii.WM8731(24 位音频编解码) DE1 板提供了高品质 24 位 Wolfson WM8731 音频编解码芯片。芯片支持麦克 风输入,线入,线出三个端口,可调节 8KHZ96KHZ 的采样频率。此芯片开发板 厂商已经固定用串行 I2C 总线协议传送数据,相应的端口已经固定在 Cyclone II 2C20 FPGA。图 3-9 给出了电路原理图。 图 3-9 音频信号采集处理原理图 系统的硬件连接固定,设计只要针对芯片的工作模式设置控制字,根据芯片的 时序图编写程序即可。系统的数据来源都是从此电路采集进来,所以对采集这部分 必须熟悉 WM8731 的使用,系统采集部分具体的实现将在第五章详细描述。 4 系统整体构建与功能分析系统整体构建与功能分析 4.1 系统整体框架设计系统整体框架设计 本系统设计充分利用 Cyclone II 芯片及 DE1 开发板硬件资源。实现了一个孤立 词语音识别系统,首先通过麦克风录入孤立词汇,经过 WM8731 芯片将模拟量转化 为数字量然后经过 WM8731 的接口控制模块将语音数据读入 SDRAM 中缓存,此时 将数据读入特征值提取模块进行特征值求取,而后将特征参考模板存入 1G 的 SD 卡中。识别的整个流程全部在 DE1 板实现。首先测试人通过麦克风根据系统 LED 提示,读入词汇,系统进行识别的所有步骤。包括多段语音的端点检测,有效语音 的存取,对语音数据进行 FIR 滤波,压缩语音数据成一阶 MFCC 参数,测试人的 实时提取特征参数与预先存入的参考模板通过识别模块得出识别结果,并在 LED 上显示识别成功与否。系统主要硬件模块为:音频采集模块,各个存储单元接口驱 动模块,SD 卡读写模块等。而系统主要软件模块包括:基于 Verilog HDL 的高速 语音信号预处理模块,基于 Verilog HDL 的高速语音信号特征参数提取模块,语音 信号匹配识别模块,基于 NIOS II SD 卡文件系统控制模块等。系统主要框图(如 图 4-1 所示): AVALON BUS N NI IO OS S I II I处处理理器器 S SD DR RA AM M控控 制制接接口口 S SD D卡卡控控制制 接接口口 F Fl la as sh h控控 制制接接口口 I2C配置 模块 音频控 制接口 语音预处理和特征参数提取模 块(自相关、CPL,MEL) 用用户户自自定定义义指指令令 PIO口控 制 W WM M8 87 73 31 1 芯芯片片 LED S SD DR RA AM M SD卡 Flash 麦克风 拨码开 关 D DE E1 1开开发发板板 F FP PG GA A 图4-1系统总体框图 其功能描述如下: 1实时语音信号采集模块话筒线入输入,语音通过音频编解码芯片 WM8731,以 8KHZ 的 A/D 采样率转换成 16 位 PCM 码缓存。 2语音信号预处理模块算法处理的一部分,主要功能是把缓存区的数据归一 化,一阶高通滤波,分帧,按帧计算短时能量和短时过零量,去除首尾的静音和噪 声,得到有效语音帧,存入 SDRAM。为语音特征提取做准备。 3语音信号特征提取模块按帧读取 SDRAM 中的语音数据,经过 FFT 模块得 到一帧数据的功率谱,功率谱在 24 阶 MEL 滤波器组加权后取对数,再经过 DCT 离散余弦变换模块,得到 12 维倒谱域特征矢量,再经一阶差分变成 24 维特征矢量 作为测试模版。这样把一帧 256 维时域数据压缩至 24 维倒谱域数据,为模板匹配 提供了高效处理,降低了识别的难度和计算量。 4语音识别模块预先录制多个语音样本,并运用 PC 机上的 MATLAB 平台对 这些语音样本进行特征参数提取并训练,最终以文件形式存入 SD 卡。Nios II 控制 SD 卡驱动获取所有参考模板,自定义 DTW 动态时间规整模块将测试模板与 SD 卡 中的参考模板比较欧式距离,得出识别结果。 4.2 系统软件主要算法流程设计系统软件主要算法流程设计 系统上电后初始化完成,将进入语音识别系统。高速语音信号处理模块由以下 几部分组成:语音端点检测模块,语音特征提取模块。语音端点检测模块主要包括: FIR 滤波器的设计,能量的计算,过零率的计算。语音提取模块主要包括:基 2 的 256 点 FFT 模块设计,MEL 滤波器组的设计,DCT 离散余弦变换模块等。识别模 块应用 DTW 识别算法。这些部分处理采用 Verilog HDL 设计成 IP CORE,应用流 水线和乒乓操作,实现了数据的高速处理。这些 IP 核全部通过总线传输数据, NIOS II 控制,数据都是通过直接数据存取 DMA 搬运,无需 CPU 介入,进一步提 高了速度。 算法主要流程 系统初始化 模式判别 特征参数提取模块 开启语音采集 各孤立词模板特征 参数分成不同文件 存储 存入SD卡 生成模板库 开启语音采集 语音预处理模块 特征参数提取 进入DTW模块进行 特征匹配识别 是否匹配成功 匹配三次 输出LED匹配成功 信号 01 02 Y N YN 图4-2系统软件流程图 5 基于基于 FPGA 语音识别系统各功能模块设计与仿真语音识别系统各功能模块设计与仿真 5.1 语音采集与预处理模块语音采集与预处理模块 本模块要实现的功能是采集语音信号,并对其进行FIR滤波、语音数据归一化、 语音的端点检测处理。 5.1.1 语音采集模块 语音采集部分采用 DE1 板上的 WM8731 进行设计,通过 I2C 总线设置后, WM8731 就会一直工作在设定的模式中。 以下是语音采集的功能图: I2C IP核 FPGA wm8731语音编 码芯片 芯片配置 参数 ROM表 SDRAM 语音 图 5-1 语音采集的功能图 语音采集单元包含一个 PLL,一个 I2C 总线控制器、一个左对齐模式下的语音 采集控制器。以下是 WM8731 的结构功能图: 图5-2芯片结构功能图 (一)芯片工作原理 WM8731 上电后必需对工作模式设置在系统要求的状态下,因此上电后需要用 VERILOGHDL 编写模块对芯片的工作模式进行设置。下面将列出芯片配置字列表, WM8731 内部控制字寄存器有 16 个,在芯片初始化时,在制作 ROM 表格中完成。 表5-1 语音采集芯片控制字配置列表 寄存器地址位标签名称设置值功能描述 R0(00H)4:0左声道输入音量16h001A; 左声道线入音量控制每 增加1,步进1.5 分贝 R1(01H) 4:0 右声道输入音量 16h021A; 右声道线入音量控制每 增加1,步进1.5 分贝 R2(02H)6:0 左耳麦输出16h047B; 左声道输出音量控制每 增加1,步进1分贝 R3(03H)6:0 右耳卖输出16h067B; 右声道输出音量控制每 增加1,步进1分贝 R4(04H)2 麦克风输入 选择位 1 16h0814; 麦克风输入/线入选择到 ADC1:麦克风 0:线入 R5(05H)2:1 内部重采样 11 16h0A06; 1148KHZ 10=44.1KHZ 0132KHZ 00Disable R6(06H)8:0低功耗控制16h0C00;各功能屏蔽低功耗模式 1:0 音频格式选择01 11=DSP 模式 10=I2S 模 式 01=左对齐模式 00=右对齐模式 3:2 输入音频数据位 宽 00 1132 位 1024 位 0120 位 0016 位 4 DAC 左右声道 相位控制 0 1右声道数据当DAC 相位时钟电平位高时 0右声道数据当DAC 相位时钟电平位低时 R7(07H) 6主从模式11主模式 0从模式 0 采样率模式选择0 1USB 模式 (250/272fs) 0正常模式 (256/384fs) 波特率1USB 模式正常模式 R8(08H) 1 0250 fs 1272 fs 0256 fs 1384 fs 此语音编解码芯片有多种工作模式,A/D 变换后,语音的采样频率与采样的位 宽都需要根据系统的具体要求,合理配置。语音芯片的配置时序为 I2C 模式,芯片 接口为主模式,即由 WM8731 提供位时钟,AD 和 DA 转换的左右声道控制相位时 钟,以及转换后的 AD 数据 PCM 码输送给 FPGA 处理器如下图 5-3 模式。 图5-3芯片连接方式主模式 采集数据的采样时序选择左对齐模式,传输时序如图 5-4 所示。 图5-4左对齐采样时序图 (二)配置与采集单元 配置电路中,模块 CLOCK_50 将输入的 50MHZ 的系统时钟分频为 1MHZ,作 为 I2C 总线模块的工作时钟,CLOCK_50 模块中写出的上面程序代码是一个表格, 存储了配置的控制字。I2C 总线模块的 I2C_SDAT 与 I2C_SCLK 是数据线和时钟线, DE1 板固定分配了专门的 I2C 数据线和时钟线引脚线。 图5-5配置模块图 图5-6语音采集模块 系统通过语音采集模块将语音芯片采集的声音数据串并转换为 16 位 PCM 码, 声音数据传送至 SRAM 存储器内保存,这里设置了 4S 录音时间,用户一次输入 3 个孤立词(如数字),48K32K,考虑到 32K 的原始数据需要预处理,FIR 滤 波和归一化,断点检测,所有处理后的数据仍然存入后续的 SDRAM 地址中。检测 出的孤立词分别存入独立首地址后面。 (三)语音采集实时采样 总之,锁相环 PLL 给予 WM8731 工作在 18.4Mhz 的时钟频率下,通过 I2C 总 线控制器设置 WM8731 工作在 8Khz 的采样频率下。下图为在嵌入式逻辑分析仪 (SignalTap II Logic Analyzer)下语音采集控制器的采样图: 图5-7语音采集控制器的采样图 此图为实时采集图,测试人现场读入语音数据,模块实时进行语音采集回放。 从图中可见,左对齐语音采集过程一共有 19 个脉冲,其中前 16 个脉冲为有效语音 数据提取脉冲,后三个脉冲为将来处理扩展预留。有效语音提取出来之后便存入 SRAM 中。本模块通过计数器,从启动录音开始,自动录制 4s 的语音信号。 5.1.2 语音预处理模块 语音预处理模块包含三部分,语音归一化处理单元;FIR 滤波器运算单元;语 音端点检测运算单元。以下是结构功能图: FIR 滤 波 FPGA归一化 端点检 测 SRAM 图 5-8 语音预处理功能图 (一)语音归一化处理单元 语音归一化处理典型的计算公式为:DATA/MAX(DATA),如果按照这种标准 归一化处理,则需要消耗 2 个硬件乘法器资源。本着节约片上资源的设计理念,作 者创新地提出了一种经过简化的归一化处理模型,该模型只需移位即可实现归一化 运算。流程如下: 第一步:先取语音数据的最大值 MAX(DATA)。 第二步:令 m= MAX(DATA)且 m=2n(n=8),寻找一个最小值 n。 第三步:将归一化运算由 DATA/MAX(DATA)改为 DATA/m。在数字电路中 除以 2n 只需简单的移位即可实现。 鉴于这里将 16 位的原始语音归一化为 8 位的小数,所以只要将每一个语音数 据右移(n-8)位即可。当 n 小于 8 时,则无需再移位。 经过修改后的归一化运算,运行速度更快,资源消耗更少,其牺牲的采样精度 可以在信号采样时通过有意识的调整最大幅度加以控制 。 (二)Fir 滤波器运算单元: 由于原始录入的语音高频部分的频谱比低频部分的成分少,为此要在预处理中 加入预加重处理,预加重的目的是提升高频,使得信号的频谱变得平坦。一般采用 的是一阶高通滤波器,系统函数为 。这里利用了 DSP Builder 1 9375 . 0 1)( zzH 设计了一阶 FIR 滤波器。方法如下: 第一步:由系统函数得到差分表达式:) 1(9375 . 0 )()(nynyny 第二步:在 DSP Builder 中生成 Simulink 系统仿真图,并生成 VHDL 代码。 图5-9 FIR 模型顶层文件 (三)分帧处理: 在计算各个系数之前要先将语音信号作分帧处理。语音信号是瞬时变化的,但 在 1020ms 内是相对稳定的,而我们设定的采样频率为 11025 所以我们对预处理 后的语音信号 Y(n)以 300 点为一帧进行处理,帧移为 100 个采样点。 (N=300)),()(nMlYnxl, 1, 1 , 0 Nn . 1 , 1 , 0 Ll (四)加窗处理: 为了避免矩形窗化时对 LPC 系数在端点的误差,我们采用了汉明窗函数来进 行窗化。即: ),()()( nwnxnx ll . 1 0Nn 其中: ), 1 2 cos(46 . 0 54 . 0 )( N n nw . 1 0Nn (五)语音端点检测运算单元 由于原始数据中含有噪声和无声段以及静音段,为了获取有效语音数据,必须 从原始数据中截取有效的语音数据。在端点检测中,作者把语音分为:静音段,过 渡段,语音段,结束段。语音端点检测状态转移图如下所示: 图5-10语音的端点检测状态图 端点检测后的语音数据仍保存于 SRAM 中。这里将 DE1 板上的 512KB 的 SRAM 划分为 5 个区:地址 00x7fff 为原始语音数据保存区,0x80000xffff 为经端点检测后的第一段语音数据(在端点检测之前已对该段语音数据进行归一化 处理与 Fir 滤波处理)保存区。0x100000x17fff 为经端点检测后的第二段语音 数据保存区。0x180000x1ffff 为经端点检测后的第三段语音数据保存区。 0x200000x3ffff(0x3ffff 是 SRAM 的最终地址)为将来扩展而预留。 下图为语音预处理模块处理作者录进去的“大家好“效果图。本图是通过 DE2 控制面板软件读取 SRAM 前 256KB 数据(地址:00x1ffff)通过 Matlab 显示 的图形: 图5-11 语音的端点检测效果图 从图中可以看出语音预处理模块可以很好地完成 Fir 滤波、语音归一化、语音 端点检测的任务。 5.1.3 语音采集与预处理顶层模块图 作者把采集与预处理单元作为一个整体的模块,相当于语音数据处理的前置模 块IPCore,它集音频信号采集,A/D转换的,滤波,归一化,三段式端点检测功能于 一体的高速采集预处理逻辑芯片,组成SOPC系统的一个重要的IP核。 图5-12 语音采集与预处理顶层模块图和编译报告 5.2 语音数据的语音数据的 LPC 特征提取特征提取 语音信号的特征有多种度量标准,我们采用的是比较常用的倒谱特征。 语音信号是一种典型的时变信号,然而如果把观察时间缩短到几十毫秒,则可 以得到一系列近似稳定的信号。人的发音器官可以用若干段前后连接的声管进行模 拟,这就是所谓的声管模型。全极点线性预测模型(LPC)可以对声管模型进行很 好的描述,每段声管对应一个 LPC 模型的极点。一般情况下,极点的个数在 12-16 个之间就可以足够清晰地描述语音信号的特征了。 语音信号经过预处理,它的每个样值均可由过去若干个样值的线性组合来逼近, 同时可以采用使实际语音抽样与线性预测抽样之间的均方差最小的方式,来解出一 组预测的系数。这就是 LPC 所提取出来的信号的初始特征。 a 预测值时域表达式为: 其中,为加权系数,即 LPC 系 p i i inSanS 1 )()( i a 数。预测的误差为: p i i inSanSnSnSne 1 )()()( )()( 使在均方误差最小的条件下,可求得唯一的,此过程即为 LPC 分析过)(ne i a 程。这里采用的是 Levinson-Durbin 法。由上面的式子有: 0)()( 1 p i i ijRajR EpiRaR p i i 1 )()0( 其中,为待分析与引信号的自相关序列:)( jR 1 0 1 )()()()()( jN n N jn jnSnSjnSnSjR 因此:Levinson-Durbin 算法为: 初始化: )0( 0 RE 迭代计算:对于pj

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论