是否可以將 Shazam 稱為有聽(tīng)歌識(shí)曲功能應(yīng)用的鼻祖?
2018 年 9 月,蘋(píng)果最終以 4 億美金完成對(duì) Shazam 公司的收購(gòu),讓不少人為之振奮,在當(dāng)時(shí)對(duì)外公布的一份聲明中可以看到,自Shazam應(yīng)用登陸App Store以來(lái),是其最受歡迎的iOS應(yīng)用之一。
其實(shí)早在蘋(píng)果 iPhone “出道”之前,Shazam 提供的音樂(lè)識(shí)別服務(wù)和技術(shù)就已戳中了不少用戶的痛點(diǎn)。例如,當(dāng)外界播放一首你喜愛(ài)的歌曲時(shí),手機(jī)應(yīng)用能識(shí)別出該歌曲并調(diào)出手機(jī)內(nèi)同樣的歌曲/原唱,完成后在手機(jī)上播放出來(lái)。
像最早流行的 Gracenote、SoundHound、Track ID、Tunatic,以及如今的第三方音樂(lè) App 如 QQ音樂(lè)、網(wǎng)易云音樂(lè),甚至微信“搖一搖”等也都具備音樂(lè)識(shí)別的功能。
只不過(guò),據(jù)資料顯示,在Shazam 公司 1999 年成立之初,以非?!霸肌钡姆绞教峁┓?wù)的:“用戶聽(tīng)到歌曲,打一個(gè)服務(wù)短號(hào)碼,讓電話那頭聽(tīng)到,然后自動(dòng)掛斷,歌曲信息以短信的形式發(fā)到用戶手機(jī)上?!?/p>
如今,無(wú)論被收購(gòu)之后的 Shazam 是因何種戰(zhàn)略地位為蘋(píng)果生態(tài)提供服務(wù),與其他類似的音樂(lè)識(shí)別軟件在操作界面、細(xì)節(jié)功能有哪些不同,Shazam 仍受到大眾的認(rèn)可。拋開(kāi)此前與蘋(píng)果的關(guān)系、服務(wù)能力不提,Shazam 在音頻識(shí)別上的技術(shù)能力得到公認(rèn)的。
實(shí)際上,早在 2003 年 Shazam 聯(lián)合創(chuàng)始人之一的 Avery Li-Chun Wang 就發(fā)表了一篇論文“An Industrial-Strength Audio Search Algorithm”(《一種工業(yè)級(jí)音頻搜索算法》),提出了基于指紋(fringerprint)的音樂(lè)搜索算法,因其檢索準(zhǔn)確率較高,得到了不少算法工程師的關(guān)注。
編者注:來(lái)自維基百科:聲學(xué)指紋(Acoustic fingerprint)是通過(guò)特定算法從音頻信號(hào)中提取的一段數(shù)字摘要,用于識(shí)別聲音樣本或者快速定位音頻數(shù)據(jù)庫(kù)中的相似音頻。

