librosa.load返回什么信息?

2024-09-24 02:21:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我是信号处理的新手,我经常和librosa库合作。 我想知道当我使用librosa.load函数读取音频(.wav)文件时,它返回的信息是什么。 是瞬时声压吗,单位为pa?或者仅仅是没有单位的声音信号的瞬时振幅


Tags: 文件函数信息声音信号load单位音频
3条回答

为了补充上述答案,您还可以使用librosa函数 librosa.get_duration(y,sr)以秒为单位获取音频文件的持续时间。 或者您可以使用len(y)/sr以秒为单位获取音频文件的持续时间

为了确认前面的答案,librosa.load返回一个时间序列,该时间序列在librosa glossary中定义为:

时间序列: 通常是一个音频信号,用y表示,并用浮点值的一维numpy.ndarray表示。y[t]对应于采样t处波形的振幅

振幅通常作为最初拾取音频的麦克风或接收器设备周围压力变化的函数进行测量。(详见here

据我所知,振幅是记录时大气压力变化的测量值。根据librosa.load文档here,此方法返回两件事:

  • 采样率sr:这意味着每秒记录多少个样本

  • 二维阵列:

    • 第一个轴:表示音频中振幅(气压变化)的记录样本
    • 第二个轴:表示音频中的频道数

以下是官方文件中的一个示例:

>>> import librosa

>>> filename = librosa.util.example_audio_file()
>>> y, sr = librosa.load(filename)
>>> sr  #sample rate
22050
>>> y.shape   #mono (1 channel)
(1355168,)
>> y.shape[0] / sr  #duration of audio file in seconds
61.45886621315193

我们可以看到:

  • 采样率为22050,这意味着记录器每秒记录22050
  • y.shape = (1355168,),这意味着整个音频中只有一个通道(单声道)记录了1355168个样本
  • 使用简单的数学,您可以通过将total_number_of_samples除以sample_rate来计算此音频文件的持续时间

相关问题 更多 >