多带激励语音编码SA5.0C-BPDF资料的实现

嵌入式技术

1368人已加入

描述

虽然现在已经有光纤通信等大容量通信手段,但是,在移动通信、卫星通信、军事通信中,节省带宽仍然非常重要。传统的PCM等占用大量信道带宽的语音编码技术,已远远不能满足现代数字通信的需要。欧美、日本等国一直在努力通过降低语音编码速率来扩大通信系统的容量。在我国,对低速率语音编码技术也有迫切的需要,如保密通信、短波信道、水声信道等对码率要求严格的应用场合。但现有语音编码的国际标准传输速率都较高(一般在8 Kb/s以上),而现有的一些低速率语音编码方案的话音质量又不尽人意。因此,如何有效地降低编码速率将一直是重要的研究课题。多带激励语音声码器(MultiBand Excited,MBE)在2.4~4.8 Kb/s速率上能合成出音质比传统声码器好得多的语音,而且具有较好的自然度和容忍环境噪声的能力,是目前这一速率范围内比较理想的参数编码方案。

1 MBE编码(语音分析)

1.1 MBE模型

美国MIT大学林肯实验室1988年提出了多带激励(MBE)语音编码方案。

MBE语音模型如图1所示,把激励频谱分成许多互不交迭的频带,对每一频带分别进行二元清、浊音判决,这就是多带激励的由来。这样就允许特定语音帧的激励信号可以是周期能量(浊音)和噪声能量(清音)的混合,在一定程度上增加了模拟激励的自由度,因而使MBE语音模型能产生高质量的语音,而且使MBE语音模型有更强的抗背景噪声能力。

语音编码

1.2参数提取算法

MBE语音模型主要参数包括:基音周期;各谐波带清浊音判决信息;各谐波对应谱包络幅度。

按照MBE算法原理图(图2),参数提取算法的实现分为如下四个步骤:

(1)基音周期粗估

基音周期的粗估采用在时域内进行的方法。因为实际计算中证明,频域中计算量特别大,并不好用。为解决这一问题,本文采用时域自相关函数来估计基音周期的方法,这个方法的计算量比频域法少得多,但只能在基音周期的整数点值上进行。MBE算法就是对每一帧语音信号,在基音周期预估值范围内(一般在P=20~147之间),计算误差函数Ep(P),使误差函数最小的频率值P就是基音估计的粗估值P1。误差函数:

(2)基音周期细搜索

基音周期的细搜索采用在频域内进行的方法,可以进一步在频域范围内进行非整数基音周期的估计,从而提高基音周期估计的精度。即在粗估基音P1邻域内进行细搜索,确定更精确的基音周期候选值Pt:P1-9/8,P1-7/8,…,P1+7/8,P1+9/8。通过上述算法,可以得到真正基音周期P0。

(3)谐波带清浊音判决(U/V判决)

研究证明,清音带与浊音带不会频繁交替,而是保持着一定的连续性,这样在编码速率较低时,可以将相邻的几个谐波频带划分在一起,共同进行清浊音判决。本文将相邻的3个谐频带划分在一起,整个频带采用最多分成12个带的方法进行清浊判决。判决阈值采用自适应值,如果拟合误差小于阈值,判为浊音,否则判为清音。

(4)谱幅度估计

确定U/V后,就可以对各谐波的包络幅度做最后的确定:

2 MBE解码(语音合成)

多带激励模型语音合成的方法大体分为两类,即频域合成法与时域合成法。频域合成法先用收到的参数构成重建语音谱,然后利用傅里叶反变换得到时域序列,相当于分析过程的逆过程。这种方法比较直接,但不能保证合成语音基音周期的平滑变化,特别当帧长比较长的时候会产生基音周期跳变,使合成语音不自然。时域合成法能利用插值实现帧与帧之间基音周期平滑过渡,合成出更自然的语音。因此在实际的MBE算法中都采用这种方法。如图3所示,浊音Sv(n)与清音SU(n)是分开合成的,最后将他们相加,形成完整的合成语音SR(n)。

