Удалить заголовок файла из файла .wav в python3 - PullRequest
1 голос
/ 29 марта 2019

Я занимался проектом по шифрованию файлов .wav с использованием алгоритма RSA, и для этого мне нужно удалить заголовок файла, чтобы правильно прочитать файл. Мне нужны звуковые данные в виде массива. Сейчас я искал в Интернете это и не понял, что такое заголовок файла и как его удалить в python3. Ждем предложений. Спасибо.

1 Ответ

1 голос
/ 29 марта 2019
binarySound = bytearray()
binaryHeader = bytearray()

with open("a2002011001-e02.wav",'rb') as f:
        binaryHeader = f.read(44)
        binarySound = f.read()

Это должно быть то, что вы ищете. При этом первые 44 байта (предположительно заголовок) будут считаны в переменную binaryHeader, а остальные звуковые данные - в переменную binarySound.

Чтобы вернуть музыкальный файл обратно, вы можете просто добавить эти два файла вместе

song = bytearray()

with open("header.bin","rb") as h:
        song = h.read()
        with open("data.bin","rb") as d:
                song += d.read()

with open("new.wav","wb") as f:
        f.write(song)

РЕДАКТИРОВАТЬ: Чтобы включить редактирование в OP для нумерует массив:

import numpy

binarySound = {}
binaryHeader = {}

song = {}

with open("a2002011001-e02.wav",'rb') as f:
        buffer = f.read(44)
        binaryHeader = numpy.frombuffer(buffer,dtype=numpy.uint8)
        buffer = f.read()
        binarySound = numpy.frombuffer(buffer,dtype=numpy.uint8)

with open("header.bin","wb") as f:
        f.write(binaryHeader)

with open("data.bin","wb") as f:
        f.write(binarySound)

with open("header.bin","rb") as h:
        song = h.read()
        with open("data.bin","rb") as d:
                song += d.read()

with open("new.wav","wb") as f:
        song = numpy.array(song)
        f.write(song.tobytes())
...