音乐指纹识别(一):音乐波形
生活随笔
收集整理的這篇文章主要介紹了
音乐指纹识别(一):音乐波形
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
現在大部分的手機音樂客戶端中如,網易音樂,qq音樂中都有一個功能,可以通過聽取一段音樂來識別這是哪一首歌曲。最早開始有這個功能是在Shazam中看見的,現在關于如何識別音樂也有較多的資料,這里通過一些簡要的分析來說明聽音識別歌曲是如何實現的。我們需要對計算機中的聲音進行研究,獲取一種能夠代表這首歌曲的唯一標識,這就是我們通常說的音樂指紋。
在把音樂進行數字化后,以最原始的wav為例,計算機是使用一串數字來代表音樂的,通常來說,我們以一定的頻率(44100Hz)對聲音進行采樣,存入文件時,以兩個頻道的格式進行存取。兩個頻道代表著左右聲道。
為了更加直觀,我們把wav的數據直接畫出來。
這里用到了讀取wav數據的庫,wave 如果還沒有安裝 wave 可以使用命令進行安裝:
pip install wave一下是繪制一個wav文件的代碼:
import wave as we import numpy as np import matplotlib.pyplot as plt from scipy.fftpack import fft,ifft import matplotlib.mlab as mlabdef wavread(path):wavfile = we.open(path,"rb")params = wavfile.getparams()framesra,frameswav= params[2],params[3]datawav = wavfile.readframes(frameswav)wavfile.close()datause = np.fromstring(datawav,dtype = np.short)datause.shape = -1,2datause = datause.Ttime = np.arange(0, frameswav) * (1.0/framesra)return datause,timedef main():path = 'night.wav'wavdata,wavtime = wavread(path)plt.title("Night.wav's Frames")plt.subplot(211)plt.plot(wavtime, wavdata[0],color = 'green')plt.subplot(212)plt.plot(wavtime, wavdata[1])plt.show()main()兩個聲道的聲音繪制成圖片:
這里我們使用的是wav文件的聲音格式,但是我們大部分的音樂是使用mp3的,我們還需要就mp3的數據進行處理,下一節講下mp3的處理方式。
總結
以上是生活随笔為你收集整理的音乐指纹识别(一):音乐波形的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 鼠标单击_转:java 鼠标单
- 下一篇: blend窗口透明化软件的使用和下载