2
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. 拥有的目的是什么fromstring(我所理解的是fromstring接受tensec._data并返回一个数组)

请帮帮我

4

1 回答 1

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

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

  2. AudioSegment().raw_data(也可以访问,._data但您不应该使用 private 属性)是AudioSegment. 在 python 2 上,这是一个bytestring,在 python 3 上,它是一个bytes对象。

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

我使用该方法实现了一个低通滤波器(github上的源代码get_array_of_samples()) ,您可能还会发现它作为示例很有用

于 2016-03-11T19:26:29.743 回答