嘿,我回来了!让我们看看音乐和数据科学能走多远。由于我知道围绕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")
我们分别使用y
和sr
变量加载波形和采样速率,并绘制数据,如下图所示:
<matplotlib.axes._subplots.AxesSubplot at 0x7f885cf29100>
现在,我们从数据创建一个频谱图
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)并获取数据的绝对频率以产生频谱图并绘制数据,如下图所示:
:最后我们创建一个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
,然后再次绘制数据,如下图所示:
结论
这是我从昨天开始学习Python和音乐的延续。我可能错过了上面代码段的一些解释。我很想听听您如何解释它们。