audio-video

视频理解中audio信息的使用

读取音频&可视化波形图

1
2
3
4
5
6
7
8
9
10
11
12
13
import matplotlib
matplotlib.use('agg') # 服务器无GUI使用matplotlib绘图
import matplotlib.pyplot as plt
import soundfile as sf
import librosa.display

wav_data, sr = sf.read(wav_file, dtype='int16')
samples = wav_data / 32768.0 # Convert to [-1.0, +1.0]

plt.figure()
plt.title('Waveform')
librosa.display.waveplot(samples, sr=sr)
plt.savefig("wav.png")

wav

声音波形图只是把一维的时域信号直观的显示出来,并没有什么有用的信息。

声谱图(spectrogram)

声谱图,简单来说就是将声音信号通过短时傅里叶变换,获得一张包含3个维度数据的热力图。

1
2
3
4
5
6
7
8
9
10
11
import librosa.display
import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plt
import numpy as np

#librosa.display.specshow(librosa.power_to_db(spectrogram.T, ref=np.max), sr=audio_sample_rate, x_axis='time', y_axis='linear')
librosa.display.specshow(spectrogram.T, sr=audio_sample_rate, x_axis='time', y_axis='linear')
plt.colorbar(format='%+2.0f dB')
plt.title('spectrogram')
plt.savefig('spec.png')