Python技巧1: 使用python分析wav文件


關注公眾號:Python爬蟲數據分析挖掘,回復【開源源碼】免費獲取更多開源項目源碼

 

對於聲音類的文件分析起來除了聽最好是先可以把聲音轉換成圖形,這樣對於聲音文件之間的不同有一個視覺上的認知,對於后續分析可以是一個很有用的補充。

python可以利用SCIPY庫裝載wav文件,並使用matplotlib繪制圖形。首先我從這個網站上下載了1M和2M的wav文件作為wav樣例文件:https://file-examples.com/index.php/sample-audio-files/sample-wav-download/

然后使用下面的代碼裝在並繪制wav文件的音調圖形:

from scipy.io import wavfile
from matplotlib import pyplot as plt
from matplotlib.pyplot import figure
 
# load wav files
fs_1m,data_1m = wavfile.read("./wav/file_example_WAV_1MG.wav")
fs_2m,data_2m = wavfile.read("./wav/file_example_WAV_2MG.wav")
 
# set plt style
plt.style.use('seaborn-whitegrid')
 
# plot data
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.plot(data_1m, color='b')
ax1.set_title("auido with 1M size")
ax2.plot(data_2m, color='y')
ax2.set_title("auido with 2M size")
 
plt.savefig('audio.png', dpi=150)

輸出的圖形如下:

可以看到兩個圖形基本一樣,但是2M文件的圖形的X坐標是1M文件的2倍。

然后我們可以使用fastdtw庫很容易計算出兩個音頻數據之間的歐幾里得距離:

 

from fastdtw import fastdtw
from scipy.spatial.distance import euclidean
 
# calculate euclidean distance
distance,path = fastdtw(data_1m, data_2m, dist=euclidean)
print("the distance between the two clips is %s" % distance)

輸出結果如下:

the distance between the two clips is 4093034781.337242


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM