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

how does "pydub._data" and "numpy.fromsting" work in audio fingerprint?

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. ._data对tensec做了什么以及tensec._data
  3. 中是什么格式
  4. fromstring 的目的是什么(我所理解的是 fromstring 需要 tensec._data 和 returns 一个数组)

请帮帮我

  1. 您可以在 AudioSegment 上执行的几乎所有操作 return AudioSegment(包括切片)类似于切片字符串的方式 returns 字符串。

    然而,切片是在毫秒内完成的,所以你应该写 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 位音频,以及它是单声道还是立体声。

我使用 get_array_of_samples() 方法实现了一个低通滤波器 (source on github),作为示例您可能也会发现它很有用