[英]Remove file header from a .wav file in python3
我一直在做一個使用RSA算法加密.wav文件的項目,為此,我需要刪除文件頭才能正確讀取文件。 我需要聲音數據作為一個numpy數組。 現在,我已經在網上搜索了此信息,但不了解文件頭是什么以及如何在python3中刪除它。 期待提出建議。 謝謝。
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中包含對numpy數組的需要的編輯:
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())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.