librosa.load 踩坑小记录

2022/06/12 python编程与脚本 共 535 字,约 2 分钟 Read:

一个 librosa 踩坑的小记录。

事情的背景是在做一个项目的时候,我用 python librosa 包读取音频数据。因为音频较长,因此每次读取其中片段数据。 发现两种方式获得的结果对不齐。虽然听上去都是对的,但数值上会有细小的差别,有时候对结果处理上有所影响。

代码如下:

import librosa
# method1
sig, sr = librosa.load(wav_path, sr=16000, offset=offset, duration=dur)
# method2
sig_all, sr = librosa.load(wav_path, sr=16000, offset=offset, duration=dur)
sig_chunk = sig_all[offset*sr:(offset+dur) * sr]
assert sig == sig_chunk

自然想法是回去看了下 load 函数的源码,发现

  1. 只要 sr 不为 None,即使和原音频采样率相同,依然会进行重采样。等采样率重采样,依然会造成音频数值的变化。
  2. 对于 offset 不为 None,先进行切片处理,再进行重采样。这个顺序和我一开始的设想是相反的。

因为2的缘故,重采样算法对音频两端会进行padding 操作,从而会造成两端处数值层面的改动较明显(相对而言)。

Search

    Table of Contents

    本站总访问量