From cb073b2d5b74730d81319c0f8b9a72d309f0bc26 Mon Sep 17 00:00:00 2001 From: jake Date: Sat, 15 Nov 2025 16:00:16 +0000 Subject: [PATCH] added python file for piping serial to speaker in windows --- main.py | 37 ------------------------- windows_serial_to_speaker.py | 52 ++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 37 deletions(-) delete mode 100644 main.py create mode 100644 windows_serial_to_speaker.py diff --git a/main.py b/main.py deleted file mode 100644 index 8b194bc..0000000 --- a/main.py +++ /dev/null @@ -1,37 +0,0 @@ -import serial -import pyaudio -import numpy as np - -SERIAL_PORT = '/dev/ttyACM0' # Change this to your serial port -BAUD_RATE = 1500000 -CHUNK_SIZE = 256 # Number of frames in each block - -p = pyaudio.PyAudio() - -stream = p.open(format=pyaudio.paInt16, - channels=2, - rate=16000, - output=True) - -ser = serial.Serial(SERIAL_PORT, BAUD_RATE) - -print("Streaming audio...") - -try: - while True: - data = ser.read(CHUNK_SIZE * 4) # 2 channels × 2 bytes - if not data: - break - - audio_data = np.frombuffer(data, dtype=np.int16) - stream.write(audio_data.tobytes()) - -except KeyboardInterrupt: - print("Stopping audio stream...") - -finally: - stream.stop_stream() - stream.close() - p.terminate() - ser.close() - diff --git a/windows_serial_to_speaker.py b/windows_serial_to_speaker.py new file mode 100644 index 0000000..ac21ed9 --- /dev/null +++ b/windows_serial_to_speaker.py @@ -0,0 +1,52 @@ +import serial +import pyaudio +import numpy as np +import struct + +SERIAL_PORT = 'COM13' # Adjust to your port +BAUD_RATE = 1500000 +BLOCK_SIZE = 512 # PCM bytes per block (128 stereo frames) +MAGIC = 0xABCD # header marker +RATE = 16000 +CHANNELS = 2 + +p = pyaudio.PyAudio() + +stream = p.open(format=pyaudio.paInt16, + channels=CHANNELS, + rate=RATE, + output=True) + +ser = serial.Serial(SERIAL_PORT, BAUD_RATE, timeout=1) + +print("Streaming audio...") + +try: + while True: + # Read 2‑byte header + hdr = ser.read(2) + if len(hdr) < 2: + continue + + (magic,) = struct.unpack('