I've started to design an audio signal analyser and at first, I wanted to start from the basics. One of those first steps is to plot audio samples versus time.
I've written the code below to show whole data inside (both file format and audio data) a voice recording of a WAVE file. That 5-second long audio file is created by using 44.1 kHz of sampling frequency, 16-bit integers to represent samples, 1024 frames and two channels (i.e., stereo).
import sys
import wave
import pyaudio
with wave.open("Recording-1.wav", "rb") as file:
f = pyaudio.PyAudio();
FRAMES = 1024; # Frames are used to fit in them file information without loading up all of them onto a single variable and possibly exceeding a pre-specified memory allocation of it.
whole_data = wf.readframes(FRAMES);
print(whole_data);
wf.close();
After running the script, I've gathered an output which includes characters in hexadecimal numbers that I don't expect to see. For example, near the end of the output (I assume that the raw audio data is shown there.), I see \x00q
which contradicts both the representation of hex numbers and samples.
I've tried to compare possible WAVE file header chunk values to them near the beginning of the output (again, assuming that the output is sorted in that way), but I couldn't figure out an explanation. I was expecting to see, for example, \x1B
inside the raw audio data section of the data chunk.
Why does it occur?
source https://stackoverflow.com/questions/75248451/unexpected-characters-during-reading-a-wave-file
Comments
Post a Comment