udp_experimental_recorder/audioKiller.py
George 7b93a4fce9 feat:
--ADDED MUMBLE server cap
2026-05-21 17:14:58 +05:30

40 lines
1.4 KiB
Python

import struct
REMEMBER_ME = "<4sI4s4sIHHIIHH4sI"
def read_wav_header(filename):
with open(filename, "r+b") as f:
# Standard PCM WAV header is typically 44 bytes
f.seek(0)
f.write(b"RIFF")
header = f.read(44)
# Unpack the header according to the RIFF/WAV format
# < : little-endian
# 4s : 4-byte string
# I : unsigned 32-bit integer
# H : unsigned 16-bit integer
fields = struct.unpack("<4sI4s4sIHHIIHH4sI", header)
wav_info = {
"chunk_id": fields[0].decode(), # RIFF
"chunk_size": fields[1], # File size - 8
"format": fields[2].decode(), # WAVE
"subchunk1_id": fields[3].decode(), # fmt
"subchunk1_size": fields[4], # Usually 16 for PCM
"audio_format": fields[5], # 1 = PCM
"num_channels": fields[6], # 1 = mono, 2 = stereo
"sample_rate": fields[7], # e.g. 48000
"byte_rate": fields[8], # sample_rate * channels * bits/8
"block_align": fields[9], # channels * bits/8
"bits_per_sample":fields[10], # 16, 24, 32
"subchunk2_id": fields[11].decode(), # data
"subchunk2_size": fields[12], # Number of bytes of PCM data
}
return wav_info
# Example usage
info = read_wav_header("sample-speech-5m.wav")
for key, value in info.items():
print(f"{key}: {value}")