tft每日頭條

 > 科技

 > k歌模式人聲伴奏怎麼調

k歌模式人聲伴奏怎麼調

科技 更新时间:2025-02-08 21:50:41

k歌模式人聲伴奏怎麼調(手機K歌的人聲伴奏對齊優化實踐)1

人類大腦對聲音的響應速度和敏感程度非常高。K歌時對人聲音軌和伴奏音軌的時間對齊有很強的要求。唱吧資深研發總監 王國騰在LiveVideoStackCon2018大會的分享中詳細介紹了手機K歌在混音對齊方面存在的問題,解決方案以及值得探索的方向。LiveVideoStack對演講内容進行整理。

文 / 王國騰

整理 / LiveVideoStack

大家好,我是王國騰,在唱吧主要負責音視頻技術的研發和音頻新技術的科研工作。本次将主要為大家介紹手機K歌在混音時間對齊方面存在的問題,常規的工程解決方案以及值得探索的方向。

1、手機K歌簡介

k歌模式人聲伴奏怎麼調(手機K歌的人聲伴奏對齊優化實踐)2

手機K歌APP模拟的唱歌過程中兩個主要的界面場景,演唱和預覽。演唱界面,用戶跟随伴奏和提示的歌詞完成唱歌,主要生成一股人聲的幹聲。預覽界面提供了很多音效的後期處理。包括音準和節奏的校準、特效或預制的混音需求,幹聲和伴奏的合成預覽,甚至是分析人聲特點,添加一些動态的音效,做到一鍵修音。

2、音質的評價标準

k歌模式人聲伴奏怎麼調(手機K歌的人聲伴奏對齊優化實踐)3

聲音後處理的效果要如何評價呢?比如一些混音師,他們有時候會說這個聲音很頂,不夠飽滿,然而從工程和科學的角度,我們從幾個抽象維度描述音效:還原度,清晰度,區分度,瑕疵的掩蓋能力,以及音樂和聲音融合度。

還原度是一個比較客觀的量化标準,即聲音重放質量與原聲對比,能夠達到怎麼樣的程度;清晰度形容人聲“咬字清晰”,比如說到元音的時候瞬态好不好,說到輔音的時候音量是不是過大或者過小了。如果輔音的音量太大的話,聽起來會比較刺耳,如果音量太小的話,會有點像大舌頭似的感覺。區分度是我們增加的一個指标,希望用戶能夠有很多不同的選擇。比如說以前在八九十年代的大搖滾的作品,都會做很大的混響,而現在一般都會把這個聲音做得比較幹,期望将歌手的原音表達更清楚。瑕疵掩蓋能力是指即便音準和節奏都正确,但由于個人的音色引起的一些聲音處理的問題。比如鼻音比較重的話,在音效處理的時候,我們應該怎樣去處理這種瑕疵問題,還有些人唇齒音會比較重,這種問題要怎麼處理,是瑕疵掩蓋能力。音樂和聲音融合度,人聲也是寬帶信号,在低頻上面,諧波會多一些。一段音樂伴奏,它所能覆蓋的頻段是比較寬的,那麼該怎樣将這兩個聲音融合在一起,并且還能清楚的聽到人聲。而另外一個就是在音樂上面特有的問題,節奏是應該嚴格對齊的。音準和節奏都是有融合度問題,音準和節奏不準了,聽起來會是個跑調的狀态。

我們假設人聲唱的節奏本身沒有問題的話,将人聲和伴奏混在一起,如果偏差超過了35毫秒,人耳就會感覺到異常,如果超過50毫秒,就已經是不可接受的了。除此之外,根據我們所做的雙盲測試,專家級的耳朵,如果人聲比伴奏提前10~15毫秒,或者是比伴奏晚了25毫秒,那麼在專家級别人的耳中是有感覺的。總的來說,偏差在35毫秒之内大約有90%的人是沒有感受的。在音樂節奏的場景下,人的耳朵會非常敏感。在唱歌時,聽到音樂的人本身對節奏會有一個認識,然後會再根據這個節奏唱出自己的聲音,一般歌曲的速度穩定,那麼唱歌的人也會跟随穩定的速度演唱,由此可見人本身就是無延遲的反饋系統。

3、時間偏移要義

演唱時間偏移主要分成兩大類,一類是演唱實時反饋的時間偏移,一類是混音對齊的時間偏移。

演唱實時反饋的時間偏移,主要關注的是演唱時,人聲與從耳機反饋回去(實時耳返)的聲音之間的實時偏移。這個偏移量一般我們要控制在30毫秒以下,如果在30毫秒以上,人唱歌的時候會受到一些影響;在50毫秒的時候,演唱就會變得非常困難。混音對齊關注的是人聲和伴奏能否以對齊的方式混合在一起。

k歌模式人聲伴奏怎麼調(手機K歌的人聲伴奏對齊優化實踐)4

