【问题标题】:pydub accessing the sampling rate(Hz) and the audio signal from an mp3 filepydub 访问 mp3 文件中的采样率(Hz)和音频信号
【发布时间】:2015-07-14 07:05:58
【问题描述】:

刚刚发现了这个有趣的 python 包 pydub,它可以将任何音频文件转换为 mp3、wav 等。

据我阅读其文档,流程如下:

  1. 使用 from_mp3() 读取 mp3 音频文件
  2. 使用 export() 创建一个 wav 文件。

只是好奇是否有一种方法可以直接从 mp3 文件访问采样率和音频信号(一维数组,假设它是单声道)而不将其转换为 wav 文件。我正在处理数千个音频文件,将它们全部转换为 wav 文件可能会很昂贵。

【问题讨论】:

    标签: python audio mp3 wav pydub


    【解决方案1】:

    如果您对文件的实际音频内容不感兴趣,可以使用pydub.utils.mediainfo()

    >>> from pydub.utils import mediainfo
    >>> info = mediainfo("/path/to/file.mp3")
    >>> print info['sample_rate']
    44100
    >>> print info['channels']
    1
    

    这使用了 avlib 的 avprobe 实用程序,并返回各种信息。我建议试一试:)

    应该比使用AudioSegment.from_mp3(…)打开每个 mp3 快很多

    【讨论】:

    • 除了采样率和识别文件是单声道还是立体声外,我还想以数组的形式获取音频内容。我该怎么做?
    • @bninopaul 如果不解码 mp3,就无法访​​问音频数据 - 您必须使用 AudioSegment.from_mp3(…) 来获取音频数据。原始数据是AudioSegment 实例的属性my_audio_segment._data
    • 在我的例子中,audio._data 返回一个由空字符“/x00”组成的长字符串
    • 它是一个字节串——大多数音频以很多零开头(开头是静音)——如果你想要一个数字数组,你可以很容易地转换它(这是我在 EQ 过滤器中做的一个例子:github.com/jiaaro/pydub/blob/master/pydub/effects.py#L200)
    【解决方案2】:

    frame_rate 表示 sample_rate,所以你可以得到如下所示;

    from pydub import AudioSegment
    
    filename = "hoge.wav"
    myaudio = AudioSegment.from_file(filename)
    print(myaudio.frame_rate)
    

    【讨论】:

      猜你喜欢
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-25
      • 1970-01-01
      • 2013-08-04
      • 2011-09-19
      相关资源
      最近更新 更多