Seite 1 von 1
pyaudio: Spektrum analyzer
Verfasst: Dienstag 9. August 2022, 07:16
von eugen80
Hallo,
ich möchte gerne einen einfachen Spektrum analyzer bauen. Mikrofoneingang auszulesen klappt es gut, ich verstehe aber nicht, was die Zahlen in dataInt bedeuten:
Code: Alles auswählen
data = stream.read(CHUNK)
dataInt = struct.unpack(str(CHUNK) + 'h', data)
Re: pyaudio: Spektrum analyzer
Verfasst: Dienstag 9. August 2022, 07:42
von __deets__
Das ist das digitalisierte Signal. Die Art, wie Computer Audio repräsentieren. Was hast du denn erwartet, wie das aussieht?
Re: pyaudio: Spektrum analyzer
Verfasst: Dienstag 9. August 2022, 08:12
von Sirius3
Das wird so nicht funktionieren. Wenn Du eine Anzahl von CHUNK 16bit-Ints haben möchtest, dann mußt Du 2*CHUNK Bytes lesen.
Bei unpack sollte man angeben ob man Little- oder Big-Endian Ints hat.
Der Datentyp hat nichts im Variablennamen zu suchen.
Zum Beispiel:
Code: Alles auswählen
data = struct.unpack(f"<{CHUNK}h", stream.read(2 * CHUNK))
Re: pyaudio: Spektrum analyzer
Verfasst: Dienstag 16. August 2022, 09:29
von eugen80
Also der gesamte Code sieht so aus:
Code: Alles auswählen
import pyaudio as pa
import struct
CHUNK = 1024*2
FORMAT = pa.paInt16
CHANNELS = 1
RATE = 44100 # in Hz
p = pa.PyAudio()
stream = p.open(
format = FORMAT,
channels = CHANNELS,
rate = RATE,
input=True,
output=True,
frames_per_buffer=CHUNK
)
while 1:
data = stream.read(CHUNK)
dataInt = struct.unpack(str(CHUNK) + 'h', data)
Eingang: Ton z. B. 1000Hz
Wie kann ich das an den Zahlen erkennen?
Re: pyaudio: Spektrum analyzer
Verfasst: Dienstag 16. August 2022, 09:52
von __blackjack__