Я пытаюсь написать скрипт 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
и передать его в свою библиотеку: stackoverflow.com/a/44437265/200603< /а> - person Linas   schedule 27.02.2018