這裡介紹一個測試演唱實時反饋的方法。找一個示波器,分别采樣麥克風和耳機的聲音信号,測試人員可以發出一些比較短促的聲音,如敲擊或是脈沖。此時示波器上可以看到分别從麥克風采集出來的脈沖與從耳機得到脈沖,通過兩個脈沖的時間差就能了解到演唱實時反饋的時間偏移量的大小。

在安卓設備的系統中,各個廠家通常會做一些标識,”low_latency” tag 和”hardware.audio.pro” tag,這兩個tag會告訴開發人員,手機的演唱實時反饋偏移量的大小。”low_latency”關注的是在手機中播放一個聲音,從需要播放到speaker真正發出聲音來,偏移量的大小,一般是在45毫秒以下。而audio.pro則是round trip的時間,通常在20毫秒以内。

造成演唱實時反饋時間偏移的原因分為以下幾種:計算性能導緻的,系統性能導緻的,處理緩沖區導緻的時間偏移。

4、安卓手機的優化處理

k歌模式人聲伴奏怎麼調(手機K歌的人聲伴奏對齊優化實踐)5

上圖為安卓手機處理聲音的示意圖,我們從Speaker輸入聲音,依次經過ADC,總線Bus,Driver,Audio Recorder,應用程序,再轉回來整個一圈的處理時間,就是之前提到的round trip 時間。除此之外,在應用層時我們還會将聲音信号單獨寫出一個文件,用來進行後處理。我們希望能将演唱實時反饋的延遲時間控制在30毫秒以内,然而在上述過程中的每個處理步驟都會花掉一些時間,一般情況下,audio flinger可能會花掉10~20毫秒,audio track可能會花掉20~40毫秒。當然,根據設備的不同,實際耗時也會有所不同。

k歌模式人聲伴奏怎麼調(手機K歌的人聲伴奏對齊優化實踐)6

上圖展示是我們所做的一種通用的耳返延遲優化方案,将之前上層的audio record和audio Track改成用Open SL來處理。因為Open SL本身是稍微偏底層的接口,這樣我們就可以避免掉不少延遲量,并且這個延遲量是相對穩定的。針對相同型号的手機它們的差别并不是很大,并且在不同錄制上面的差别也比較小。

k歌模式人聲伴奏怎麼調(手機K歌的人聲伴奏對齊優化實踐)7

上圖是現有國産手機時間延遲的解決方案,因為它們手機延遲量的性能指标不滿足需求,所以就找到了另外一種方式來繞過這個問題。把一個聲音從麥克風錄進去,我們隻進行半區的處理後保存下來。耳返的聲音從手機麥克風添加的旁路芯片直接出來,這種做法的延遲量能夠控制的非常小,但芯片處理得到的耳返音效,甚至音量等因素,都很難控制。并且每個廠商會有自己不同的方案,處理的情況也都各不相同,這也大大增加了應用程序上控制的難度。另外,由于安卓手機型号碎片化的問題,需要我們一個一個去做,進展是還是比較緩慢的。但我們仍然可以提供一些經驗,比如說我們拿Open SL來處理IO,但是不要處理音效,在旁路添加C code來完成。因為Open SL做音效存在較多問題,可能會快15~20毫秒,甚至會出現丢幀。如果我們需要在耳返處理添加實時效果器,一定要保證效果器是實時的,處理本身的固定緩沖延遲盡可能小。當效果器處理是大計算性能的話,我們要考慮讓它走一個旁路來完成異步處理,隻讓濕聲去走效果器,幹聲仍然直接按原路回來,這樣的話,我們可以把這個延遲量控制的隻是幹聲的延遲量。在安卓上面可以用一些NEON指令做運算優化,在iOS上面會用DSP做計算的優化。

5、混音對齊要義

k歌模式人聲伴奏怎麼調(手機K歌的人聲伴奏對齊優化實踐)8

混音對齊延遲再細分成4個場景,錄放的首幀延遲,演唱中斷偏移,效果去處理延遲和歌手演唱誤差。歌手演唱誤差很好理解,屬于自身唱得就不準。錄放首幀延遲是指錄音文件第一幀時間與伴奏的時間相比較,如果二者在現實中不一緻的話,就會産生播放首幀延遲。效果器處理延遲,是指我們在做信号處理的時候,可能會存在一些算法導緻的延遲,此外還有一些計算性能導緻的延遲。演唱中斷偏移則是由一個特殊的功能導緻的,是指我們在用手機APP唱歌的時候,是有可能暫停的,比如來個電話、回個微信或者錄了一句不滿意反複錄播,暫停以後繼續切回來。這個時候,如果本身就存在錄放延遲的話,那麼中斷一次就會導緻再産生一個新的錄放首幀延遲,這個延遲累計起來就會是一個比較嚴重的問題了。有可能前面還是在可控制範圍之内,到後面延遲越來越大,就無可奈何了。

k歌模式人聲伴奏怎麼調(手機K歌的人聲伴奏對齊優化實踐)9

