如何在 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中如何比较两个数组中对应位置的元素的大小

如何比较 Python 中的版本号?

在python中比较两个列表,并将结果保存在一个单独的列表中。

Python中matplotlib默认绘制的条形图比较胖?如何设置成体型匀称的条形图,达到最佳的可视化效果。

如何比较python中的两个列表并返回匹配项

Python:如何比较两个二进制文件?