[Tutor] How to check whether audio bytes contain empty noise or actual voice/signal?
dn
PythonList at DancesWithMice.info
Fri Oct 25 19:42:34 EDT 2024
On 26/10/24 05:25, marc nicole via Tutor wrote:
> Hello Python fellows,
>
> I hope this question is not very far from the main topic of this list, but
> I have a hard time finding a way to check whether audio data samples are
> containing empty noise or actual significant voice/noise.
>
> I am using PyAudio to collect the sound through my PC mic as follows:
>
> FRAMES_PER_BUFFER = 1024
> FORMAT = pyaudio.paInt16
> CHANNELS = 1
> RATE = 48000
> RECORD_SECONDS = 2import pyaudio
> audio = pyaudio.PyAudio()
> stream = audio.open(format=FORMAT,
> channels=CHANNELS,
> rate=RATE,
> input=True,
> frames_per_buffer=FRAMES_PER_BUFFER,
> input_device_index=2)
> data = stream.read(FRAMES_PER_BUFFER)
>
>
> I want to know whether or not data contains voice signals or empty sound,
> To note that the variable always contains bytes (empty or sound) if I print
> it.
>
> Is there an straightforward "easy way" to check whether data is filled with
> empty noise or that somebody has made noise/spoke?
If it were "easy" then there would be articles and tutorials aplenty...
Signal processing is a very involved topic.
A Fourier Transform can be thought of as converting a graph from signal
against time, to frequency components. Speech can then be identified.
Filtering allows the inclusion/removal of unwanted frequencies (probably
not useful, per spec).
Spectral Analysis is similar to above but with respect to changes over time.
Time-Domain analysis stays at the level of the current code. Try
graphing that. A lead-in period (of "silence") should enable
identification of background/technical noise. Perhaps thereafter, the
presence of sound over-and-above the "background" will be sufficient for
your purposes (use-case not stated).
--
Regards,
=dn
More information about the Tutor
mailing list