根據(jù)論文資料,Shazam 設(shè)計(jì)了一套非常靈活的音頻搜索引擎。其算法抗噪聲和擾動(dòng)能力強(qiáng),計(jì)算復(fù)雜度低,同時(shí)具有很高的可擴(kuò)展性。即使外界噪音很強(qiáng),它也可以迅速通過(guò)手機(jī)錄制的一小段壓縮音頻從百萬(wàn)級(jí)的曲庫(kù)中辨識(shí)出正確的歌曲。該算法運(yùn)用分析音頻頻譜上的星狀圖來(lái)組合時(shí)間-頻率信息構(gòu)造哈希,從而可以將混合在一起的幾首歌都辨識(shí)出來(lái)。此外,針對(duì)不同的應(yīng)用,即使曲庫(kù)非常大,檢索速度也能達(dá)到毫秒級(jí)。
其核心簡(jiǎn)言之是,用戶將某段音頻中的一個(gè)片段上傳至 Shazam,Shazam 會(huì)首先提取指紋,然后查詢數(shù)據(jù)庫(kù),最后利用其精準(zhǔn)的識(shí)別算法返回歌名。指紋可以看做該音頻的哈希值(Hash),一個(gè)帶有時(shí)間屬性的數(shù)字集合。
2015 年,一位名叫 Christophe 的工程師寫(xiě)了篇萬(wàn)字長(zhǎng)文,完整分析了Shazam的原理是什么,并表示,在過(guò)去的三年時(shí)間里,他用了大概 200 個(gè)小時(shí)來(lái)理解信號(hào)處理的概念,其背后的數(shù)學(xué)原理,并制作了自己的Shazam原型。他甚至直言:“寫(xiě)這篇文章是因?yàn)榇饲皬臎](méi)有找到一篇真正理解 Shazam 的文章”。
那么,如何更快更好理解 Shazam 背后的算法奧秘呢?前不久,YouTube上一個(gè)專門(mén)普及工程知識(shí)的頻道 Real Engineering 上傳了一段 10 分鐘視頻,可幫助人們快速 Get 到相關(guān)知識(shí)點(diǎn)。
傳送門(mén):https://www.youtube.com/watch?v=kMNSAhsyiDg
相比起人類,計(jì)算機(jī)對(duì)音樂(lè)沒(méi)有直觀的理解,它只能將歌曲與其數(shù)據(jù)庫(kù)中的其他歌曲進(jìn)行對(duì)比匹配。為此,視頻中 Real Engineering 重點(diǎn)提及了兩個(gè)概念:“星狀圖”和“哈希函數(shù)”,并對(duì)基于“指紋”的搜索算法進(jìn)行了通俗化解釋。
例如,人類大腦可很容易區(qū)分鋼琴和吉他的音色,但對(duì)計(jì)算機(jī)來(lái)講,就需要一種能夠量化這些特征以便進(jìn)行識(shí)別的方法,即頻譜圖,一種聲音的視覺(jué)顯示。
在視頻中,研究者嘗試用一張三維圖來(lái)表示:x 軸代表時(shí)間,y 軸代表頻率,z 軸代表振幅/響度(通常用某種顏色表示)。

如此,計(jì)算機(jī)就可以通過(guò)這個(gè)三維圖來(lái)識(shí)別聲音并存儲(chǔ)數(shù)據(jù)。不過(guò),會(huì)有個(gè)問(wèn)題:頻譜圖中有大量這樣的數(shù)據(jù),而且數(shù)據(jù)越多,需要通過(guò)計(jì)算匹配的時(shí)間就越長(zhǎng)。
所以,減少計(jì)算時(shí)間的第一步就是減少分類歌曲的數(shù)據(jù)。
Shazam 采用的稱之為“指紋”的技術(shù),可將這些頻譜圖轉(zhuǎn)換成看起來(lái)像的“星狀圖”。

