2023-05-04 librosa的spectrogram

import librosa
def get_spectrogram(waveform, fs, nfft=128, overlap_pct=0.8):
    """
    Get the spectrogram of a single channel
    Inputs:
    :param waveform: single channel temporal signal
    :param fs: the sampling frequency (Hz)
    :param nfft: number of time samples used for the STFT. Default 128
    :param overlap_pct: percentage of overlap in the spectrogram. Default 0.8
    Outputs:
    :return: a spectrogram and associated time & frequency vectors
    """

    spectrogram = np.abs(librosa.stft(
        y=waveform, n_fft=nfft,
        hop_length=int(np.floor(nfft * (1 - overlap_pct)))))

    # Axis
    height = spectrogram.shape[0]
    width = spectrogram.shape[1]

    tt = np.linspace(0, len(waveform)/fs, num=width)
    ff = np.linspace(0, fs / 2, num=height)

    p = 10 * np.log10(spectrogram * 10 ** 9)

    return p, tt, ff
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 如果我不在学校做老师了 一,那我就在家做一名全职太太,负责相夫教子,做的好的话,那绝对是再了不起了的了。 二,像镇...
    暖暖的兰花儿阅读 102评论 0 0
  • 一个人有两个我,一个在黑暗中醒着,一个在光明中睡着。我是烈火,我也是枯枝,一部分的我消耗了另一部分的我。—纪伯伦《...
    祈风_ddf7阅读 76评论 0 0
  • 保定影像之街道(一二三一) 2018年12月25日,星期二。农历戊戌年甲子月辛卯日 (狗年)十一月十九。河北省保定...
    我_4b6f阅读 45评论 0 0
  • 第一战名称“群雄讨董:璀璨纷杂的时代” 这一章内容很多,从关键点开始吧。这一章讲的主要人物有曹操、孙坚、袁绍、公孙...
    怀特海森堡的简书阅读 464评论 0 0
  • 人其实是很难做到自洽的,我们总是夹在中间,又想显得洒脱,先锋一点,又还是虚荣地接受不了自己会被大多数人评价为“怪异...
    protect0401阅读 92评论 0 1