「螞蟻呀嘿」 刷屏的背後:算法工程師帶你理性解構神曲

前幾天小夥伴們是否是都被魔性的「螞蟻呀嘿」刷屏了?其實背後的技術含量並不複雜,主要依靠的是換臉技術和自動節奏檢測,算法會找到節奏點,在這些節奏點搖臉換表情,這樣一支魔性而上頭短視頻就誕生了。今天爲你們一一解構那些網絡神曲,分享音樂信息檢索算法,帶你理性看神曲,或許下一個網絡神曲締造者就是你!html

做者:意姝
審校:泰一算法

什麼是音樂?

《禮記》裏說,「凡音者,生人心者也,情動於中,形於聲,聲成文,謂之音」,音是表情達意的一種方式。從樂理上講,一般音樂是由節奏、旋律、和聲這三要素構成的,十二平均律這些律式和數學緊密相關。因此咱們能夠說,音樂是一個感性與理性交融的產物。而今天要介紹的音樂信息檢索(Music Information Retrieval,MIR),即是從音樂裏提取 「信息」 ,用算法將音樂中理性的一面挖掘出來。網絡

哪些是音樂的信息?

1. 節奏

首先咱們來聽一首抖音神曲:《鰲拜鰲拜鰲拜拜》ide

https://y.qq.com/n/yqq/song/000ZCScz4g4BuM.html學習

歌曲中讓你忍不住跟着一塊兒搖頭抖腿的強烈的鼓點,就是節奏點,這是對節奏一種感性的認知。阿里雲

嚴格來講,節奏是被組織起來的音的長短關係,它像是音樂的骨架,把音樂支撐了起來。譬以下圖曲譜上的 「4/4」 是拍號,表明着這首曲子的音長的組織形式爲:以四分音符爲一拍,每小節 4 拍。每小節的第一拍每每爲強拍(downbeat),這裏的 「down」 和指揮的手勢一致。設計

其它常見的拍號還有:2/4,3/4 等,這些都是單拍子(simple meter),也就是每拍天然二等分的節拍。除此以外還有複拍子(compound meter),指的是每拍天然三等分的節拍,如 6/8,復二拍子,讀做 「一二三,二二三,一二三,二二三」 。orm

image.png

爵士樂、靈魂樂的魅力不少都在於對節奏的運用,遺憾的是,至關一部分華語流行歌曲都是 4/4 拍子的,致使聽感上有不少雷同之處。視頻

2. 音高

音樂是一種聲音,因此也是由物體震動產生的,音的高低是由振動頻率決定的。樂器發出的聲音或人聲,通常都不會只包含一個頻率,而是能夠分解成若干個不一樣頻率的音的疊加。htm

這些頻率都是某一頻率的倍數,這一頻率就稱做基頻,也就決定了這個音的音高。下圖爲一段男聲朗讀的音頻的語譜圖,最下面藍色框出來的部分就是當前時刻的基頻。一般人聲的音高在 100Hz~200Hz 左右。

對於流行歌曲而言,音高經常指的是它的主旋律,也就是人聲唱的部分。

image.png

3. 和絃

現代音樂概念裏面,由多個不一樣的音高同時發聲就叫和聲,三個或三個音以上的和聲就叫作和絃。當這些音同時彈奏時,叫作柱式和絃,而當它們前後奏出時,便叫作分解和絃。

不過,並非隨便按下幾個音,均可以帶來悅耳的聽感。由十二平均律可知,一個八度平均分紅十二等份,每份稱爲半音,每一個半音的頻率爲前一個半音的 2 的 12 次方根。常見的有三(個音的)和絃,七(度音的)和絃,基本的三和絃的組成以下圖所示。

image.png

4. 段落

像文章同樣,音樂也能夠劃分爲一個個段落,讓情感的表達有了起承轉合。段落的組織形式多種多樣,常見的有以下幾種:

  • AAA一段旋律的重複,簡潔明瞭,常見於宗教音樂。

https://y.qq.com/n/yqq/song/004Yc5sF3Rq7Wn.html

  • ABAB兩段旋律交叉重複。

https://y.qq.com/n/yqq/song/000aKduC3mu0IL.html

鋼鐵俠出場音樂

  • AABA在重複的旋律中添加一段不太同樣的,避免乏味感,如這首聖誕歌曲。

https://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 類的網絡每每效果更佳。

image.png

咱們如今能作到哪些

由於咱們的應用場景同時包含了實時與離線,因此下列算法不少都有實時的版本,可用在實時音視頻通訊等場景。

1. 節奏檢測

