Как восстановить двоичные данные в аудиофайл? - PullRequest
1 голос
/ 21 марта 2019

Я использовал pydub для загрузки аудиофайла следующим образом,

audio = AudioSegment.from_mp3(file_path).set_frame_rate(22050).set_channel(1)

, но если я получаю двоичные данные аудиофайла, я использую следующий способ,

def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()
audio = AudioSegment(data=get_file_content(file_path), sample_width=2, frame_rate=22050, channels=1)

Однако, когда я пытаюсь использовать свойство audio.get_array_of_samples(), я получаю разные массивы из этих двух способов.

Поэтому я хочу спросить, как заставить эти два способа вывода одного и того же массива при чтении одного и того же аудио.

1 Ответ

0 голосов
/ 21 марта 2019

Первый сегмент кода предполагает, что это файл MP3.Во втором случае вы читаете это как 16-битный WAV-файл.Это создаст мусор.

Если у вас есть файл MP3 в байтовом массиве, используйте этот код:

AudioSegment.from_mp3(BytesIO(mp3_data))

с BytesIO отсюда: https://docs.python.org/3/library/io.html

...