APP下载

语音播放变速率算法及FPGA实现

2014-09-19李冬梅刘冀川

无线电工程 2014年1期
关键词:基音气流波形

李冬梅,刘冀川

(中国电子科技集团公司第五十四研究所,河北石家庄050081)

0 引言

语音变速处理是将所输入的语音信号以任意的速度(慢或快)播放,这在目前是一项十分流行的语音处理技术,在语音合成、语音识别和频谱分析等方面有着广泛应用前景,引起了很多研究者的关注。对于数字语音信号,在改变其播放速度方面,传统技术是通过改变输出的采样率来实现,但这种方法会导致音调和音色发生变化,语音效果变差,严重时甚至无法识别语音内容。为了达到变速不变调的效果,可以利用自相关函数、短时平均幅度差函数、倒谱法和小波变换等构成的基音检测法以及基于参数编码的LPC算法等,但这些方法在硬件设计和实现时比较繁琐。本文根据基音波形的概念,在时域上对基音波形的复制和抽取,实现了语音的变速不变调处理和FPGA的实现。

1 语音变速的理论依据

从物理原理来看,语音信号是由肺挤压出的空气激励发声器官带来的震动产生的。说话时声带相互靠拢但不完全封闭,这样声门变成一条窄缝,当气流通过时压力减小,从而声带完全合拢使气流不能通过,在气流被阻断时压力恢复正常,因而声带间的空隙形成,气流再次通过。这一过程周而复始,就形成了一串周期性的脉冲气流送入声道。这个脉冲串的周期称为“基音周期”,其倒数是“基音频率”。这种方式发出的音为浊音。语音的另一种产生方式是声门完全闭合,此时声道不是受声门周期脉冲气流的激励,而是利用口腔内存有的空气释放出来而发声。该气流在口腔中形成湍流,因而带有明显的随机噪声的特点。这种方式发出的音为清音。语音产生过程的物理近似[1]过程如图1所示。

图1 语音信号产生的离散时域模型

根据以上发音原理可知,任何发声行为都有振动过程,即必须有作用力使物体产生振动,从而产生声波,这个作用力是间歇的,而非连续的。被振动的物体在前一作用力消除之后、后一作用力到来之前,产生回复到原状态的运动,这样便产生了振动。语音信号就是这种机械振动的电表现,其波形与机械振动相对应,所以在十分小的时间间歇内,它应该可被看作是由微小的阻尼振动波所组成的,如图2所示。这些微小的且具有实际含义的一段阻尼振动波被称为基音波形,即音元。任何语音信号都是由音元连接构成的。一段语音信号如图3所示,这段语音信号中包含了3个音元[2]。

图2 阻尼振动波的波形

图3 语音信号

语音信号的每一种语素实际上由一种基音波形的不断重复产生,基音波形的频谱决定了语音的频谱特性,而重复的周期数则决定了语素的时间长度。因此,要实现变速不变调,就需要找出基音波形,然后修改基音波形的数据。比如,要实现声音慢放1倍的变化,即原来正常放1 min的内容,现在要放2 min,只需要重复一次基音波形;而实现声音快放1倍的变化,即原来正常放1 min的内容,现在要放0.5 min,则可以每隔一个基音波形删除一个,就能够实现声音变速不变调。根据试验观察,音元长度通常短于20 ms。由于人耳有听觉残留的现象,所以取20 ms长的语音信号为一个音元。

2 语音变速的算法实现

为了保证语音信号改变播放速率的同时,信号相对强弱、频率、音调和音色等特征不变,在原语音信号中增加或减少声音信息来保持单位时间内重放出的信息量不变,主要考虑的问题是在什么地方插入或删除声音信息、插入或删除怎样的信息。

语音变速处理包括语音变慢处理和变快处理。语音变慢处理是在部分或所有音元后插入一段信息单元。在确定了插入的声音信息的位置后,需进一步确定插入多少声音信息,插入的信息单元可以是空白信号、插入点前一小段信号和经衰减的插入点前一小段信号。经验证,插入点前一小段信号效果较好,方法较简单。语音变快处理是删除部分音元,将未删除的音元紧缩连接起来。处理方法如下:

