广东工业大学学报  2014, Vol. 31Issue (2): 43-48.  DOI: 10.3969/j.issn.1007-7162.2014.02.008.
0

引用本文 

林小平, 鲁青, 郭伟, 邓杰航, 王超. 一种SmartFusion FPGA的快速语音合成系统设计[J]. 广东工业大学学报, 2014, 31(2): 43-48. DOI: 10.3969/j.issn.1007-7162.2014.02.008.
Lin Xiao-ping, Lu Qing, Guo Wei, Deng Jie-hang, Wang Chao. Design of a Fast Text to Speech System Based on SmartFusion FPGA[J]. Journal of Guangdong University of Technology, 2014, 31(2): 43-48. DOI: 10.3969/j.issn.1007-7162.2014.02.008.

基金项目:

国家自然科学基金资助项目(61202267);广东省大学生创新训练资助项目(yj201211845073, xj201211845095)

作者简介:

林小平(1962-),女,副教授,主要研究方向为嵌入式系统及其应用技术。

文章历史

收稿日期:2013-12-24
一种SmartFusion FPGA的快速语音合成系统设计
林小平, 鲁青, 郭伟, 邓杰航, 王超     
广东工业大学 计算机学院,广东 广州 510006
摘要: 针对传统语音合成系统实时性差、硬件资源占用率高、大容量语音数据处理效率低等问题,采用高速并行运算能力的SmartFusion FPGA(Field Programmable Gate Array)为硬件开发平台,设计了一种FPGA的语音快速合成系统.首先通过移植FatFs文件系统到FPGA芯片集成的Cortex-M3硬核中,采用软硬件协同工作方式,利用Cortex-M3硬核与FatFs文件系统实现语音文件的查找和软件解析,应用FPGA硬件完成对文本文件内容读取及控制语音的播放,形成软硬件协同工作模式.实验结果表明,该语音合成系统具有语音文件处理效率高、文语转换时间短、语音播放清晰流畅,实现方便,稳定可靠.
关键词: SmartFusion现场可编程门阵列    语音合成    FatFs文件系统    Cortex-M3硬核    
Design of a Fast Text to Speech System Based on SmartFusion FPGA
Lin Xiao-ping, Lu Qing, Guo Wei, Deng Jie-hang, Wang Chao     
School of Computer Science, Guangdong University of Technology, Guangzhou 510006, China
Abstract: Aiming at the problems of the traditional text to speech (TTS) systems, such as poor real-time character, high utilization of hardware resources, low efficiency of high-capacity speech data processing, it proposes the use of the SmartFusion FPGA (Field Programmable Gate Array) as the platform of hardware development. A TTS system was designed, based on FPGA. Firstly, the FatFs file system was transplanted to the Cortex-M3 hardcore of FPGA with the chip integrated. Then, hardware and software were made to work cooperatively, Cortex-M3 hardcore and FatFs file system were responsible for finding voice files and doing software analysis, and FPGA hardware was used to read the text contents and play the voice. Experimental results show that the TTS system has higher efficiency of processing voice files, shorter time of TTS conversion, and clear and fluent playback of the voice. The TTS system is stable and easy to implement.
Key words: SmartFusion FPGA    text to speech    FatFs file system    Cortex-M3 hardcore    

语音合成TTS(Text to Speech)技术是近10多年来研究的一种利用计算机或其他平台将文字转换为语音输出的数字语音技术[1-2].国内在汉语语音合成技术研发方面取得了一定成果,广泛应用于电信、声讯、企业呼叫中心和车站信息播报.但是在嵌入式系统中,FPGA(Field Programmable Gate Array)的文语转换研究鲜有报道.由于嵌入式设备的存储空间、处理速度和系统资源等限制,语音合成的研究主要在合成算法设计与优化层面,将FPGA应用在语音信号处理、语音播报、语音识别等[3-10]居多,各开发者所采用的硬件平台和设计模式有一定差别,设备配置差异较大,系统的稳定性和灵活性较差,无法满足日益增大的语音数据实时处理的要求,难以实现高自然度的读取特性.

针对以上问题,本文利用SmartFusion FPGA的内部资源以及强大的并行运算能力,选用外置SD卡[11] (Secure Digital Memory Card)存储语音库方案,移植FatFs文件系统到FPGA中,运用软硬件协同方式,设计了一个快速语音合成系统,缩短语音文件的处理时间,实现语音清晰、顺畅的播放.

1 系统整体设计方案

SmartFusion FPGA拥有丰富资源,具有高速并行运算能力,设计灵活、功耗低、体积小、具有大量软核、方便进行二次开发等优点,可以满足语音信号实时处理的需求.本文基于Microsemi公司的SmartFusion A2F-EVAL-KIT评估板[12]进行开发研究.首先在SD卡上建立通用汉字字典文件,当输入一个文本时,利用FPGA硬件实现按行读取字典,建立从文本文件到语音文件的索引表.再利用ARM的Cortex-M3硬核[13]查找索引表,快速地找到该文本所对应的汉语拼音,然后播放出该拼音对应的WAV语音文件,实现语音自然播放.系统主要构成如图 1所示.

