第一章 相位编码器(Phase Vocoder)

第一章 相位编码器(Phase Vocoder)

开篇先留一个问题,现在TTS大模型、音乐生成大模型的“电音”/“机器音”/“合成音”、“金属感”、以及清晰度低在信号层面该如何解释?

在音乐效果器、音乐合成、视频倍速播放、实时通话场景中音视频同步等常常需要用到变速、变调的需求,而Phase Vocoder就是其中一种技术,相位编码器可以实现时频伸缩,即改变声音的速度而不改变音高,或改变音高而不影响时长,但当伸缩的尺度较大时,会使得伸缩之后的音频存在明显的“相位感”和“混响感”,可以通过“锁相”的方式改善伸缩之后音频的自然度,所以很多后续技术集中在如何提升变换之后声音的质量上。

该方法的核心思想是通过傅里叶变换将信号从时域转换到频域,再对频域中的各个组分进行伸缩、位移等操作,最后通过逆傅里叶变换将其转换回时域,即分析-修改-合成处理过程,通过使用不同的时间步长进行STFT分析和合成,但这可能引起相位失真,因此相位声码器的主要挑战是STFT相位的校正。目前如Aubio、SuperCollider等音频处理库提供相位声码器工具。

为了解决相位失真,1999年J. Laroche, M. Dolson提出了锁相技术[1]。在这之后有很多学者提出了更优的峰值检测和相位连续性处理方法,比如2022年Zdenek Pruša等人提出的相位梯度估计及其积分的相位校正方法[2]。

变调的基本思想

要在不改变音频长度的情况下调整音高,可以先使用音高变换技术改变音频的频率,然后通过时间伸缩技术调整音频时长以保持原长。这样处理后,音频的音高改变了,但播放时间保持不变,既达到了变调的目的,也保留了原有的节奏感。
请添加图片描述
上面分析和合成信号时对音频帧进行加窗和重叠是非常重要的,这可以有效减少了频谱泄漏,并使沿时间轴的分析更加平滑。另外这使得对音频进行重新采样可行,这样可以在不改变其持续时间和时序而改变音频的音高而。但这会导致在衔接处若干频率成分相位互相之间以及连续的两帧之间存在明显的“拼接”痕迹,这会影响重构信号的质量,使得音频的稳定部分听起来有“相位感”,而瞬态部分听起来“涂抹”。

此外,上述的音高修改技术将改变信号的共振峰/频谱结构。共振峰是围绕特定频率的声学能量集中区域,这些区域自然会随着转换过程而移动,这会使得高音区的输出声音听起来非常人工化。因此锁相技术也要减少共振峰损失。

为了确保频率间相位的一致性,Laroche and Dolson提出scaled phase locking方法,即可以通过分析、跟踪频率通道中峰值的局部最大值来更新相位[3],此外此方法还使用基于倒谱的真实包络对每个信号帧的频谱包络进行预变形,从而保留了共振峰结构。但是,它通常仍然无法适应打击乐声音和瞬态事件。

变速的基本思想

为了伸缩时间,我们可以在执行短时傅立叶变换(STFT)和逆短时傅立叶变换时使用不同的跳跃大小(hop sizes)。虽然步长被伸缩,但窗口大小保持不变。但是,在重构时我们不能仅仅将帧累加起来。为了减少不连续性,我们需要进行一些频谱处理。这种技术称为相位声码器,它包括三个阶段:分析、处理和合成。
请添加图片描述

相位校正

在频域中,声波被解释为频率的幅度和相位。我们通常不会修改频率的幅度,因为幅度代表了频率成分的能量。因此,我们只对相位进行校正。
请添加图片描述

锁相

在相位校正过程中,可能会存在一些彼此接近的频率,因此它们之间的频率点将受到这些频率的影响。在这种情况下,对真实频率的估计可能不准确。相位锁定是一种用来减少由此产生的失真的技术。首先,通过检测局部最大值来定位突出的峰值(最接近真实频率的峰值),并定义影响区域。对于区域内的所有频率点区间,其相位变化与峰值的相位变化相同。请添加图片描述

经典的PV代码

在这里插入图片描


    # define the window size, synthesis hop size, and analysis hop size
    window_size = 2048
    synthesis_hopsize = window_size/4
    analysis_hopsize = int(synthesis_hopsize/pitch_ratio)

    # signal blocks for procesynthesis_hopsizeing and output
    delta_phase = np
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shichaog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值