我正在寻找一个能够读取mp3文件的模块(这是我所理解的二进制文件)并将其数据值存储在数组中。我是音频世界的新手,所以我不确定这些值代表什么。频率可能?
我正在使用Tensorflow项目,该项目从音频字节流中学习。所以我需要某种方式来表示音频字节流。
标准read()
可能有效,但每个音频文件都需要表示为整个数组。因此,每个元素可能代表音频流的一个帧。
我发现了这个link,但我无法让它发挥作用。
我有:
command = [FFMPEG_BIN,
'-i', image_file,
# '-f', 's16le',
# '-acodec', 'pcm_s16le',
'-ar', '44100',
'-ac', '2']
# pipe = sp.Popen(command, stdout=sp.PIPE, bufsize=10**8)
pipe = sp.Popen(command, stdout=sp.PIPE)
raw_audio = pipe.proc.stdout.read(88200*4)
但它引发了一个错误:OSError: [Errno 2] No such file or directory
请注意,image_file
是文件的路径 - > train/rock/006 - The Doors - Light My Fire.mp3
整个代码段如下所示:
for image_index, image in enumerate(image_files):
image_file = os.path.join(folder, image)
try:
command = [FFMPEG_BIN,
'-i', image_file,
# '-f', 's16le',
# '-acodec', 'pcm_s16le',
'-ar', '44100',
'-ac', '2']
# pipe = sp.Popen(command, stdout=sp.PIPE, bufsize=10**8)
pipe = sp.Popen(command, stdout=sp.PIPE)
raw_audio = pipe.proc.stdout.read(88200*4)
except IOError as e:
print('Could not read:', image_file, ':', e, '- it\'s ok, skipping.')