本文对于浊音部分的语音采用时域合成法,因为该方法可利用插值实现帧与帧之间基音周期的平滑过渡,合成出更自然的语音。而对于清音部分的语音,采用频域短时傅里叶变换法合成,因为带通滤波器在频域中易于实现,用FFT实现,计算复杂度更低。

3静音检测

3.1概念

研究表明,人们在电话交流时,单向通话的时间通常只占总的通信时间的40%或更少,其他约60%的时间为聆听对方讲话和通信中静默期。静默期的参数(背景噪声参数)比较简单,用很少的比特数即可表示。如果能准确地判断出语音/静音帧,在静音期间,只发送很少的比特数,从理论上来看,语音编码率应该可以降低50%左右。

静音检测,又称端点检测(Voice Activation Detection,VAD),其目的是从声音信号流里识别长时间的静音期(背景噪声),使得在不降低业务质量的情况下达到节省带宽资源的作用。

3.2算法

本文采用了“基于熵的VAD检测法”。熵VAD检测方法是通过对信号幅值分布概率的统计取对数,以得到熵值。如果语音的幅值的绝对值在1.0左右变化,则不能统计出所期望的概率。为了便于统计计算,因此在处理16位的语音文件时,不能将其归一化处理,而是通过预处理,使其幅度值分布在[-50,+50]之间。计算前10~20帧信号的熵值的平均值,乘以某个倍数作为阈值。然后将每一帧的熵值与阈值比较,大于阈值,则VAD=1,否则置0。当VAD=1,暂时记为语音的开始点,如果向后连续几帧都判为1,则该点为起始点,否则重新向后搜索。结束点的搜索方法与开始点相同,只不过是向前搜索而已。

4仿真试验

4.1算法实现的整体流程图

前面已经详细说明了语音帧的编解码过程与算法,对于加入静音检测模块的整体算法流程图(图4),现在简单说明本文采用的静音帧的编解码方法:

(1)静音帧编码

当VAD检测结果为0时,为降低编码率,静音帧只发送该静音帧的幅度均。

(2)静音帧的解码

在解码端,若VAD判决为0时,即当前帧为静音帧,则生成一均值为0,方差为1的类似白噪声的随机序列u(n),再与编码端发送的静音帧的幅度均值相乘得到自适应的白噪声序列。

4.2试验结果

原始语音与合成语音时域波形图比较,如图5所示。原始语音与合成语音频谱图比较,如图6所示。

4.3结果分析

仿真结果表明,基于VAD检测的MBE模型声码器对于语音信号可以很好地区分出语音帧和静音帧。同时,采用VAD检测算法后,对于被检测出的语音帧执行MBE编解码处理,静音帧只传送帧幅度均值,有效地降低了语音编码速率,对于正常语速的通话,本文的编码率可以在原来的基础上减少50%左右。从听觉效果上来看,采用VAD检测的MBE算法的合成语音与未采用VAD检测的一般MBE算法的合成语音几乎没有区别,两种方法有较好的主观听觉效果和可懂度。

5结语

(1)合成波形失真

从仿真试验结果的波形图中可以看出,合成语音波形相对于原始语音波形有一些失真,这与信号处理前的高通滤波器和基音周期粗估前的低通滤波器的设计有关。因为高通滤波器可使输入信号抗工频(50~60 Hz)干扰,低通滤波器可减少高频共振峰和外来高频噪声对基音周期提取的影响。因此,滤波器的设计在MBE编码中至关重要,这也就是下步工作中首要解决的问题。

(2)基音粗估后加入基音平滑模块,提高基音准确度、平滑语音

由于噪声的干扰,造成基音周期粗估值的错锁(通常是1/2倍频或1/3倍频),而基音细搜索只在基音粗估值的附近进行,这就使得基音频率以及帧之间有很大跳变,合成语音有停顿感。因此,在基音粗估后加入基音平滑模块,有利于提取基音频率较高时的基音周期,又不至于影响提取基音周期频率较低时的基音周期;它既能保证基音周期的正确估计,又能保证基音演变的平滑性,最终得到音质好的合成语音。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分