大家好,欢迎来到IT知识分享网。
WORLD声码器
(A Vocoder-Based High-Quality Speech Synthesis System for Real-Time Applications)
一、什么是声码器,它可以做什么?
实际上所有的Vocoder都可通过一种简单的模型实现,此模型就是线性时不变系统。要了解声码器,就要先了解声学模型。
二、声学模型
根据人的发声机理,最经典的就是源-滤波模型。左侧代表声音输入,右侧代表声音输出。整体过程为一个基于人发声机理的经典源-滤波器模型,也就是输入的激励部分通过线性时不变系统进行操作;随后输出的声道谐振部分作为合成语音。
输入部分被称为Source Excitation Part:激励部分,右侧输出结果被称为Vocal Tract resonance Part:声道谐振部分。
如果对应人体发声结构进行分析,激励部分对应肺部气流与声带共同作用形成的激励,而声道谐振部分对应于声道的调音运动,对声进行调制。
三、WORLD声码器
WORLD可以实现实时、高质量的语音合成。比传统的系统速度快10倍以上,RTF(real time factor)表明它可以应用于实时系统。高质量的语音合成系统包括基频F0提取,谱包络估计算法,和参数估计的合成算法。之前的研究:STRAIGHT可以合成高质量的语音,对语音很容易进行操作。为了满足实时性,提出简化版–Real time STRAIGHT,减少了计算复杂度,但是大大削弱了语音质量。
1. 声学特征
WORLD声码器的本质:source-filter模型。
WOLRD提取三种声学特征:
- 基频F0:(声源,即声带震动,发出一串脉冲信号 pulse train),决定了脉冲序列中的各个脉冲的位置。
- 谱包络(spectrum envelop):也叫频谱参数(Spectrum Parameter, SP),也就是通过 filter声道(喉腔、口腔、嘴唇、牙齿等),在这些部位的共同调制下,我们能够发出不同的元音,辅音。这些部位共同组成一个滤波器系统。描述了该帧的音色和语音的内容,是线性时不变系统的频率响应。
- 非周期信号参数(aperiodic parameter,AP):描述了白噪声与脉冲序列能量的比例。WORLD认为,声源是白噪声与脉冲序列的混合,而不是“非黑即白”。对于清音,白噪声比例很高,非周期比值很高;而对于浊音,白噪声比例很低,非周期比值很低。
- 基频F0(浊音):对应激励部分的周期脉冲序列,如果我们将声学信号分为周期性信号与非周期信号的话,包含了语音的韵律信息和结构信息;
- SP频谱包络(音色):对应声道谐振部分时不变系统的冲激响应,可以看到经过此线性时不变系统之后Vocoder会对激励与系统响应进行卷积;
- AP非周期序列(清浊音程度比例):对应混合激励部分的非周期脉冲序列,因为所处理的信号包括周期性信号与非周期信号,虽然可以在混合时仅处理周期性信号并将其作为特征提取,随后再进行系统处理也能够合成相应的目标信号,但其由于缺乏非周期性信号的输入,合成的自然度难以符合要求,因此会提取非周期信号并同样将其作为特征之一进行提取与处理。
2. WOLRD分析功能
(1)DIO算法(提取基频F0)
(2)CheapTrick算法(提取Spectral Envelop)
计算步骤:
a. 第一步:f0自适应窗。计算窗口波形下的功率谱。
采用窗长为3T0的汉宁窗,T0是基音周期。窗的功率在w0处比主瓣(0Hz)低30 dB,这表明谐波结构对邻近结构的影响小于30分贝。由于实际语音包含时间波动、非周期性和噪声,我们假设30dB足够小。
原文公式:
该方程表明,被加窗的周期信号的总功率是时间稳定的。
b. 第二步:频域平滑功率谱。
对数功率谱用于倒频域的处理,但功率谱值为0时对应倒频域值为负无穷,会导致致命的错误。所以该步骤是为了确保功率谱没有0值。
通过一个矩形窗对(1)得到的功率谱进行简单滤波,角频率w0=2pai/T0。矩形窗长设为(2/3)*w0,窗长为 (3/2)T0=1.5T0,为了确保相邻结构之间的影响低于第一步提到的30dB。
c. 第三步:在倒频域提升。去除离散化引起的频率波动。同时进行了谱恢复。
下图是周期脉冲计算时变分量的一个例子。为了精确计算nT0时刻的时变分量,信号的采样频率为65,536 Hz, F0为128 Hz, FFT长度为65,536,信号的长度为1s,帧移的长度为一个样本,1/65536。该图表明时变分量收敛于nT0。为了去除时变分量,提取低频率分量,我们采用了一个sinc函数作为满足要求的提升。
- 注:TANDEM-STRAIGHT算法中,该步计算为:
在频域上进行了基于一致采样的频谱恢复,Pw为包含平滑smoothing影响的功率谱。但cheaptrick算法中,平滑和谱恢复都在倒谱域进行,smoothing和spectral recovery were carried out in the quefrency domain。
matlab代码如下:
(3)PLATINUM算法
mixed excitation和aperiodicity经常用在合成中。在Legacy-STRAIGHT 和 TANDEM-STRAIGHT算法中,aperiodicity被用于合成周期和非周期的信号。WORLD则直接用从波形、F0、和谱包络中得到的mixed excitation的非周期信号,主要有两种算法:Plantinum算法与D4C算法,在WORLD中我们主要采用D4C算法,基本可分为计算、修正参数与估计Band-aperiodicity。
图2显示了波形(线)和使用PLATINUM(圆)计算的位置。与TD-PSOLA相似,波形由长度为2T0的汉宁窗。
(4)合成算法
matlab代码如下:
filter_object = CheapTrick(y, fs, f0);
source_object = D4C(y, fs, f0);
y = Synthesis(source_object, filter_object)
下面简单讲解一下:
- source_object里面都是什么呢?
前5个都是基频参数、后两个非周期参数。 - filter_object里面都是什么呢?
3. 调用代码
python实现
现有专门的pyworld库
import pyworld
import librosa
import numpy as np
# 加载音频
path = "D:/a.wav"
x, fs = librosa.load(path, sr=16000) #librosa load输出的waveform 是 float32,
x = x.astype(np.double)
# 参数设置
frame_period = 5.0
hop_length = int(fs * frame_period * 0.001)#16000*5*0.001=80 5ms,80点
fftlen = pyworld.get_cheaptrick_fft_size(fs)#1024
# 参数提取
f0, timeaxis = pyworld.harvest(x, fs, frame_period=period, f0_floor=71.0, f0_ceil=800.0)
sp = pyworld.cheaptrick(x, f0, timeaxis, fs)
ap = pyworld.d4c(x, f0, timeaxis, fs)
coded_sp = pyworld.code_spectral_envelope(sp, fs, dim)
decoded_sp = pyworld.decode_spectral_envelope(coded_sp, fs, fftlen)
# 合成
y = pyworld.synthesize(f0, decoded_sp, ap, fs, frame_period)
# 画图
plt.figure()
librosa.display.waveplot(x, sr=fs)#原始波形
plt.figure()
librosa.display.waveplot(y, sr=fs)#合成波形
# 绘制F0
plt.figure()
plt.plot(timeaxis, f0, linewidth=2, label="1_F0 contour estimated by Harvest")
plt.xlabel("Time [sec]")
plt.ylabel("Frequency [Hz]")
plt.legend(fontsize=18)
plt.show()
得到结果如下:
4. WORLD声码器优点
- Sound quality。
WORLD Vocoder输出声音的质量优于其它传统声码器,其输出结果有人类自然语言的听感效果;而传统声码器输出声音不但质量欠佳,如机器般冰冷生硬的听感也非常不好。 - Processing speed。
WORLD的处理速度也高于传统声码器,处理速度是语音合成中一项十分重要的指标,一些基于神经网络的声码器虽然可以实现高质量的声音合成但速度却十分低下,究其原因在于神经网络需要对每一个样本点进行处理;假设一段48k采样的音频,其每一秒中包括48000个采样,如果对每个采样都进行处理无疑会大大拖慢处理效率;而WORLD声码器有其独特的处理效果如无损提高视频播放速度等,同时视频画面质量不会出现任何衰减。 - Open source。
开源,WORLD的算法没有专利性而且开放给任何人使用。相对于其它需要额外花费购买商业版权的声码器,WORLD的优势十分明显。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/121987.html