0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

是否可以將Shazam稱為有聽歌識曲功能應(yīng)用的鼻祖?

電子工程師 ? 來源:lq ? 2019-02-18 09:43 ? 次閱讀

是否可以將 Shazam 稱為有聽歌識曲功能應(yīng)用的鼻祖?

2018 年 9 月,蘋果最終以 4 億美金完成對 Shazam 公司的收購,讓不少人為之振奮,在當時對外公布的一份聲明中可以看到,自Shazam應(yīng)用登陸App Store以來,是其最受歡迎的iOS應(yīng)用之一。

其實早在蘋果 iPhone “出道”之前,Shazam 提供的音樂識別服務(wù)和技術(shù)就已戳中了不少用戶的痛點。例如,當外界播放一首你喜愛的歌曲時,手機應(yīng)用能識別出該歌曲并調(diào)出手機內(nèi)同樣的歌曲/原唱,完成后在手機上播放出來。

像最早流行的 Gracenote、SoundHound、Track ID、Tunatic,以及如今的第三方音樂 App 如 QQ音樂、網(wǎng)易云音樂,甚至微信“搖一搖”等也都具備音樂識別的功能。

只不過,據(jù)資料顯示,在Shazam 公司 1999 年成立之初,以非?!霸肌钡姆绞教峁┓?wù)的:“用戶聽到歌曲,打一個服務(wù)短號碼,讓電話那頭聽到,然后自動掛斷,歌曲信息以短信的形式發(fā)到用戶手機上。”

如今,無論被收購之后的 Shazam 是因何種戰(zhàn)略地位為蘋果生態(tài)提供服務(wù),與其他類似的音樂識別軟件在操作界面、細節(jié)功能有哪些不同,Shazam 仍受到大眾的認可。拋開此前與蘋果的關(guān)系、服務(wù)能力不提,Shazam 在音頻識別上的技術(shù)能力得到公認的。

實際上,早在 2003 年 Shazam 聯(lián)合創(chuàng)始人之一的 Avery Li-Chun Wang 就發(fā)表了一篇論文“An Industrial-Strength Audio Search Algorithm”(《一種工業(yè)級音頻搜索算法》),提出了基于指紋(fringerprint)的音樂搜索算法,因其檢索準確率較高,得到了不少算法工程師的關(guān)注。

編者注:來自維基百科:聲學(xué)指紋(Acoustic fingerprint)是通過特定算法從音頻信號中提取的一段數(shù)字摘要,用于識別聲音樣本或者快速定位音頻數(shù)據(jù)庫中的相似音頻。

根據(jù)論文資料,Shazam 設(shè)計了一套非常靈活的音頻搜索引擎。其算法抗噪聲和擾動能力強,計算復(fù)雜度低,同時具有很高的可擴展性。即使外界噪音很強,它也可以迅速通過手機錄制的一小段壓縮音頻從百萬級的曲庫中辨識出正確的歌曲。該算法運用分析音頻頻譜上的星狀圖來組合時間-頻率信息構(gòu)造哈希,從而可以將混合在一起的幾首歌都辨識出來。此外,針對不同的應(yīng)用,即使曲庫非常大,檢索速度也能達到毫秒級。

其核心簡言之是,用戶將某段音頻中的一個片段上傳至 Shazam,Shazam 會首先提取指紋,然后查詢數(shù)據(jù)庫,最后利用其精準的識別算法返回歌名。指紋可以看做該音頻的哈希值(Hash),一個帶有時間屬性的數(shù)字集合。

2015 年,一位名叫 Christophe 的工程師寫了篇萬字長文,完整分析了Shazam的原理是什么,并表示,在過去的三年時間里,他用了大概 200 個小時來理解信號處理的概念,其背后的數(shù)學(xué)原理,并制作了自己的Shazam原型。他甚至直言:“寫這篇文章是因為此前從沒有找到一篇真正理解 Shazam 的文章”。

那么,如何更快更好理解 Shazam 背后的算法奧秘呢?前不久,YouTube上一個專門普及工程知識的頻道 Real Engineering 上傳了一段 10 分鐘視頻,可幫助人們快速 Get 到相關(guān)知識點。

傳送門:https://www.youtube.com/watch?v=kMNSAhsyiDg

相比起人類,計算機對音樂沒有直觀的理解,它只能將歌曲與其數(shù)據(jù)庫中的其他歌曲進行對比匹配。為此,視頻中 Real Engineering 重點提及了兩個概念:“星狀圖”和“哈希函數(shù)”,并對基于“指紋”的搜索算法進行了通俗化解釋。

