乐趣区

关于ios:音频社交的变声应用了哪些算法

导读:2021 开年以来,音频社交市场随同着 Clubhouse 的爆火再获资本的关注,国内相干产品荔枝、映客都迎来了股价的大幅上涨,预计将来音频化在社交畛域还会有长期且宽泛的需要。

在挪动互联网技术加持下,音频社交不仅能够满足多场景下的社交需要,体验也迎来了变革,尤其是 AI+5G 技术,对音频社交的驱动将更为显著 。很多社交产品会基于音频技术减少 变声、美声、立体声、混响和场景化音效 等,来丰盛用户的听感体验。本篇技术分享就来讲讲音频社交场景中的变声是利用了哪些算法来实现的。

01 变声是如何实现的?

当咱们日常观看视频时,有时会应用倍速播放。在放慢播放速度时,咱们会感觉视频中的男声听起来有点像“女声”;在加快播放速度时,咱们能听到相似于《疯狂动物城》中那个谈话慢悠悠的“树懒声”。这些其实就是简略的变声。

从技术的角度并不难理解,如果咱们用 16k 的采样率去采集一个 100Hz 的正弦波,而用 32k 或者 8k 的采样率去播放的话,那么这个正弦波的频率就会晋升一倍(200Hz)或者升高一倍(50Hz)。这样将音频的频率升高或者升高的办法很简略,晋升一倍就是每隔一个抛弃一个样本,加快一倍就是进行一个线性插值。用业余的术语来说,这是一个重采样的过程。依照重采样办法是能够实现一个变调的,但同时也很容易发现,音频的工夫变长或者变短了,和咱们原始输出的音频长度不统一了,这在实时通信中是不能承受的。在实时通信中,咱们要的是一个变调不变速的变声性能,繁多的重采样办法是做不到的。当然除了重采样,咱们还有其余的一些变声办法可能实现变调不变速的需要。

02 变声有哪些常见的算法?

常见的变调算法有时域、频域和参量法。时域较易实现,多采纳变速不变调 + 重采样实现变调不变速等。频域以及参量法就绝对简单,并且计算量相比于时域大了很多。本次次要简略介绍一些常见的时域和频域算法。

在时域内次要是 OLA(Overlap-Add)类算法:OLA,同步波形叠加法(Synchronized Overlap-Add, SOLA)、固定同步波形叠加法(Synchronized Overlap-Add and Fixed Synthesis, SOLAFS)、时域基音同步叠加法(Time-Domain Pitch Synchronized Overlap-Add, TD-PSOLA) 波形类似叠加法(waveform similarity overlap-and-add, WSOLA) 等,频域内次要是基音同步波形叠加算法 (Pitch-Synchronized OLA, PSOLA) 等。

1)OLA

OLA 是最简略粗犷的一种 TSM 形式。对原始语音进行分帧后,距离一段采样点,反复或者抛弃其中某些语音帧来从新建设语音。这样就实现简略的变音成果。原理如下图所示:

a. 分帧,对时域音频进行分帧解决;

b. 在输出信号 X 上加上一个汉宁窗;

c. 在第一帧后距离固定点数 Ha 取出第二帧;

d. 把第二帧语音加窗后与第一帧 overlap-add。

如此操作到语音完结就能重建一个新的变调语音。然而这算法存在肯定的局限性,无奈保障语音是间断的,可能会呈现基音断裂的状况。这样的语音听起来会有咔吧声,造成了语音的失真。

2)波形类似叠加法(waveform similarity overlap-and-add, WSOLA)

理解了简略粗犷的 OLA 算法后,咱们能够清晰的晓得 OLA 算法的局限和缺点。当然也晓得造成这种缺点的起因是什么:相位不间断导致的。为了减小基音断裂和相位不间断问题,Verhelst 和 Roelands 提出了波形类似叠加法(WSOLA)。目前开源代码 soundtouch 应用的就是该算法。其原理如下图:

a. 在原始音频中取出第一帧,让后对该帧进行加窗,输入到 y 信号上;

b+c. 在虚线蓝色范畴内找到第二帧,第二帧相位参数应该和第一个帧相位对齐,在蓝色范畴内寻找与第二帧最类似的帧作为输入帧,作为 y 信号的第二帧;

d. 最为类似的帧与第一帧 overlap-add 到 y 信号上

重点在 b.c 两步操作中,如何寻找最类似的帧。很多论文中给出了一种最间接的办法,计算“自相干”。尽管 WSOLA 可能解决基音断裂和相位不间断问题,然而它会影响音色,将 WSOLA 利用于打击乐乐器的音频时,这种景象将会更加的显著。

3)基音同步波形叠加算法(Pitch-Synchronized OLA, PSOLA)

PSOLA 的算法原理与 WSOLA 有所不同,PSOLA 在频域解决的,它能进一步达到基音同步的目标。在该算法中,变速和变调是两个独立的过程,由不同的参数管制。先对基音进行检测,标记基音周期。通过标记的基音周期将语音划分为多个合成单元。通过反复或者失落合成单元来实现语速的管制。通过扭转相邻合成单元的重叠长度或者重采样联合变速来扭转语音的基频。

PSOLA 是对基频进行批改的,因而很好的爱护了共振峰,不会对音色有太大的影响。不过该算法在频域中进行解决的,计算量大,很难满足实时的变速与变调解决。

03 结束语

以上简略介绍了三种常见的变声算法,这三种算法能够粗略实现大叔音、萝莉音以及怪兽声等。然而想要做到变声后的声音听起来更加实在天然,就须要进一步的优化调试了。除了这些算法外,还有其余的变声音效,比方常见的“惊悚声”,使用了 vibrato 或者 tremolo 算法,还有“山谷空灵音”使用了 echo 算法等等,这些算法都是基于传统的信号处理实现的。在传统的信号处理变声办法外,还有更高级的变声算法:AI 变声。AI 变声相比于传统的信号处理办法,会让变声后的声音更加实在天然。

注:文中图片来源于《A Review of Time-Scale Modification of Music Signals》论文

关注拍乐云 Pano,咱们会在后续的文章中继续分享对于音视频、实时通信的产品技术常识。

退出移动版