仅使用几行代码来可视化音乐
#python #datascience #music

嘿,我回来了!让我们看看音乐和数据科学能走多远。由于我知道围绕Django的方式,因此我有些信心可以完全使用这两个建造一些东西。我仍在这里使用libreosa,pandas,matplotlib和numpy。

如果您愿意,您可以检查google colab notebook

让我们安装和导入依赖项:

pip install librosa matplotlib pandas

import matplotlib.pyplot as plt
import librosa
from librosa import display, load, amplitude_to_db, stft
import numpy as np
import pandas as pd

我们导入了一些天秤座的功能,用于在我们的数据以及numpy,pandas和matplotlib中使用。

加载数据并绘制波形

y, sr = load('We Are Monsters.wav')
pd.Series(y).plot(figsize=(10, 5), lw=1, title="We Are Monsters") 

我们分别使用ysr变量加载波形和采样速率,并绘制数据,如下图所示:

<matplotlib.axes._subplots.AxesSubplot at 0x7f885cf29100>

Audio waveform of We Are Monsters by the band Dirtslub

现在,我们从数据创建一个频谱图

D = stft(y)
sound_db = amplitude_to_db(np.abs(D), ref=np.max)
sound_db.shape # check the number of rows and columns in the dataset
fig, ax = plt.subplots(figsize=(10, 5))
img = display.specshow(sound_db, x_axis='time', y_axis='log', ax=ax)

(1025, 11179)

我们转换波形(y)并获取数据的绝对频率以产生频谱图并绘制数据,如下图所示:

Spectrogram waveform of We Are Monsters by the band Dirtslub

最后我们创建一个Melspectrogram

S = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=128)
s_db_mel = amplitude_to_db(S, ref=np.max)
fig, ax = plt.subplots(figsize=(10, 5))
img = display.specshow(s_db_mel, x_axis='time', y_axis='log', ax=ax)

现在,我们使用libosa的Melspectrogram特征转换数据并添加128 n_mels,然后再次绘制数据,如下图所示:

Melspectrogram waveform of We Are Monsters by the band Dirtslub

结论

这是我从昨天开始学习Python和音乐的延续。我可能错过了上面代码段的一些解释。我很想听听您如何解释它们。