当前位置:   article > 正文

python 音频变调不变速方法_python 调整音乐音调

python 调整音乐音调

变调的方法也可以分为三类:时域法、频域法、参量法

1. 时域法

时域法中,Crochiere等人于1983年提出了重采样的方法,该方法是实现变速变调最简单、最常用的方法之一。
实际应用中,librosa的pitch_shift就是用这个原理。

python很容易实现:

y, sr = librosa.load(librosa.ex('choice'))
y_third = librosa.effects.pitch_shift(y, sr, n_steps=4) #升高大三度
  • 1
  • 2

其中n_step中一个step为一个半音。

具体的原理为:

假设重采样因子为P/Q,其中,P为上采样因子,Q为下采样因子。

上采样过程就是往原始信号相邻两点间内插P-1个采样点,这样使得基音周期变为原来的P倍,频谱压缩为原来的1/P倍,时长变为原来的P倍,即基频变为原来的1/P倍,音调降为原来的1/P倍,语速变为原来的1/P倍。

同样地,下采样过程就是每隔Q-1个点进行抽取,这样会使得基音周期长度为原来的1/Q倍,频谱扩展为原来的Q倍,时长变为原来的1/Q倍,即基频变为原来的Q倍,音调升为原来的Q倍,语速变为原来的Q倍。

综合上述两个过程,通过P/Q倍的重采样后,保持播放速率不变,重采样语音语速和音调都变为原来的Q/P倍。

为了实现变调不变速,可以通过各种变速不变调处理与重采样相结合的方法。变速不变调处理使语速变为原来的P/Q倍,得到输出信号y(n),然后对y(n)进行P/Q倍重采样处理,这样就得到语速正常,音调变为原来Q/P倍的最终输出语音z(n)。

2. 频域法

频域法中比较简单的处理就是直接对信号频谱进行插值或者抽取,实现各频率分量的扩展或者压缩。

这种方法的缺点在于:内插会引入不需要的频率,从而大大影响音质,变调后会有部分失真。
另外,比较典型的方法是利用短时傅里叶变换原理,估计出短时帧的瞬时频率,再乘以伸缩系数进行频谱伸缩。

3. 参量法

参量法中最具代表性的方法是基于正弦模型原理。
正弦模型是由Quatier等人在1980年提出,它是目前应用最广泛的语音模型。该模型将信号看作是一系列随时间变化的正弦信号叠加。
很显然,时间规整后瞬时频率不变,保证了音调不变,但是时间过程扩展为原来的倍。
变调不变速处理后,各个频率成分随系数拉伸或者收缩。
对应于浊音,为随时间变化的第一谐波,即基频;其他频率成分对应于其它谐波。
由上分析可知,基于正弦模型的变调方法最大难点在于提高谐波分析的精确度,降低参数估计的复杂度。

参考:
https://www.cnblogs.com/welen/p/3782896.html
https://librosa.org/doc/latest/generated/librosa.effects.pitch_shift.html?highlight=pitch_shift

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/354920
推荐阅读
相关标签
  

闽ICP备14008679号