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
这是我正在处理的音频指纹软件的摘录。我不太确定一些事情。
._data
对tensec做了什么,tensec._data
在fromstring
的目的是什么(我理解的是fromstring
需要tensec._data
并返回一个数组)请帮帮我
答案 0 :(得分:2)
几乎所有可以在AudioSegment上执行的操作都会返回一个AudioSegment(包括切片),类似于切片字符串返回字符串的方式。
但是,切片是在几毫秒内完成的,所以你应该写tensec = song[:10000]
AudioSegment().raw_data
(也可以._data
访问,但您不应该使用私有属性)是AudioSegment
包含的原始字节数据。在python 2上,这是一个bytestring
,在python 3上它是一个bytes
对象。
numpy.fromstring()
存在,因为在python 2中,原始字节数据通常存储为字符串,而这些字符串并不适用于数字操作。如果你想使用音频样本的数值,你也可以使用`AudioSegment().get_array_of_samples()这几乎做同样的事情,但是考虑它是否是8/16/32位音频,以及它是否& #39;单声道或立体声。
我使用get_array_of_samples()
方法实现了低通滤波器(source on github),您也可以将其作为示例使用