①确定播放速率R,R为经过处理后的语音播放速度与原始速度的比值;

②采集语音信号,以音元为单位切割语音信号,并按顺序对音元进行标记,标记表示该音元在语音中的位置,如表1所示,原始语音信号的每个音元编号为0~n。

表1 定位误差随张角大小的变化

③对语音信号进行变速处理,以n/R向下取整后重新标记音元。将重新标记后的音元拼接在一起,如表1所示。慢放时,原速第4个音元放在了第5个的位置,中间空缺的音元补成前一个音元,后面的依此类推;快放时,原速第3个和第4个音元都重新标记为2,即删除第4个音元,把第3个音元放在位置2,后面的依此类推。

④拼接时,拼接点处引起跳变,会有噪声。采用加权滤波,将拼接的前一个音元的后几个点与后一个音元的前几个点加权相加,有效地去除了噪声。

3 算法的FPGA实现

语音播放变速率FPGA实现的系统框图如图4所示。

图4 语音播放变速率系统

将采集到的语音信号以音元为单位存储到FPGA内部RAM,将存储的数据进行处理(如滤波等),然后根据播放速率R,将存储的音元进行重新编号,存入另一个内部FIFO中,将存入的数据按原采样率放出即可实现语音的快放或慢放。

4 实验结果

上述设计采用VHDL语言,并用Modelsim进行功能验证。设计的实验结果如图5所示,它是将仿真得到的二进制语音数据经MATLAB转换为波形文件格式后显示的时域波形。语音“Lesson one”原速播放时语音波形,时长625 ms,如图5(a)所示;R=0.8慢放时语音波形,时长781 ms,如图5(b)所示;R=1.5快放时语音波形,时长416 ms,如图5(c)所示。可以看出,语音波形基本保持一致,并无明显的噪声引入。基因波形没有改变,语音的频谱特征就没有改变,即实现了语音播放变速不变调。

图5 语音变速波形图比较

5 结束语

采用上述的语音播放变速不变调算法分别测试了汉语、英语、日语、韩语、法语和德语等多种语言,通过试听,由于语调不变,可懂度的主观MOS分可以达到4以上。采用的方法简单直观、速度快、专用资源少,更适合于集成电路的实现。

[1]谷源涛,应启珩,郑君里.信号与系统-MATLAB综合试验[M].北京:高等教育出版社,2008:108-119.

[2]苏 勇.音频信号保真变速处理方法[P].中国:1145519A,1997.

[3]韩纪庆,张 磊,郑铁然.语音信号处理[M].北京:清华大学出版社,2004:11-41.

[4]赵 力.语音信号处理[M].北京:机械工业出版社,2003:20-30.

[5]POHLMANN K C.数字音频原理与应用[M].苏 菲,译.北京:电子工业出版社,2002:13-30.

[6]易克初,田 斌,付 强.语音信号处理[M].北京:国防工业出版社,2000:51-58.

[7]韩 慧,王继祥.一种提高语音干扰效果评估准确度的方法[J].无线电工程,2011,41(3):17 -19.

[8]徐大为,吴边,赵建伟,等.一种噪声环境下的实时语音端点检测算法[J].计算机工程与应用,2003(1):115-117.

[9]ROUAT J,LIU Y C,MORISSETTE D.A Pitch Determination and Voiced/Unvoiced Decision Algorithm for Noisy Speech[J].Speech Comm,1997,21(3):191 -200.

[10]王晓亚,鲁玉海.语音的端点检测处理技术[J].无线电工程,2010,40(2):16 -18.

[11]刘 骁,张海燕,刘镇清.一种变速语音音调复原的处理方法[J].电声技术,2000(7):7-9.

猜你喜欢

基音气流波形
垂直气流电除尘深度提效技术研究
气流的威力
基于多分类支持向量机和主体延伸法的基音检测算法
基于基音跟踪的语音增强研究
用于SAR与通信一体化系统的滤波器组多载波波形
比翼双飞
Pareto最优稀疏频率雷达波形设计
一种基音周期检测中减小中值平滑误差的方法
基于ARM的任意波形电源设计
双丝双正弦电流脉冲波形控制