#python #html #numpy #html5-audio
#python #HTML #numpy #html5-аудио
Вопрос:
Чтобы отобразить изображение в HTML из массива numpy, я могу сделать
def numpy_to_b64(array):
im_pil = Image.fromarray(array)
buff = BytesIO()
im_pil.save(buff, format="png")
im_b64 = base64.b64encode(buff.getvalue()).decode("utf-8")
return im_b64
и используйте img
тег
array_b64 = numpy_to_b64(array)
html.Img(src='data:image/png;base64,{}'.format(array_b64))
Интересно, существует ли аналогичный подход для аудио, или как я могу преобразовать одномерный массив numpy, который представляет форму звукового сигнала, в формат, который можно поместить в audio
тег?
Ответ №1:
Не необработанные данные формы сигнала, поскольку браузер не может их интерпретировать (он не будет знать частоту дискретизации и т. Д.). Вам необходимо преобразовать аудиоданные, например, в формат OGG, который поддерживается HTML5. Библиотека, подобная pydub, может быть самым простым способом добиться этого.
Комментарии:
1. Спасибо, я изучаю
pydub
и работаю над этим. В принципе, я получаюAudioSegment
часть массива с помощьюaudio_seg = AudioSegment(array.tobytes(), frame_rate=22050, sample_width=array.dtype.itemsize, channels=1)
andaudio_seg.export('test.ogg', format='ogg', codec='libvorbis')
. Но есть ли способ сохранить его в буфере вместо экспорта файла на диск, как это делается для image (im_pil.save(buff, format="png")
) ?