例如,人類大腦可很容易區(qū)分鋼琴和吉他的音色,但對計算機來講,就需要一種能夠量化這些特征以便進行識別的方法,即頻譜圖,一種聲音的視覺顯示。

在視頻中,研究者嘗試用一張三維圖來表示:x 軸代表時間,y 軸代表頻率,z 軸代表振幅/響度(通常用某種顏色表示)。

如此,計算機就可以通過這個三維圖來識別聲音并存儲數(shù)據(jù)。不過,會有個問題:頻譜圖中有大量這樣的數(shù)據(jù),而且數(shù)據(jù)越多,需要通過計算匹配的時間就越長。

所以,減少計算時間的第一步就是減少分類歌曲的數(shù)據(jù)。

Shazam 采用的稱之為“指紋”的技術(shù),可將這些頻譜圖轉(zhuǎn)換成看起來像的“星狀圖”。

每顆星星代表特定時間最強的頻率。如此,不僅降低了頻譜圖的維度,還減少了圖表上數(shù)據(jù)點的數(shù)量。

然后,Shazam 數(shù)據(jù)庫中的每首單曲都以“指紋”的形式存儲起來。

當用戶打開 Shazam 應(yīng)用時,后臺將訪問手機的麥克風(fēng),并創(chuàng)建一組接收到的聲波“指紋”。不過,這種方式也有助于應(yīng)用過濾噪聲,因為它只會創(chuàng)建突出頻率的數(shù)據(jù)點。

音頻創(chuàng)建完成,并將其發(fā)送到服務(wù)器。此時,Shazam的識別過程正式開始,即“快速組合哈?!保‵ast Combinatorial Hashing)。

論文鏈接:https://www.ee.columbia.edu/~dpwe/papers/Wang03-shazam.pdf

Shazam 會將“指紋”進行分類,并搜索在該音頻中的某個特定時間點里分別存在哪幾個音符,這也是哈希表的可搜索地址。

注:在計算機領(lǐng)域,哈希和哈希函數(shù)應(yīng)用十分廣泛。例如,在谷歌的搜索引擎算法中就應(yīng)用了哈希函數(shù),以確保文件可被下載。一句話解釋就是,任意長度的輸入通過哈希函數(shù)變換成固定長度的輸出,該輸出就是哈希值。

實踐中,輸入可以是一小段文字如密碼,也可以是像整部電影一樣的長數(shù)據(jù)流。

為免枯燥乏味,視頻里還舉了個生動的例子:在圖書館如何通過搜索書的標題確定書的位置?

可以通過哈希函數(shù)來決定,書的標題為輸入,書架的位置為輸出。在這個過程中,我們會遇到書籍不均勻分布、書目沖撞、以及如何快速找到所需書目的問題。

例如,如果圖書館只有兩個架子,那么書目沖撞(一個書架上有相同標題的書)的問題將十分突出;但如果圖書館有十億書架,那哈希函數(shù)得出的書目沖撞結(jié)果應(yīng)該會很小。

回到以上提到的案例,如果通過哈希函數(shù),選擇兩組頻率數(shù)據(jù),分別除以時間并作為輸入,輸出的數(shù)字介于 1 至 10 億之間。

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

然后,對每個錨點按哈希進行排列。

這些地址同樣以歌曲 ID 和時間戳進行分類。

如此,便可以更快定位,并找到本來需要多個錨點才能找到的音樂。

以上只是大致介紹,想要了解 Shazam 聽歌識曲背后的詳細原理,可以查看Christophe 寫的萬字長文。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • APP
    APP
    +關(guān)注

    關(guān)注

    33

    文章

    1566

    瀏覽量

    72340
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3752

    瀏覽量

    64241
  • 音頻識別
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    7249

