当前位置:   article > 正文

读 wav 音频画 mel 频谱图(python)_cv2实现音频频谱图

cv2实现音频频谱图

代码功能:

  1. 读取wav音频文件
  2. 以10s为一个单位截取音频,只截取每个音频的前60s
  3. 调用librosa音频处理函数对10s音频进行mel频谱操作
  4. 调用Matplotlib图像处理函数进行频谱图的绘画
import numpy as np
import glob
import librosa
import librosa.display
import matplotlib.pyplot as plt
import cv2




path_dir = 'C:/Users/Chengguo/Desktop/声音_行为/wav/'
for path in glob.glob(path_dir+"*.wav"):
    # path = "C:/Users/Chengguo/Desktop/声音_行为/wav/尖叫.wav"
    # print(path)
    for i in range(50):
        y, sr = librosa.load(path,sr=None,offset=i*1.0, duration=1.0)#librosa.ex('trumpet'))#声音强度、声音采样频率
        # print(len(y),sr)
        # plt.figure(figsize=(16,6))
        # librosa.display.waveplot(y, sr=sr)
        # plt.title('Signal');
        # plt.xlabel('Time (samples)')
        # plt.ylabel('Amplitude')
        
        '''FFT变换'''
        # n_fft = 2048
        # ft = np.abs(librosa.stft(y[:n_fft], hop_length = n_fft+1))
        # plt.figure()
        # plt.plot(ft);
        # plt.title('Spectrum');
        # plt.xlabel('Frequency Bin');
        # plt.ylabel('Amplitude');
        
        '''stft频谱变换'''
        # spec = np.abs(librosa.stft(y, hop_length=512))
        # spec = librosa.amplitude_to_db(spec, ref=np.max)
        # plt.figure(figsize=(16,6))
        # librosa.display.specshow(spec, sr=sr, x_axis='time', y_axis='log');
        # plt.colorbar(format='%+2.0f dB');
        # plt.title('Spectrogram');
        
        '''Mel频谱变换'''
        mel_spect = librosa.feature.melspectrogram(y=y, sr=sr, n_fft=2048, hop_length=1024)
        mel_spect = librosa.power_to_db((mel_spect), ref=np.max)
        plt.figure(figsize=(16,8))
        # kernel = np.ones((3,3),np.uint8)  ,
        # mel_spect = cv2.morphologyEx(mel_spect, cv2.MORPH_OPEN, kernel)
        
        librosa.display.TimeFormatter(lag=True)
        mel_img=librosa.display.specshow(mel_spect, y_axis='mel', x_axis='s')#, fmax=8000
    
        plt.title(f'Mel-Spectrogram-{i*1}')
        plt.colorbar(mel_img,format='%+2.0f dB')
        plt.savefig(f"{path[:-4]}/Log-Mel-Spectrogram-{i*1}.png")
        plt.close()


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/134367
推荐阅读
相关标签
  

闽ICP备14008679号