如上文所述,節奏點就是歌曲拍子所在的位置。前陣子比較火的 「螞蟻呀嘿」,照片中頭動起來的樣子很是魔性,這些動做就是按照歌曲的節奏點來設計的。下面咱們把利用算法檢測出來的節拍,用相似於節拍器的聲音呈現出來,學過樂器的同窗應該對這 「嗒嗒嗒」 的聲音有印象。經過節奏檢測的算法自動識別出其餘歌曲的節奏點,咱們也能夠製做本身的 「螞蟻呀嘿」 模板。
https://v.youku.com/v_show/id_XNTExOTA4Mzc2MA==.html

上文還提到了 「強拍」 ,能夠用來區分小節。咱們的方法除了檢測出 beat,還能區分出 downbeat,下面的視頻展現出了 「螞蟻呀嘿」 裏的 downbeat:
https://v.youku.com/v_show/id_XNTExOTA4MzQ1Mg==.html

有同窗可能會好奇,大家的算法檢測出 beat、downbeat 有什麼用啊,不就是一些時間點嘛?

其實能夠衍生出不少音樂的玩法,譬如說前幾年很火的音樂遊戲,節奏大師,一個跟着旋律、節奏來瘋狂輸出的遊戲。

咱們在公開數據集(GTZAN)和由 100 首流行歌曲構成的內部數據集上,評測了咱們的方法,結果以下表所示。咱們的方法在兩個數據集上均有 0.8 以上的 F 值,具備必定的魯棒性。
image.png

2. 實時音高檢測

咱們的方法能夠作到輸入一幀音頻,而後輸出當前幀的音高,以赫茲爲單位。

上面這句話看上去彷佛有些乾癟,那這些數字有哪些做用呢?

舉個栗子,不少 K 歌軟件裏都有下圖中紅框中的內容,它們是歌曲的音高線。衡量歌唱得準不許,主要就是看演唱者的音高、節奏和原曲的匹配程度。

在這個場景下,咱們的音高檢測算法能夠實時地分析用戶的演唱水平,並給出分數。

除此以外,實時音視頻通訊中的一些場景也依賴音高檢測,如 Voice Activity Detection (VAD),若是當前幀有音高的話,說明有人聲。

image.png

3. 段落檢測

流行音樂常見的段落類型有:前奏、主歌、過渡段、副歌、間奏、橋段、尾奏這 7 種。

咱們調研了市面上作段落檢測的方法,不少都是基於自類似矩陣(Self-Similarity Matrix, SSM),對音樂結構作了 segmentation,也即它們僅僅能劃分時間區間,而沒法給出具體的段落類型;Ullrich et al. 提出了基於 CNN 的有監督學習的方法,能夠檢測出不一樣粒度下段落的邊界。除了 「segmentation」 ,咱們的方法還能夠作到 「classification」,便可以給出每一個段落的時間區間和類型(上述 7 種)。

咱們選取了音樂軟件上熱門榜單裏的前 100 首歌曲,來做爲咱們的評測樣本集,評測結果及指標含義以下所示:

image.png

這 100 首中包含了 19 首土味 DJ remix 歌曲,因爲這些歌曲動態範圍較小,能量很強,「動詞打次」 的聲音掩蓋了不少原曲的特質,因此在這類歌曲上,段落檢測算法表現較弱。刨除這些 DJ 歌曲後,算法的 F_pairwise_chorus 能夠達到 0.863。
考慮到如今對音樂的消費愈來愈快餐,並且有時候爲了給視頻配樂,須要截取音樂的片斷,而副歌每每是一首流行樂最 「抓耳」 的部分,咱們將算法封裝爲 「副歌檢測」 的功能,一鍵幫用戶篩選出流行歌裏全部的副歌,具體的調用方式在這裏

這裏以周杰倫的《說好的幸福呢》爲例,算法的輸出結果以下圖所示,時間單位爲秒,你們能夠邊欣賞 MV、邊感覺副歌的情感與能量~ image.png

4. 實時聲音場景識別

上文提到了一些 MIR 算法的效果及應用,不過在哪些場景下可使用它們呢?也即如何區分出音樂場景呢?

針對這個問題,咱們提供有聲音場景識別的算法能力,能夠識別出當前是 「語音、音樂、噪聲」 中的哪種,並且針對語音,能夠進一步區分性別(男 | 女)。

下面是一段《新聞聯播》的音頻,聲音場景識別算法標記出了其中的音樂、男聲、女聲,以及無聲音(也即沒有能量)的部分。
https://v.youku.com/v_show/id_XNTExOTA4NDQ0NA==.html

關於咱們

阿里雲視頻雲 - 語音與音樂算法團隊,主要爲視頻時代的娛樂、教育等場景提供語音音樂等音頻的解決方案。在這裏你能夠了解到更多前沿的音頻算法應用,歡迎與咱們一塊兒打造更好的音頻世界!

「視頻雲技術」你最值得關注的音視頻技術公衆號,每週推送來自阿里雲一線的實踐技術文章,在這裏與音視頻領域一流工程師交流切磋。

相關文章
相關標籤/搜索