利用python库 librosa库对于音频文件进行预处理,以及可视化操作。
将音频文件(这里使用苹果录音文件 .m4a 格式)导入librosa,音频格式可以为其它(甚至视频文件mp4也是可以的)
import librosa
audio_data = 'Audio/1.m4a'
y, sr = librosa.load(audio_data)
print('y:', y, '\n')
print('y shape:', np.shape(y), '\n')
print('Sample Rate (Hz):', sr, '\n')
print('Check Len of Audio:', np.shape(y)[0]/sr)
返回值有两个 y 和 sr。
y 是音频时间序列并支持多声道,
sr 是采样率 (注意:librosa默认load使用的是22050hz的采样率)
如果想要用固定采样率,则可以使用y, sr = librosa.load(audio_data,sr=None)
表示保持原音频的采样率。或者可以规定采样率sr:y, sr = librosa.load(audio_data,sr=44100)
。
想要获取音频的基本信息可以输入:
print('y:', y, '\n')
print('y shape:', np.shape(y), '\n')
print('Sample Rate (Hz):', sr, '\n')
print('Check Len of Audio:', np.shape(y)[0]/sr)
音频可视化,y轴 为 Amplitude (振幅)随时间变化曲线。
import matplotlib.pyplot as plt
import librosa.display
plt.figure(figsize=(20, 5))
librosa.display.waveplot(y, sr=sr)
plt.xlabel('Time (samples)')
plt.ylabel('Amplitude')
plt.show()
X = librosa.stft(y)
Xdb = librosa.amplitude_to_db(abs(X))
plt.figure(figsize=(20, 5))
librosa.display.specshow(Xdb, sr=sr, x_axis='time', y_axis='hz')
plt.colorbar()
plt.show()
mfccs = librosa.feature.mfcc(y=y, sr=sr)
librosa.display.specshow(mfccs, sr=sr, x_axis='time')
mel = librosa.feature.melspectrogram(y=y, sr=sr)
librosa.display.specshow(mel, sr=sr, x_axis='time')
以上。