图 1 系统整体结构示意图 Figure 1 The schematic of the overall system structure

SmartFusion混合信号FPGA嵌入了微控制器子系统MSS(Microcontroller subsystem),MSS由Cortex-M3硬核和集成外设组成,提供了与FPGA进行交互的接口FIC(Fabric Interface Controller),通过配置FIC来实现Cortex-M3与FPGA的通信,读取大容量文件时系统以软硬件协同方式进行,分别由Cortex-M3对语音文件进行解析,CoreABC控制硬件进行读取.Cortex-M3通过CoreAPB3总线连接CoreSPI0和CoreSPI1以SPI方式驱动SD卡.FPGA端使用CoreABC软微控制器作为控制单元,CoreABC支持APB接口,同样通过APB3总线连接CoreSPI来驱动SD卡,具有独立读取SD卡的能力.

2 系统硬件设计

硬件系统由3部分组成:数据处理及输出模块、MCU(Micro Control Unit)通信模块和SD卡驱动模块.其中SD卡驱动模块利用FPGA内部的Cortex-M3及CoreABC,使用CoreSPI的主机模式通过CoreAPB3总线操控SD卡,接口连接包括时钟线(SCK)、数据线(SS)、MOSI和MISO,与SD卡从机模块对应引脚经过三态门电路相连.

2.1 数据处理及输出模块设计

该模块包括CoreAPB总线包装、有限状态机FSM(Finite State Machine)模块及先进先出FIFO(First In First Out)模块,其设计图如图 2所示.WAV音频处理只需将脉冲编码调制PCM(Pulse Code Modulation)数据直接送入FIFO中,不需要进行任何数据转换.

图 2 数据处理及输出模块设计图 Figure 2 The design of data processing and output module

图 3为WAV语音处理状态机, “S0”为起始状态,“S1”为读取1个字节,“S2”状态时Wr_enabe=1向FIFO写数据.PREADY为FIFO的FULL信号的取反输出.当FIFO为满时,PREADY=0,FSM将处于“S1”状态等待,直到从FIFO中取出数据后FULL信号清零,当PREADY=1, 才可以继续写入数据. Wr_enable为FIFO写使能端,每读取1个字节后将其置为高电平,数据存入FIFO中.

图 3 状态机设计图 Figure 3 The design of the state machine
2.2 MCU通信模块设计

MCU通信模块用于实现Cortex-M3硬核与FPGA的通信.利用集成开发软件自带的小型MCU内核CoreABC实现,将其配置成16位双向IO口,作为并行数据通道完成数据传输.MCU和CoreABC之间设有Valid和Ready数据线.其中Valid是高电平有效,写操作时表示MCU已准备好要发送数据,读数据时表示MCU已准备好接收数据,低电平表示不操作.Ready是高电平有效,写操作时表示CoreABC已接收数据,读数据时表示CoreABC已准备好要发送数据,低电平表示空闲.

使用Modelsim进行协同仿真,可选择软件模式或硬件模式进行汇编编程,执行的指令保存在逻辑片构成的内置ROM内(硬件模式),或在CoreABC内部的RAM存储块中(软件模式).

3 系统软件设计 3.1 FatFs文件系统移植与配置

FatFs Module是一种免费开源的FAT(File Allocation Table)文件系统模块[14-15],专门为小型的嵌入式系统而设计.它支持FATl2、FATl6和FAT32,支持多个存储媒介,有独立的缓冲区,可以对多个文件进行读/写,具有容易移植和使用、占用硬件资源相对较小而功能强大等特点.

通过对FatFs Module进行适当的配置,提供底层DiscIO驱动程序,可以移植到各种MCU中.为满足软硬件协同工作的要求,本文提供两种存储媒介读写接口DiskIO,将其移植到SmartFusion FPGA Cortex-M3硬核中,表 1分别对应两种工作模式.

表 1 工作模式与接口函数对应表 Table 1 The corresponding table of the working mode and the interface function

应用层软件可灵活在以上两种工作模式之间切换.当进行文件解析时,由于读取数据量小,仅FAT表及文件头信息,所以用M3Mode模式直接完成扇区读取.当进行数据读取时,由于数据量大,使用ABCMode模式向CoreABC发送扇区号,然后由FPGA完成数据的读取与处理.如此实现FatFs文件系统软件解析以及FPGA硬件读取的软硬件协同工作方式.

3.2 软硬件协同实现WAV文件解析

通过Cortex-M3硬核部署的FatFs文件系统进行工作模式选择,可完成软硬件协同读取方式的切换,流程图如图 4所示.

