如何在 Python 3 中比较和可视化两个 .wav 文件?
Posted
技术标签:
【中文标题】如何在 Python 3 中比较和可视化两个 .wav 文件?【英文标题】:How do I compare and visualise two .wav files in Python 3? 【发布时间】:2019-11-21 09:07:24 【问题描述】:我在 Jupyter 上使用 Python 3,我试图找出音频文件(有一些噪音)与没有原始文件的准确性。请在下面找到我在网上找到的代码,
import librosa
import matplotlib.pyplot as plt
from dtw import dtw
#Loading audio files
y1, sr1 = librosa.load('data/dev1_female3_liverec_130ms_1m_sim_1.wav')
y2, sr2 = librosa.load('data/dev1_female3_liverec_130ms_1m_sim_1o.wav')
#Showing multiple plots using subplot
plt.subplot(1, 2, 1)
mfcc1 = librosa.feature.mfcc(y1,sr1) #Computing MFCC values
librosa.display.specshow(mfcc1)
plt.subplot(1, 2, 2)
mfcc2 = librosa.feature.mfcc(y2, sr2)
librosa.display.specshow(mfcc2)
dist, cost, path = dtw(mfcc1.T, mfcc2.T)
print("The normalized distance between the two : ",dist) # 0 for similar audios
plt.imshow(cost.T, origin='lower', cmap=plt.get_cmap('gray'), interpolation='nearest')
plt.plot(path[0], path[1], 'w') #creating plot for DTW
plt.show()
我收到一个错误“找不到模块名称 librosa”
【问题讨论】:
你安装了 librosa 模块吗? 如果不是你需要先安装它pip install librosa
我正在使用 Jupyter 笔记本,所以我不确定在哪里写。
更新:解决了 librosa 问题
更新:安装 librosa 和 dtw 后,出现错误:AttributeError: module 'librosa' has no attribute 'display'
【参考方案1】:
首先你必须安装 librosa ,
如果您使用的是 python 的 anaconda 发行版,则在 anaconda 提示符下运行 pip install librosa
或者运行您的 CMD。
然后在 jupyter 上 import librosa
然后开始工作。
【讨论】:
【参考方案2】:安装 librosa 库后。 它在 librosa.display 上出现问题,所以请 import librosa.display as dis 并使用。 它还会在 dtw(mfcc1.T, mfcc2.T) 上给出问题 为此请参考以下内容
-
https://github.com/pierre-rouanet/dtw/issues/18
2)https://github.com/pierre-rouanet/dtw/pull/19
【讨论】:
以上是关于如何在 Python 3 中比较和可视化两个 .wav 文件?的主要内容,如果未能解决你的问题,请参考以下文章
在python中比较两个列表,并将结果保存在一个单独的列表中。