每顆星星代表特定時(shí)間最強(qiáng)的頻率。如此,不僅降低了頻譜圖的維度,還減少了圖表上數(shù)據(jù)點(diǎn)的數(shù)量。
然后,Shazam 數(shù)據(jù)庫(kù)中的每首單曲都以“指紋”的形式存儲(chǔ)起來(lái)。
當(dāng)用戶打開(kāi) Shazam 應(yīng)用時(shí),后臺(tái)將訪問(wèn)手機(jī)的麥克風(fēng),并創(chuàng)建一組接收到的聲波“指紋”。不過(guò),這種方式也有助于應(yīng)用過(guò)濾噪聲,因?yàn)樗粫?huì)創(chuàng)建突出頻率的數(shù)據(jù)點(diǎn)。
音頻創(chuàng)建完成,并將其發(fā)送到服務(wù)器。此時(shí),Shazam的識(shí)別過(guò)程正式開(kāi)始,即“快速組合哈?!保‵ast Combinatorial Hashing)。
論文鏈接:https://www.ee.columbia.edu/~dpwe/papers/Wang03-shazam.pdf
Shazam 會(huì)將“指紋”進(jìn)行分類,并搜索在該音頻中的某個(gè)特定時(shí)間點(diǎn)里分別存在哪幾個(gè)音符,這也是哈希表的可搜索地址。
注:在計(jì)算機(jī)領(lǐng)域,哈希和哈希函數(shù)應(yīng)用十分廣泛。例如,在谷歌的搜索引擎算法中就應(yīng)用了哈希函數(shù),以確保文件可被下載。一句話解釋就是,任意長(zhǎng)度的輸入通過(guò)哈希函數(shù)變換成固定長(zhǎng)度的輸出,該輸出就是哈希值。
實(shí)踐中,輸入可以是一小段文字如密碼,也可以是像整部電影一樣的長(zhǎng)數(shù)據(jù)流。
為免枯燥乏味,視頻里還舉了個(gè)生動(dòng)的例子:在圖書(shū)館如何通過(guò)搜索書(shū)的標(biāo)題確定書(shū)的位置?
可以通過(guò)哈希函數(shù)來(lái)決定,書(shū)的標(biāo)題為輸入,書(shū)架的位置為輸出。在這個(gè)過(guò)程中,我們會(huì)遇到書(shū)籍不均勻分布、書(shū)目沖撞、以及如何快速找到所需書(shū)目的問(wèn)題。

例如,如果圖書(shū)館只有兩個(gè)架子,那么書(shū)目沖撞(一個(gè)書(shū)架上有相同標(biāo)題的書(shū))的問(wèn)題將十分突出;但如果圖書(shū)館有十億書(shū)架,那哈希函數(shù)得出的書(shū)目沖撞結(jié)果應(yīng)該會(huì)很小。
回到以上提到的案例,如果通過(guò)哈希函數(shù),選擇兩組頻率數(shù)據(jù),分別除以時(shí)間并作為輸入,輸出的數(shù)字介于 1 至 10 億之間。

首先,計(jì)算機(jī)將瀏覽歌曲數(shù)據(jù)庫(kù)并計(jì)算每個(gè)錨點(diǎn)(anchor point)的哈希;一首歌曲將包含多個(gè)錨點(diǎn),將有助于計(jì)算機(jī)對(duì)音頻片段按錨點(diǎn)、后面的以及之間的頻率進(jìn)行分類。

然后,對(duì)每個(gè)錨點(diǎn)按哈希進(jìn)行排列。

這些地址同樣以歌曲 ID 和時(shí)間戳進(jìn)行分類。
如此,便可以更快定位,并找到本來(lái)需要多個(gè)錨點(diǎn)才能找到的音樂(lè)。
以上只是大致介紹,想要了解 Shazam 聽(tīng)歌識(shí)曲背后的詳細(xì)原理,可以查看Christophe 寫(xiě)的萬(wàn)字長(zhǎng)文。
-
APP
+關(guān)注
關(guān)注
33文章
1592瀏覽量
76029 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
4028瀏覽量
68405 -
音頻識(shí)別
+關(guān)注
關(guān)注
0文章
3瀏覽量
7319
原文標(biāo)題:一個(gè)App賣(mài)了4億美元,這家聽(tīng)聲識(shí)曲公司為何得到Apple的青睞?
文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
九識(shí)智能與導(dǎo)遠(yuǎn)科技達(dá)成戰(zhàn)略合作
【RA4M2-SENSOR】數(shù)字識(shí)讀及實(shí)現(xiàn)
時(shí)識(shí)科技與姬械機(jī)科技達(dá)成深度戰(zhàn)略合作
請(qǐng)問(wèn)是否可以將所有 GPIO 設(shè)置為從斷電或空閑模式喚醒系統(tǒng)?
是否可以將所有 GPIO 設(shè)置為從斷電或空閑模式喚醒系統(tǒng)?
一維二維碼條碼識(shí)讀器的主要功能有哪些
是否可以將Shazam稱為有聽(tīng)歌識(shí)曲功能應(yīng)用的鼻祖?
評(píng)論