图 4 文件系统程序流程图 Figure 4 The flow chart of the file system program

Cortex-M3硬核在中断程序中查询扇区号时使用M3Mode,发送扇区号时切换到ABCMode,其外部中断直接连接在CoreSPI1的enable _master引脚上,并将其设置为低电平触发,当CoreSPI1无效时enable_master为0触发中断,Cortex-M3主程序中开外部中断即可立即运行一次中断程序,当CoreSPI1使能后使能Cortex-M3外部中断并结束中断程序,若文件已读取完毕,则保持中断关闭状态.CoreABC每读完一个扇区将使CoreSPI1无效并触发中断.至此,主程序解析并传送文件大小后通过中断服务程序发送扇区号,CoreABC执行耗时的文件读取工作,每读完一个扇区与Cortex-M3交互一次获取下一扇区号,直至文件读取全部完成.

4 系统测试与分析 4.1 音频文件读取测试

为测试音频文件读取,选取1个大小为69 714字节的单声道8位WAV文件进行测试.通过winhex软件读取该WAV文件的源码,从起始地址0x00000000到地址0x0000002B处的所有字节为WAV文件的文件头.从0X0000002C处开始即为PCM数据.利用Cortex-M3硬核从FIFO读取处理后的WAV数据文件,并将其发往串口工具进行比较测试.测试中,串口工具接收到69 670字节数据,已去除44字节的文件头,并与所选的单声道8位WAV文件的PCM数据一致,由此证明,该系统能够准确读取单声道8位WAV格式的音频文件.测试结果表明音频文件读取正确.

4.2 FPGA的语音合成测试与分析

将内容为“大家好”的文本文件存放到SD卡中,读取该文件.首先采用纯软件方式对“大家好”进行语音合成,得到图 5(a)的波形输出结果.从图 5(a)可以看到,每个语音之间都有停顿,即在“大家好”这3个字之间都有“空隙”,这是因为Cortex-M3硬核每播放完一个音频文件后都需要时间去查询下一个音频文件,所以语音播放不畅通.还有,语音播放需要Cortex-M3硬核不断地去读取语音文件,占用了大量的运行时间,以至无法及时响应其他外来事件,从而导致系统实时性差.

图 5 “大家好”文语转换测试波形 Figure 5 The conversion test waveform of "Hello everyone"

同样对“大家好”进行文语转换,采用本文的软硬件协同方法,得到图 5(b)的波形.在FPGA进行语音播放时,Cortex-M3硬核同时进行语音文件的查询工作,播放完一个语音后无需停顿,立即播放下一个语音.即把需要花费大量时间的语音播放转移到FPGA上,通过硬件逻辑完成,使得MCU能及时处理更多的其他外来事件,不但毫不影响语音播放的流畅效果,而且大大提高了系统的实时性.

图 6(a)(b)为对文本“有个好哥哥”的文本文件,按照以上方法,进行文语转换测试的结果.

图 6 “有个好哥哥”文语转换测试波形 Figure 6 The conversion test waveform of "There is a good brother"

图 5(a)(b)中可以看出,对于文本“大家好”,纯软件方式的合成时间为1 268 ms,即720 ms减去-548 ms,软硬件协同方法的合成时间为1 012 ms,即783 ms减去-228.8 ms,后者的合成时间比前者减少了256 ms.同理,从图 6(a)(b)中可以看出,对于文本“有个好哥哥”,纯软件方式的合成时间为1 990 ms,即2 372 ms减去-4 362 ms,软硬件协同方式的合成时间为1 612 ms,即247.9 ms减去-1 860 ms,后者的合成时间比前者减少了378 ms,减少的时间为进行语音查询所花费的时间.

不同汉字的查询时间不尽相同,表 2为对不同文本的多组测试结果进行比较,从表中可知,采用软硬件协同方式比纯软件方式的合成时间均有不同程度的减少,最大的相差接近400 ms,而且语音播放的流畅效果大大提高.

表 2 不同文本文语转换测试结果对照表 Table 2 The comparison table of speech conversion tests between different texts
5 结束语

采用这种FPGA软硬件协同模式设计,完成语音文件解析,可以使文本文件快速方便转换成语音文件,有效利用了系统语音库容量大和数据传输率快的优点.通过单词、短语等多个语音文本合成的实验结果表示,经过所设计的软硬件协同读取方式播放,可以消除传统纯软件方式播放时各语音之间的停顿现象,使语音播放更加流畅,并缩短了合成时间,节约时间12.44%~20.19%,提高了数据处理速度,解决了传统语音合成系统普遍存在的存储空间小、读取文件耗时的问题.该系统具有成本低、操作方便、设计灵活、处理速度快、实时性强、播放清晰自然、可懂度高等特点,在FPGA领域具有较广的应用前景.

