Ich versuche Audio aufzunehmen und gleichzeitig die Amplitude des aufgenommenen Signals zu drucken. Also speichere ich alle Daten in stream.read. Aber wenn ich versuche, sie zu drucken, habe ich eine Folge von Bytes und keine ganzen Zahlen. Ich würde gerne wissen, wie man diese Zeichen umwandelt, um die Amplitude zu erhalten.PyAudio - Konvertiere stream.read in int, um die Amplitude zu erhalten
Dies ist mein Code:
import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE/CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data) # 2 bytes(16 bits) per channel
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
for data in frames:
print(data)
Und das ist, was ich erhalten:
����# ���� !$ �� ���� �������������������������� ������ �� �� �� �� ������ ���������������������������� �� ����
% () , . % #
Danke für Ihre Antwort. Ich habe gerade die Klasse get_rms hinzugefügt und Werte in einer Liste gespeichert und alles ist in Ordnung. Ich bekomme eine Liste von Amplituden, die zunehmen oder abnehmen, ob ich rede oder nicht. – Utopia
Schön. Wenn Sie jetzt wirklich planen wollen, empfehle ich Ihnen, pyqt zu verwenden. – FLCcrakers