“pydub._data”和“numpy.fromsting”如何在音频指纹中工作?

时间:2016-03-11 05:05:22

标签: python numpy pydub

import numpy as np
from pydub import AudioSegment

song = AudioSegment.from_mp3("Music/Jimin/trap/_Revolution (Original Mix).mp3")

tensec = song[:10]
data = np.fromstring(tensec._data,np.int16)

print tensec
print data

这是我正在处理的音频指纹软件的摘录。我不太确定一些事情。

  1. tensec保存为
  2. 的格式
  3. ._data对tensec做了什么,tensec._data
  4. 中的格式是什么
  5. 拥有fromstring的目的是什么(我理解的是fromstring需要tensec._data并返回一个数组)
  6. 请帮帮我

1 个答案:

答案 0 :(得分:2)

  1. 几乎所有可以在AudioSegment上执行的操作都会返回一个AudioSegment(包括切片),类似于切片字符串返回字符串的方式。

    但是,切片是在几毫秒内完成的,所以你应该写tensec = song[:10000]

  2. AudioSegment().raw_data(也可以._data访问,但您不应该使用私有属性)是AudioSegment包含的原始字节数据。在python 2上,这是一个bytestring,在python 3上它是一个bytes对象。

  3. numpy.fromstring()存在,因为在python 2中,原始字节数据通常存储为字符串,而这些字符串并不适用于数字操作。如果你想使用音频样本的数值,你也可以使用`AudioSegment().get_array_of_samples()这几乎做同样的事情,但是考虑它是否是8/16/32位音频,以及它是否& #39;单声道或立体声。

  4. 我使用get_array_of_samples()方法实现了低通滤波器(source on github),您也可以将其作为示例使用