前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python分析wav文件

python分析wav文件

作者头像
Python研究者
发布2020-09-28 11:34:22
1.2K0
发布2020-09-28 11:34:22
举报
文章被收录于专栏:Python研究者

对于声音类的文件分析起来除了听最好是先可以把声音转换成图形,这样对于声音文件之间的不同有一个视觉上的认知,对于后续分析可以是一个很有用的补充。

python可以利用SCIPY库装载wav文件,并使用matplotlib绘制图形。首先我从这个网站上下载了1M和2M的wav文件作为wav样例文件:https://file-examples.com/index.php/sample-audio-files/sample-wav-download/

然后使用下面的代码装在并绘制wav文件的音调图形:

代码语言:javascript
复制
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库很容易计算出两个音频数据之间的欧几里得距离:

代码语言:javascript
复制
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)

输出结果如下:

代码语言:javascript
复制
the distance between the two clips is 4093034781.337242

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python爬虫数据分析挖掘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档