我正在尝试编写一个Python脚本来处理存储在S3上的音频数据。
我有一个S3对象,我是通过以下方式调用它的:
def grabAudio(filename, directory):
obj = s3client.get_object(Bucket=bucketname, Key=directory+'/'+filename)
return obj['Body'].read()
使用以下方式访问数据:
print(obj['Body'].read())
获取正确的音频信息,因此它可以从存储桶中访问数据。
当我试图在音频处理库(pydub)中使用这些数据时,会失败:
``` audio = AudioSegment.from_wav(grabAudio(filename, bucketname))
Traceback (most recent call last): File "split_audio.py", line 38, in <module> audio = AudioSegment.from_wav(grabAudio(filename, bucketname)) File "C:\Users\jmk_m\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pydub\audio_segment.py", line 544, in from_wav return cls.from_file(file, 'wav', parameters) File "C:\Users\jmk_m\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pydub\audio_segment.py", line 456, in from_file file.seek(0) AttributeError: 'bytes' object has no attribute 'seek' ```
S3传来的对象格式是什么?我想它应该是字节数组吧?如果是这样,有没有一种方法可以将其解析为.wav格式而不必保存到磁盘上?我正在尝试避免保存到磁盘上。
同时也欢迎使用其他音频处理库。
io.BytesIO
从bytes
创建一个类似文件的对象,并将其传递给你的库:https://dev59.com/C6Lia4cB1Zd3GeqPimhO#44437265 - Linas Valiukas