Chromaprint是一個用於計算音頻文件的AcoustID音頻指紋的開源軟件庫。在iOS中生成AcoustID/Chromaprint聲紋指紋
我正嘗試從iOS上的本地文件生成此音頻指紋。
該庫可以建立在Windows,Linux和OS X上,它可以創建動態庫以及接受音頻文件的獨立程序(fpcalc),解碼音頻並將其傳遞給chromaprint庫以計算指紋。它並沒有真正在iOS上運行,原因如下:
- 單機fpcalc程序無法在iOS上,因爲你不能從一個應用程序
- 運行可執行文件的源代碼給fpcalc運行程序使用chromaprint 和ffmpeg。從我讀過的,ffmpeg很難在iOS上編譯。 Chromaprint文檔聲明Accelerate框架可以在OS X/iOS中使用,但是沒有示例代碼可以實現這一點,我不知道從哪裏開始。
我一直在爲iOS構建庫(CMake討厭我)時遇到了一些麻煩,但我覺得上述問題更相關,因爲即使編譯了庫,它也不會工作盒子外面。
我試圖避免這是一個「爲我寫代碼」的問題,但我非常困擾在爲iOS生成chromaprint指紋的各個方面。我認爲,我的目標是重新創建iOS上fpcalc程序的功能 - 解碼音頻文件(存儲在設備上,任何音頻類型)並將其傳遞到chromaprint庫以生成指紋。
我在iOS上發現了this question關於聲學指紋識別,但它與chromaprint/AcoustID無關,答案沒有幫助。 Echoprint Codegen很有趣,但我需要一個chromaprint指紋。
我很高興你能夠正常工作,在我看來,使用擴展音頻文件服務會比使用PCM轉換文件更容易,將其保存在存儲器中然後刪除它,你通常只使用文件中的最初X秒的音頻,所以你不需要轉換整個文件。 – 2014-09-30 17:28:53
啊,對不起,我剛剛檢查過代碼,它實際上使用了這個庫,在這種情況下,你應該能夠想知道如何在不保存轉換後的文件的情況下獲取指紋 – 2014-09-30 17:30:56
@LukášLalinský是的,當然,您可以使用Apple的DoConvertFile函數中的代碼來讀取輸入文件並完成所有的指紋工作。幾小時的試驗和錯誤(主要是錯誤),我只是轉換整個文件而感到滿意,我會在另一天優化它;) – ttarik 2014-09-30 17:37:36