门户网站建设公司渠道,湖北商城网站建设多少钱,容易被收录的网站,怎么做网站调查表谱包络之pysptk和pyworld
谱包络可以直接用于语音的合成#xff0c;常用的两个计算谱包络的库pysptk和pyword。
先看看代码#xff1a;
一段语音x#xff0c;采样率16000Hz pysptk
import pysptkframe_length 1024
hop_length 80
order 25
alpha 0.41
frames libro…谱包络之pysptk和pyworld
谱包络可以直接用于语音的合成常用的两个计算谱包络的库pysptk和pyword。
先看看代码
一段语音x采样率16000Hz pysptk
import pysptkframe_length 1024
hop_length 80
order 25
alpha 0.41
frames librosa.util.frame(x, frame_lengthframe_length, hop_lengthhop_length).astype(np.float64).T# Windowing
frames * pysptk.blackman(frame_length)# Convert mel-cesptrum to MLSADF coefficients
mc pysptk.mcep(frames, order, alpha)
b pysptk.mc2b(mc, alpha);synthesizer Synthesizer(MLSADF(orderorder, alphaalpha), hop_length)y_synthesized synthesizer.synthesis(source_excitation, b)world
import pyworld as pwnum_dim 25
sp pw.cheaptrick(x, f0, temporal_positions, fs)
ap pw.d4c(x, f0, temporal_positions, fs)
coded_sp pw.code_spectral_envelope(sp, fs,num_dim)#合成时需要解码
fftlen pw.get_cheaptrick_fft_size(fs)
decoded_sp pw.decode_spectral_envelope(coded_sp, fs, fftlen)
y_synthesized pw.synthesize(praatf0, sp, ap, fs, frame_period5.0)那这两个中的谱包络有什么区别呢 pysptk中我们用到pysptk.mcep函数pyworld中用到pyworld.code_spectral_envelope。
相关资料https://github.com/r9y9/pysptk/issues/74
下面我们追溯到这两段代码的论文来一探究竟。
pysptk.mcep
论文信息 Tokuda, Keiichi et al. “Mel-generalized cepstral analysis - a unified approach to speech spectral estimation.” ICSLP (1994).
MCEP是一种广义的倒谱分析方法。 广义倒谱分析方法是对倒谱方法和线性预测方法的统一其中模型谱根据参数γ的值从全极到倒谱连续变化。由于人耳在低频时具有高分辨率引入了与模型频谱相似的特征我们可以更有效地表示语音频谱。
基础理论 线性预测是一种公认的获得语音全极表示的方法。然而在某些情况下谱零点也很重要需要更一般的建模过程。虽然倒谱建模可以用相等的权重表示极点和零点但使用少量倒谱系数的倒谱方法高估了共振峰的带宽。为了克服这一问题我们提出了广义倒谱分析方法。当参数γ分别为0和-1时广义倒谱系数与倒谱系数和AR系数相同。因此利用广义倒谱表示我们可以根据γ的值得到连续变化模型谱从全极谱到倒谱表示的谱。 由于人耳在低频时具有高分辨率我们引入了与模型频谱相似的特征可以更有效地表示语音频谱。梅尔广义倒谱表示的频谱即变换后的广义倒谱在适当选择参数α值的情况下具有与人耳相似的频率分辨率。因此我们期望混合广义倒谱系数对语音频谱表示有用。 谱模型及其规范
广义对数函数[6]是对数函数的自然推广
实序列x(n)的倒谱c(m)定义为对数谱的傅里叶反变换而广义倒谱Cα,γ(m)定义为在规整频率标度βα(ω)上计算的广义对数谱的傅里叶反变换。 广义倒谱
其中X(ejω)是X(n)的傅里叶变换。规整频率尺度βα(ω)定义为全通系统的相位响应。
其中
相位响应βα(ω)在适当选择α时可以很好地近似于听觉频率尺度。
在本文中我们假设一个语音频谱H(ejω)可以用M 1维的 mel广义倒谱系数来建模如下所示 可以看出 当(α,γ) (0,1)时模型谱采用全极表示形式当(α,γ) (0,-1)时就是全零点。 当(α,γ) (0,0)时模型谱与倒谱表示的谱相同。(倒谱)
模型谱的形式与(α,γ)值的关系
所以当α,γ取不同的值可以得到更适合的谱模型。
采样率1KHzα0.35 采样率16KHzα0.41 其他采样率α0.5
pyworld.code_spectral_envelope
论文信息 Morise, Masanori et al. “Low-Dimensional Representation of Spectral Envelope Without Deterioration for Full-Band Speech Analysis/Synthesis System.” Interspeech (2017).
全频带语音是指采样频率在40khz以上其奈奎斯特频率覆盖可听频率范围的语音。在以往的工作中语音编码一般集中在采样频率低于16khz的窄带语音上。另一方面统计参数语音合成目前使用的是全频带语音使用的是语音参数的低维表示。本研究的目的在于实现全频带语音的无损编码。我们专注于高质量的语音分析/合成系统和梅尔-倒谱分析使用频率规整。在频率规整函数中我们直接使用了三个听觉尺度。我们使用WORLD声码器进行了主观评估发现最佳的维度数是50左右。频率规整对音质的影响不显著。
频谱包络中的语音编码 窄带语音编码的研究已经取得了一些进展。线性预测编码(Linear predictive coding, LPC)[11]是其中的主要算法之一线谱对(line spectral pairs, LSP)[12]在电信系统中得到了广泛的应用。倒频谱[13]也是一种基本算法以及几种改进算法。首先提出了广义倒谱分析[14]几年后又提出了梅尔-倒谱分析[15,16]。 mel -广义倒谱分析[17]广泛应用于语音合成研究。它有一个频率规整参数用户可以优化窄带语音的参数。在全频带语音的SPSS中也有关于规整线性预测的研究[18]。提出了GlottDNN[7]。 在梅尔倒谱分析中梅尔对数谱近似(mel-log spectrum approximation, MLSA)滤波器[19]可以直接从梅尔倒谱合成语音波形。相反在基于声码器的合成中我们是从解码的频谱包络线合成语音。因此我们建议在听觉尺度的基础上直接使用频率规整函数。编码的目的是为全频带语音分析/合成系统获得无损的频谱包络。
具体流程
1.在频率规整中有三种基于听觉尺度梅尔、BARK、ERB尺度的规整函数。 1 Mel尺度是最流行的尺度是对音高的感知音阶。 2BARK尺度是一种主观测量响度的心理声学量表。 3等效矩形带宽(ERB)尺度也是一种心理声学量表它给出了人类听觉系统中过滤器带宽的近似值。 这三种规整函数与对数规整函数相似但主要区别在于低频段图2显示了它们之间的区别。垂直轴被归一化为在20khz频率下表示1.0。规整函数决定了从低频到高频的分辨率分布。 2.在规整的频率轴上进行等间隔采样 在规整的频率轴上以等间隔采样。这一步有三个参数:下限和上限频率以及采样次数。我们设置下限频率为40跟根据F0的下限为40Hz设置频率上限为20000Hz这是人类可听到的频率范围的上限。 采样次数与梅尔倒谱维数的最大值有关并影响解码频谱包络的精度。我们使用WORLD全频带语音的FFT大小为2048。根据抽样理论我们知道有效值是1025所以我们使用1024它接近这个值。用简单线性插值法计算采样所用频率处的值。
3.谱包络的低维表示 对采样序列进行离散余弦变换(DCT)然后进行提升提取低维系数。提取的维数是决定编码效率的参数。当维数设置为N时提取0 ~ N-1的系数也就是将谱包络压缩到N/1025。提取的系数通过反向DCT变换到规整频率轴上的对数谱包络。通过规整函数的反函数将规整的频谱包络重新扭曲到线性频率轴上。
4.输入功率谱 梅尔倒谱分析的输入通常是由FFT计算的对数功率谱。然而即使谱包络是时间不变的计算的功率谱也取决于时间位置[24]。在语音分析/合成系统中这种时变分量会导致音质恶化。为了克服这个问题提出了一种时域静态的谱包络表示。 STRAIGHT[5]是最流行的声码器之一它具有获得时间静态频谱包络的算法它利用补偿时间窗去除时变分量。TANDEM- straight[24,25]和WORLD分别使用TANDEM窗口和CheapTrick[26,27]。其他算法如f0自适应多帧积分分析[28]也被提出去除了时变成分。 本文展示基于功率谱谱包络提取与由STRAIGHT和WORLD估计的频谱包络提取相比该表征获得了最好的音质。
总结
一个是mel广义谱表示转换成MLSA声码器能够合成的语音参数就能直接合成语音一个是对语音频谱包络进行编码需要再解码成普参数再合成语音。