原文標題:一個App賣了4億美元,這家聽聲識曲公司為何得到Apple的青睞?

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    TPA6130A2如果不需要I2C功能是否可以I2C的兩個引腳懸空?

    如果不需要I2C功能,是否可以I2C的兩個引腳懸空。 2.如果I2C兩個引腳懸空,該IC是否
    發(fā)表于 11-01 08:16

    TLV320AIC3204的DSP是否ASRC功能?

    請教一下TLV320AIC3204的DSP是否ASRC功能,可以實現(xiàn)PCM9211光纖解碼后的各種采樣率能經(jīng)ASRC變成固定一種采用率,滿足TAS5754輸入處理,而且ASRC的延
    發(fā)表于 10-18 06:14

    THS3095不需要使用PD功能,在采用雙電源供電的情況下,是否可以REF接地,PD懸空?

    如果我不需要使用PD功能,在采用雙電源供電的情況下,是否可以REF接地,PD懸空(等效接高電平),此時是否處于正常的工作狀態(tài)(ON)?
    發(fā)表于 08-26 08:26

    是否可以ESP8266用作橋接AP?

    我知道這個問題已經(jīng)發(fā)布了很多次,但我沒有找到任何最終答案,它困擾著我...... 是否可以 ESP8266 用作橋接 AP?如果是這樣...AT 命令的腳本?
    發(fā)表于 07-15 07:23

    esp32-lyrat接DuerOS了對話功能之后,是否可以進行錄音?

    想問一下,esp32-lyrat 接入 DuerOS 了對話功能之后,還是否可以進行錄音? 也就是,想要問一下,加入DuerOS是否會將e
    發(fā)表于 06-28 16:30

    cnc系統(tǒng)哪些功能?能完成哪些工作

    功能,能夠完成各種復(fù)雜的加工任務(wù)。以下是對CNC系統(tǒng)功能的詳細介紹: 編程與數(shù)據(jù)處理 CNC系統(tǒng)的核心功能之一是編程與數(shù)據(jù)處理。用戶可以通過編程語言(如G代碼、M代碼等)編寫加工程序,
    的頭像 發(fā)表于 06-14 15:58 ?1538次閱讀

    CYPD3177是否連接NonPD適配器源時通知電量不足的功能?

    CYPD3177是否連接NonPD適配器源時通知電量不足的功能? 例如,當連接到具有 9V2A 請求的 NonPD 適配器(源連接器為 A 型等)時,通知電量不足。 對于 PD 兼
    發(fā)表于 05-28 06:06

    Flyme工程師回應(yīng)Aicy屏無法使用:服務(wù)器問題,業(yè)務(wù)暫停

    近日,魅族Flyme團隊對“Aicy屏無法正常使用”一事做出回應(yīng)。工程師“下棋的奕星”表示,該問題系服務(wù)器故障,現(xiàn)正積極解決。我們密切關(guān)注處理進度,期待功能盡快恢復(fù)。
    的頭像 發(fā)表于 05-09 14:46 ?789次閱讀

    電感繞線是否可以隨便繞

    電子發(fā)燒友網(wǎng)站提供《電感繞線是否可以隨便繞.docx》資料免費下載
    發(fā)表于 03-29 14:44 ?1次下載

    CY8CMBR3110觸摸芯片,是否可以支持自動復(fù)位功能,具體哪些操作方式?

    CY8CMBR3110觸摸芯片,是否可以支持自動復(fù)位功能,具體哪些操作方式? 使用該產(chǎn)品的實際工況是在觸摸按鍵上會蓋上一層玻璃蓋,調(diào)試中發(fā)現(xiàn)蓋上玻璃蓋以后觸摸按鍵就失效了。 我們嘗試
    發(fā)表于 02-18 08:38

    SynSense時科技戰(zhàn)略收購瑞士iniVation

    SynSense時科技(以下簡稱“時科技”),作為類腦感知及計算領(lǐng)域的頭部公司,近日正式宣布戰(zhàn)略收購瑞士類腦視覺傳感器公司iniVation AG。這一收購進一步強化時科技在全
    的頭像 發(fā)表于 02-01 16:54 ?825次閱讀

    TC299模塊中是否任何功能可以用作RTC?

    嗨, TC299 模塊中是否任何功能可以用作 RTC?
    發(fā)表于 01-26 06:42

    6RA70是否自動鎖相功能?

    請問是否自動鎖相這個功能,和它原理
    發(fā)表于 01-10 07:38

    是否可以簡單的兩個穩(wěn)壓芯片進行并聯(lián)提供更大的輸出電流呢?

    如果一個穩(wěn)壓芯片輸出電流不能夠滿足要求,是否可以簡單的兩個穩(wěn)壓芯片進行并聯(lián)提供更大的輸出電流呢??下
    的頭像 發(fā)表于 12-29 16:22 ?4179次閱讀
    <b class='flag-5'>是否</b><b class='flag-5'>可以</b>簡單的<b class='flag-5'>將</b>兩個穩(wěn)壓芯片進行并聯(lián)提供更大的輸出電流呢?

    差動放大電路中,同相和反相端的輸入信號是否可以互換?

    差動放大電路中,同相和反相端的輸入信號是否可以互換? 在差動放大電路中,同相和反相端的輸入信號是可以互換的,但是互換后會對放大電路的功能和性能產(chǎn)生一些影響。在下面的文章中,我
    的頭像 發(fā)表于 11-20 16:24 ?1133次閱讀