参考文献
[1]
井晓阳, 罗飞, 王亚棋. 汉语语音合成技术综述[J]. 计算机科学, 2012, 39(11A): 386-390.
Jing X Y, Luo F, Wang Y Q. Overview of the chinese voice synthesis technique[J]. Computer Science, 2012, 39(11A): 386-390.
[2]
章森, 刘磊, 刁麓弘. 大规模语音语料库及其在TTS中应用的几个问题[J]. 计算机学报, 2010, 33(4): 687-696.
Zhang S, Liu L, Diao L H. Problems on large-scale speech corpus and the applications in TTS[J]. Chinese Journal of Computers, 2010, 33(4): 687-696.
[3]
姜元亭, 樊昌元, 杨军华. 基于FPGA的语音信号实时处理[J]. 微型机与应用, 2011, 30(2): 29-31.
Jiang Y T, Fan C Y, Yang J H. Real-time processing of speech signal on FPGA[J]. Microcomputer & Its Applications, 2011, 30(2): 29-31.
[4]
郭颂, 何云斌. 基于FPGA的音频播放系统设计[J]. 信息技术, 2011, 5: 95-100.
Guo S, He Y B. Design of audio playback system based on FPGA[J]. Information Technology, 2011, 5: 95-100.
[5]
王虎升, 李金环, 袁宪锋, 等. 基于STM32的嵌入式语音播报系统的设计[J]. 北京联合大学学报:自然科学版, 2011, 25(3): 11-15.
Wang H S, Li J H, Yuan X F, et al. Design of an embedded speech broadcast system based on STM32[J]. Journal of Beijing Union University: Natural Sciences Edition, 2011, 25(3): 11-15.
[6]
张永刚, 余玉平. 基于ARM的孤立语音识别系统的研究[J]. 广东工业大学学报, 2013, 30(2): 95-98.
Zhang Y G, Yu Y P. The design of the isolated speech recognition system based on ARM[J]. Journal of Guangdong University of Technology, 2013, 30(2): 95-98.
[7]
袁军, 张思民. 嵌入式中文TTS系统的研究与实现[J]. 电脑知识与技术, 2008(16): 1345-1346, 1348.
Yuan J, Zhang S M. Research and implementation of embedded TTS system[J]. Computer Knowledge and Technology, 2008(16): 1345-1346, 1348. DOI: 10.3969/j.issn.1009-3044.2008.16.071.
[8]
吴昊, 黄华灿. 利用FPGA的数字语音系统的设计与实现[J]. 华侨大学学报:自然科学版, 2010, 31(6): 641-644.
Wu H, Huang H C. Design and implementation of a speech compression system based on PFGA[J]. Journal of Huaqiao University: Natural Science Edition, 2010, 31(6): 641-644.
[9]
M Saadeq Rafieee, Somayeh Jafari, Hesamoddin Shahriari Ahmadi, et al. Considerations to spoken language recognition for text-to-speech applications[C]. Cambridge, United Kingdom: UKSim 13th International Conference on Computer Modelling and Simulation, 2011: 304-309.
[10]
Hu H T, Wang H M. Integrating coding techniques into LP-based Mandarin text-to-speech synthesis[J]. International Journal of Speech Technol, 2007, 10(1): 31-44. DOI: 10.1007/s10772-008-9015-3.
[11]
田茂, 鲜于李可, 潘永才. SPI模式下SD卡驱动的设计与实现[J]. 现代电子技术, 2009(14): 195-196, 199.
Tian M, Xianyu L K, Pan Y C. Design and implementation of SD card-driven based on SPI mode[J]. Modern Electronics Technique, 2009(14): 195-196, 199. DOI: 10.3969/j.issn.1004-373X.2009.14.062.
[12]
Actel Coportation SmartFusion Evaluation Kit User's Guide[G]. USA CA: Actel Corporation, 2010.
[13]
Mustafa Cem Orhan, Cenk Demiro ğlu. Hmm-based text to speech system with speaker interpolation[C]. Antalya, Turkey: 2011 IEEE 19th Conference on Signal Processing and Communications Applications, 2011: 781-784.
[14]
张涛, 左谨平, 马华玲. FatFs在32位微控制器STM32上的移植[J]. 电子技术, 2010, 47(3): 25-27.
Zhang T, Zuo J P, Ma H L. FatFs porting to 32Bit microcontroller STM32[J]. Electronic Technology, 2010, 47(3): 25-27.
[15]
李世奇, 董浩斌, 李荣生. 基于FatFs文件系统的SD卡存储器设计[J]. 测控技术, 2011, 30(12): 79-81.
Li S Q, Dong H B, Li R S. Design of SD memory card based on FatFs file system[J]. Measurement & Control Technology, 2011, 30(12): 79-81. DOI: 10.3969/j.issn.1000-8829.2011.12.020.