gpt4 book ai didi

python - 试图了解频谱图和n_mels的形状

转载 作者:行者123 更新时间:2023-12-03 00:07:40 24 4
gpt4 key购买 nike

我正在研究这两个librosa文档:melspectrogramstft
我正在研究可变长度音频的数据集,但我不太了解形状。例如:

(waveform, sample_rate) = librosa.load('audio_file')
spectrogram = librosa.feature.melspectrogram(y=waveform, sr=sample_rate)
dur = librosa.get_duration(waveform)
spectrogram = torch.from_numpy(spectrogram)
print(spectrogram.shape)
print(sample_rate)
print(dur)
输出:
torch.Size([128, 150])
22050
3.48
我得到以下几点:
  • 采样率是您每秒获得N个采样,在这种情况下,每秒获得22050个采样。
  • 窗口长度是针对该音频长度周期计算的FFT。
  • STFT在音频时间的小窗口中计算os FFT。
  • 输出的形状为(n_mels,t)。 t =持续时间/ window_of_fft。

  • 我试图理解或计算:
  • 什么是n_fft?我的意思是它对音频波到底在做什么?我在文档中阅读了以下内容:

  • n_fft : int > 0 [scalar]

    length of the windowed signal after padding with zeros. The number of rows in the STFT matrix D is (1 + n_fft/2). The default value,n_fft=2048 samples, corresponds to a physical duration of 93milliseconds at a sample rate of 22050 Hz, i.e. the default samplerate in librosa.


    这意味着在每个窗口中将采样2048个样本,这意味着-> 1/22050 * 2048 = 93 [ms]。正在为音频的每93 [ms]计算一次FFT吗?
    那么,这意味着窗口大小和窗口用于过滤该帧中的信号吗?
  • 在上面的示例中,我知道我得到了128个梅尔频谱图,但这到底是什么意思?
  • 什么是hop_length?阅读文档后,我了解到如何将窗口从一个fft窗口移至下一个右窗口?如果此值为512并且n_fft = 512,那是什么意思?这是否意味着它将占用一个23 [ms]的窗口,为此窗口计算FFT并跳过下一个23 [ms]?
  • 如何指定我想从一个FFT窗口重叠到另一个?

  • 请帮忙,我看过许多计算频谱图的视频,但在现实生活中似乎看不到它。
    谢谢。

    最佳答案

    理解频谱图输出尺寸的基本参数不一定是所用FFT的长度(n_fft),而是连续FFT之间的距离,即hop_length
    在计算STFT时,您将为许多短段计算FFT。这些段的长度为n_fft。通常,这些段重叠(以避免信息丢失),因此两个段之间的距离通常不是n_fft,而是类似n_fft/2。该距离的名称是hop_length。它也在样本中定义。
    因此,当您有1000个音频样本并且hop_length为100时,您将获得10个特征帧(请注意,如果n_fft大于hop_length,则可能需要填充)。
    在您的示例中,您使用的默认Hop_length为512。因此,对于以22050 Hz采样的音频,您获得的特征帧速率为

    frame_rate = sample_rate/hop_length = 22050 Hz/512 = 43 Hz
    同样,填充可能会稍微改变一下。
    因此,对于22050 Hz的10s音频,您将得到一个尺寸为 (128, 430)的声谱图数组,其中128是Mel箱的数量,430是特征的数量(在本例中为Mel频谱)。

    关于python - 试图了解频谱图和n_mels的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62584184/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com