那麼我們怎麼去解決這四類問題呢?分析一下造成首幀延遲的原因,一般設備初始化IO調用的時候會産生延遲,最直接的解決方法就是把音頻的錄音設備和放音設備相關初始化提前到我們真正開始寫文件和開始播放的時候。首幀延遲問題不光存在安卓和IOS裡,小程序中的這個問題更嚴重。如果沒有将初始化的時間提前到足夠量的話,那麼最終混音出來的伴奏和人聲的時間差可能達到1~2秒的級别。第二個是減少系統開銷,系統開銷主要是會造成播放首幀延遲的抖動,形成不穩定的延遲量。而如果是在穩定延遲量的情況下,我們可以通過做一些白名單的方式去解決。現在國産的一些旗艦機,它們的錄放首幀延遲基本都是穩定的,甚至有些可以滿足30毫秒之内的要求。但也有不少低端機型的延遲量比較大,能夠到100~200毫秒。除此之外,現在安卓手機的KTV APP裡,都會保留着一個slide bar來進行人肉對齊。

k歌模式人聲伴奏怎麼調(手機K歌的人聲伴奏對齊優化實踐)10

效果器延遲的問題就比較好解決,因為混音對齊是後處理,不受計算性能的影響,我們隻要保證它不丢幀,因為每一幀的人聲都會對應到每一幀内伴奏上面,所以它的混音對齊不管是計算性能好,還是計算性能差,都一定是從第一幀開始對齊,到最後一幀還是對齊的。我們需要考慮的是,算法延遲量是什麼樣的,如果算法的延遲量是一個比較穩定且理論上可以計算的話,這件事情就比較簡單了。我們最終把人聲和伴奏混在一起的時候,把延遲量再找回來就好了。還有一些效果器,可能是不穩定的偏移,隻能從算法上做優化,比如說剛才我講的實時反饋的延遲量,也是可以通過這種方式來解決的,我們在濕聲和幹聲上進行單獨的處理。還有一些效果器本身就是一個不穩定偏移量,沒有辦法做一路濕聲,那麼我們就隻能從算法上盡量把它減小。

k歌模式人聲伴奏怎麼調(手機K歌的人聲伴奏對齊優化實踐)11

再單獨說一下演唱中斷偏移,比如說暫停或重複上一句,這樣都會導緻一些演唱中斷偏移。其解決方法與上文錄放首幀偏移是類似的。需要注意的一點就是用戶要暫停這件事情從根本上說并不是要停止錄制,而隻是想暫停一下,那麼我們就可以用靜音做播放補償,如果錄放需要快進的話,我們可以再做剪接。

k歌模式人聲伴奏怎麼調(手機K歌的人聲伴奏對齊優化實踐)12

我們在唱歌的時候,如果需要暫停,我們不需要讓播放伴奏這一路真正的停止播放,而是插入靜音幀。人聲這一路,也是同樣的處理,因為一旦停止并重新運行就會産生新的錄放首幀延遲。如果選擇靜音,我們隻需要在最後混音的時候,嚴格減去相同的靜音數據就可以完成同步。

k歌模式人聲伴奏怎麼調(手機K歌的人聲伴奏對齊優化實踐)13

人聲在K歌的時候是一個貼唱的過程。貼唱就是指我們現在已經有一個伴奏,人聲根據伴奏逐句演唱。人聲演唱時包含以下特點:輔音提前,元音對齊;伴奏速度基本穩定;節奏型出錯少,速度型出錯多。那麼根據這些特點我們該如何解決混音對齊的問題?我們可以分析識别人聲的節奏特點,比如我們可以将元音的時間全都找出來,将伴奏的速度找出來,然後再去做宏觀偏移,這個宏觀偏移是我們整首歌的宏觀編譯,也可以是按句的宏觀偏移。将每一句拉伸,壓縮,做偏移,再和伴奏的速度對比,這樣就可以比較容易的解決歌手演唱誤差導緻的時間偏移。例如唱吧的預覽界面中展示的一鍵修音功能。

k歌模式人聲伴奏怎麼調(手機K歌的人聲伴奏對齊優化實踐)14

還有其它有關K歌對齊的問題,比如說丢幀遷移,當本身計算性能有問題的時候,産生丢幀,勢必會造成偏移;還有像原唱和伴奏切換時的偏移,原本混音是按伴奏來進行的,但由于原唱和伴奏之前的時間差,人聲伴奏在混音時,就會産生一些偏移量。像歌詞和伴奏的同步,一般隻有在差别比較大的時候才會出現問題,因為人的眼睛相對來說沒有那麼敏感;然後就是異步合唱,當我唱完歌曲中的一部分後,再去找另外一個人,補充一個唱段,這樣就可能會多次産生偏移;當然還有合唱直播,清唱伴奏跟随,DJ無縫切歌,節奏修正等等其它我們可能遇到的一些K歌中的人聲伴奏對齊問題。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved