日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

音乐指纹识别(一):音乐波形

發布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 音乐指纹识别(一):音乐波形 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現在大部分的手機音樂客戶端中如,網易音樂,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的處理方式。

總結

以上是生活随笔為你收集整理的音乐指纹识别(一):音乐波形的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。