Python音频分析,频谱图:我应该使用哪个频谱图,为什么?

Python音频分析,频谱图:我应该使用哪个频谱图,为什么?,python,audio,conv-neural-network,spectrogram,Python,Audio,Conv Neural Network,Spectrogram,我正在大学做我的最后一个项目:利用卷积神经网络(CNN)从歌曲录音中估计音高。我想检索歌曲录音中存在的音高。对于CNN输入,我使用的是光谱图 我正在使用基音向量作为数据标签。在将音频处理到CNN之前(每个音频在8 KHz、8位、单声道的.wav文件中的持续时间为8秒),我需要将音频预处理为频谱图表示 我找到了3种生成光谱图的方法,下面列出了代码。 我在这段代码中使用的音频示例是可用的 进口: import librosa import numpy as np import matplotlib.

我正在大学做我的最后一个项目:利用卷积神经网络(CNN)从歌曲录音中估计音高。我想检索歌曲录音中存在的音高。对于CNN输入,我使用的是光谱图

我正在使用基音向量作为数据标签。在将音频处理到CNN之前(每个音频在8 KHz、8位、单声道的
.wav
文件中的持续时间为8秒),我需要将音频预处理为频谱图表示

我找到了3种生成光谱图的方法,下面列出了代码。 我在这段代码中使用的音频示例是可用的

进口:

import librosa
import numpy as np
import matplotlib.pyplot as plt
import librosa.display
from numpy.fft import *
import math
import wave
import struct
from scipy.io import wavfile
光谱图A

x, sr = librosa.load('audio/00020_2003_person1.wav', sr=None)

window_size = 1024
hop_length = 512 
n_mels = 128
time_steps = 384 

window = np.hanning(window_size)
stft= librosa.core.spectrum.stft(x, n_fft = window_size, hop_length = hop_length, window=window)
out = 2 * np.abs(stft) / np.sum(window)

plt.figure(figsize=(12, 4))
ax = plt.axes()
plt.set_cmap('hot')
librosa.display.specshow(librosa.amplitude_to_db(out, ref=np.max), y_axis='log', x_axis='time',sr=sr)
plt.savefig('spectrogramA.png', bbox_inches='tight', transparent=True, pad_inches=0.0 )
谱图B

x, sr = librosa.load('audio/00020_2003_person1.wav', sr=None)
X = librosa.stft(x)
Xdb = librosa.amplitude_to_db(abs(X))
# plt.figure(figsize=(14, 5))
librosa.display.specshow(Xdb, sr=sr, x_axis='time', y_axis='hz')
光谱图C

# Read the wav file (mono)
samplingFrequency, signalData = wavfile.read('audio/00020_2003_person1.wav')
print(samplingFrequency)
print(signalData)

# Plot the signal read from wav file
plt.subplot(111)
plt.specgram(signalData,Fs=samplingFrequency)
plt.xlabel('Time')
plt.ylabel('Frequency')
光谱图结果如下所示:

我的问题是,从我上面列出的3个光谱图中,哪一个光谱图最适合用于输入CNN,为什么我应该使用该光谱图类型?我现在很难找到他们的不同之处,以及他们的优点和缺点