Как преобразовать PCM 16bit signed LE 16000kHz в WAV в python, учитывая только байты?
Я извлек объект из amazon s3 buckets следующим образом:
s3_response_object = S3.get_object(Bucket=bucket_name, Key=key_name)
object_content = s3_response_object['Body'].read()
# object content --> b'\x06\x10...'
Внутри ведра у вас есть аудиофайл PCM 16bit signed LE 16000kHz. Если вы запишете этот файл в .wav файл следующим образом:
with open("audio.wav", "wb") as f:
f.write()
Файл wav не может быть воспроизведен quicktime VLC или любым аудиоплеером. Как я могу преобразовать эти байты в wav-файл. Конечной целью является передача этих байтов в представление с помощью django, и я уже проверил, что мое представление django работает правильно, используя заменяющий поток байтов для использования в представлении, и аудио воспроизводится без проблем. Я думаю, что байты, которые я получаю от AWS, нуждаются в некотором преобразовании, чтобы быть действительными для передачи в мое представление. Любая помощь будет очень признательна.
КОНЕЧНАЯ ЦЕЛЬ ВНУТРИ ПРЕДСТАВЛЕНИЯ DJANGO:
def get_context_data(self, **kwargs: Any) -> Dict[str, Any]:
"""" get_context_data gets audio from S3 and pass to django view"""
context = super().get_context_data(**kwargs)
s3_response_object = S3.get_object(Bucket=bucket_name, Key=key_name)
object_content = s3_response_object['Body'].read()
context["audio"] = b64encode(object_content)
return context
ВНУТРЕННИЙ ШАБЛОН DJANGO
<audio controls>
<source src="data:audio/wav;base64,{{ audio }}" type="audio/wav">
</audio>
Любая помощь будет очень признательна!