簡體   English   中英

從python3中的.wav文件中刪除文件頭

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM