導讀: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的知乎号或者公衆号,我們會在後續的文章中持續分享關于音視頻、實時通信的産品技術知識。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!