「螞蟻呀嘿」 刷屏的背後:演算法工程師帶你理性解構神曲
前幾天小夥伴們是不是都被魔性的「螞蟻呀嘿」刷屏了?其實背後的技術含量並不複雜,主要依靠的是換臉技術和自動節奏檢測,演算法會找到節奏點,在這些節奏點搖臉換表情,這樣一支魔性而上頭短影片就誕生了。今天為大家一一解構那些網路神曲,分享音樂資訊檢索演算法,帶你理性看神曲,或許下一個網路神曲締造者就是你!
作者:意姝
審校:泰一
什麼是音樂?
《禮記》里說,「凡音者,生人心者也,情動於中,形於聲,聲成文,謂之音」,音是表情達意的一種方式。從樂理上講,通常音樂是由節奏、旋律、和聲這三要素構成的,十二平均律這些律式和數學緊密相關。所以我們可以說,音樂是一個感性與理性交融的產物。而今天要介紹的音樂資訊檢索(Music Information Retrieval,MIR),便是從音樂里提取 「資訊」 ,用演算法將音樂中理性的一面挖掘出來。
哪些是音樂的資訊?
1. 節奏
首先我們來聽一首抖音神曲:《鰲拜鰲拜鰲拜拜》
//y.qq.com/n/yqq/song/000ZCScz4g4BuM.html
歌曲中讓你忍不住跟著一起搖頭抖腿的強烈的鼓點,就是節奏點,這是對節奏一種感性的認知。
嚴格來說,節奏是被組織起來的音的長短關係,它像是音樂的骨架,把音樂支撐了起來。譬如下圖樂譜上的 「4/4」 是拍號,代表著這首曲子的音長的組織形式為:以四分音符為一拍,每小節 4 拍。每小節的第一拍往往為強拍(downbeat),這裡的 「down」 和指揮的手勢一致。
其它常見的拍號還有:2/4,3/4 等,這些都是單拍子(simple meter),也就是每拍自然二等分的節拍。除此之外還有復拍子(compound meter),指的是每拍自然三等分的節拍,如 6/8,復二拍子,讀作 「一二三,二二三,一二三,二二三」 。
爵士樂、靈魂樂的魅力很多都在於對節奏的運用,遺憾的是,相當一部分華語流行歌曲都是 4/4 拍子的,導致聽感上有很多雷同之處。
2. 音高
音樂是一種聲音,所以也是由物體震動產生的,音的高低是由振動頻率決定的。樂器發出的聲音或人聲,一般都不會只包含一個頻率,而是可以分解成若干個不同頻率的音的疊加。
這些頻率都是某一頻率的倍數,這一頻率就稱作基頻,也就決定了這個音的音高。下圖為一段男聲朗讀的音頻的語譜圖,最下面藍色框出來的部分就是當前時刻的基頻。通常人聲的音高在 100Hz~200Hz 左右。
對於流行歌曲而言,音高常常指的是它的主旋律,也就是人聲唱的部分。
3. 和弦
現代音樂概念裡面,由多個不同的音高同時發聲就叫和聲,三個或三個音以上的和聲就叫做和弦。當這些音同時彈奏時,叫做柱式和弦,而當它們先後奏出時,便叫做分解和弦。
不過,並不是隨便按下幾個音,都可以帶來悅耳的聽感。由十二平均律可知,一個八度平均分成十二等份,每份稱為半音,每個半音的頻率為前一個半音的 2 的 12 次方根。常見的有三(個音的)和弦,七(度音的)和弦,基本的三和弦的組成如下圖所示。
4. 段落
像文章一樣,音樂也可以劃分為一個個段落,讓情感的表達有了起承轉合。段落的組織形式多種多樣,常見的有如下幾種:
- AAA一段旋律的重複,簡潔明了,常見於宗教音樂。
//y.qq.com/n/yqq/song/004Yc5sF3Rq7Wn.html
- ABAB兩段旋律交叉重複。
//y.qq.com/n/yqq/song/000aKduC3mu0IL.html
鋼鐵俠出場音樂
- AABA在重複的旋律中添加一段不太一樣的,避免乏味感,如這首聖誕歌曲。
//y.qq.com/n/yqq/song/002zL7ur42FYtK.html
- 古典音樂
一些古典音樂有自己的內容組織形式,如奏鳴曲式(sonata form),它的結構由呈示部、展開部、再現部三大段依序組成。
- 流行音樂
大家比較熟悉的結構是 「前奏、(主歌 – 副歌)*n、尾奏」 ,當然流行音樂的創作比較自由,有時創作者會在兩段副歌之間添加橋段來避免單調,或在主歌與副歌之間添加過渡段,使得情緒過渡更為自然。
如何提取這些資訊
傳統的方法是 「提特徵 + 分類器」 ,這些特徵包括時域和頻域的。
音頻訊號常常用二維的特徵來表徵:一維頻率、一維時間。這樣我們可以用對待影像的方式,將音頻特徵輸入到分類器中。不過音頻特徵和影像也有所區別,影像具有局部相關性,即相鄰的像素點特徵比較接近,而頻譜的相關性,體現在各個泛音之間,局部的相似性比較弱。
舉個栗子,我們用周杰倫《簡單愛》的前 10s 的和弦(C,G,Am,F)渲染出一段音頻,下圖所示的 4 個頻譜類的特徵,從左上到右下分別為:短時傅立葉變換、Mel-Spectrogram、Constant-Q Transform、Chromagram,前三個都可以理解為通過濾波器組把原始的音頻訊號做拆分。
在提取特徵的過程中,一些抽象的、隱藏在音樂訊號中的語義便浮出水面。在 Chromagram 中,縱軸是 Pitch Class(音高集合,e.g. 「音高集合 C」 包含了 C1,C2,C3….)。從圖中可以看出,0s~3s 最亮的三個音分別是 C、E、G,可以推測出這是一個 C 和弦,合適的特徵讓 「和弦檢測」 這個分類任務的難度有所降低。
隨著深度學習在各個領域的蓬勃發展,深度網路也逐漸成為 「分類器」 的首選,不過也要 「因地制宜」 ,像節奏這種對音樂上下文有所依賴的音樂 「資訊」,RNN 類的網路往往效果更佳。
我們現在能做到哪些
因為我們的應用場景同時包含了實時與離線,所以下列演算法很多都有實時的版本,可用在實時音影片通訊等場景。
1. 節奏檢測
如上文所述,節奏點就是歌曲拍子所在的位置。前陣子比較火的 「螞蟻呀嘿」,照片中頭動起來的樣子非常魔性,這些動作就是按照歌曲的節奏點來設計的。下面我們把利用演算法檢測出來的節拍,用類似於節拍器的聲音呈現出來,學過樂器的同學應該對這 「嗒嗒嗒」 的聲音有印象。通過節奏檢測的演算法自動識別出其他歌曲的節奏點,我們也可以製作自己的 「螞蟻呀嘿」 模板。
//v.youku.com/v_show/id_XNTExOTA4Mzc2MA==.html
上文還提到了 「強拍」 ,可以用來區分小節。我們的方法除了檢測出 beat,還能區分出 downbeat,下面的影片展示出了 「螞蟻呀嘿」 里的 downbeat:
//v.youku.com/v_show/id_XNTExOTA4MzQ1Mg==.html
有同學可能會好奇,你們的演算法檢測出 beat、downbeat 有什麼用啊,不就是一些時間點嘛?
其實可以衍生出很多音樂的玩法,譬如說前幾年很火的音樂遊戲,節奏大師,一個跟著旋律、節奏來瘋狂輸出的遊戲。
我們在公開數據集(GTZAN)和由 100 首流行歌曲構成的內部數據集上,評測了我們的方法,結果如下表所示。我們的方法在兩個數據集上均有 0.8 以上的 F 值,具有一定的魯棒性。
2. 實時音高檢測
我們的方法可以做到輸入一幀音頻,然後輸出當前幀的音高,以赫茲為單位。
上面這句話看上去似乎有些乾癟,那這些數字有哪些作用呢?
舉個栗子,很多 K 歌軟體里都有下圖中紅框中的內容,它們是歌曲的音高線。衡量歌唱得準不準,主要就是看演唱者的音高、節奏和原曲的匹配程度。
在這個場景下,我們的音高檢測演算法可以實時地分析用戶的演唱水平,並給出分數。
除此之外,實時音影片通訊中的一些場景也依賴音高檢測,如 Voice Activity Detection (VAD),如果當前幀有音高的話,說明有人聲。
3. 段落檢測
流行音樂常見的段落類型有:前奏、主歌、過渡段、副歌、間奏、橋段、尾奏這 7 種。
我們調研了市面上做段落檢測的方法,很多都是基於自相似矩陣(Self-Similarity Matrix, SSM),對音樂結構做了 segmentation,也即它們僅僅能劃分時間區間,而無法給出具體的段落類型;Ullrich et al. 提出了基於 CNN 的有監督學習的方法,可以檢測出不同粒度下段落的邊界。除了 「segmentation」 ,我們的方法還可以做到 「classification」,即可以給出每個段落的時間區間和類型(上述 7 種)。
我們選取了音樂軟體上熱門榜單里的前 100 首歌曲,來作為我們的評測樣本集,評測結果及指標含義如下所示:
這 100 首中包含了 19 首土味 DJ remix 歌曲,由於這些歌曲動態範圍較小,能量很強,「動詞打次」 的聲音掩蓋了很多原曲的特質,所以在這類歌曲上,段落檢測演算法表現較弱。刨除這些 DJ 歌曲後,演算法的 F_pairwise_chorus 可以達到 0.863。
考慮到現在對音樂的消費越來越快餐,而且有時候為了給影片配樂,需要截取音樂的片段,而副歌往往是一首流行樂最 「抓耳」 的部分,我們將演算法封裝為 「副歌檢測」 的功能,一鍵幫用戶篩選出流行歌里所有的副歌,具體的調用方式在這裡。
這裡以周杰倫的《說好的幸福呢》為例,演算法的輸出結果如下圖所示,時間單位為秒,大家可以邊欣賞 MV、邊感受副歌的情感與能量~
4. 實時聲音場景識別
上文提到了一些 MIR 演算法的效果及應用,不過在哪些場景下可以使用它們呢?也即如何區分出音樂場景呢?
針對這個問題,我們提供有聲音場景識別的演算法能力,可以識別出當前是 「語音、音樂、雜訊」 中的哪一種,而且針對語音,可以進一步區分性別(男 | 女)。
下面是一段《新聞聯播》的音頻,聲音場景識別演算法標記出了其中的音樂、男聲、女聲,以及無聲音(也即沒有能量)的部分。
//v.youku.com/v_show/id_XNTExOTA4NDQ0NA==.html
關於我們
阿里雲影片雲 – 語音與音樂演算法團隊,主要為影片時代的娛樂、教育等場景提供語音音樂等音頻的解決方案。在這裡你可以了解到更多前沿的音頻演算法應用,歡迎與我們一起打造更好的音頻世界!
「影片雲技術」你最值得關注的音影片技術公眾號,每周推送來自阿里雲一線的實踐技術文章,在這裡與音影片領域一流工程師交流切磋。