Как преобразовать 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>

Любая помощь будет очень признательна!

Вернуться на верх