import wave
import numpy as np

FIFO_PATH = "/tmp/esp32_audio"
OUTPUT_FILE = "recorded_audio.wav"

SAMPLE_RATE = 16000
CHANNELS = 2        # stereo from ESP32
BYTES_PER_SAMPLE = 2

# configure WAV writer
out_wav = wave.open(OUTPUT_FILE, "wb")
out_wav.setnchannels(CHANNELS)
out_wav.setsampwidth(BYTES_PER_SAMPLE)
out_wav.setframerate(SAMPLE_RATE)

with open(FIFO_PATH, "rb") as f:
    print(f"Recording from {FIFO_PATH} into {OUTPUT_FILE}...")
    try:
        while True:
            data = f.read(8000)  # ~0.125s stereo
            if not data:
                continue
            out_wav.writeframes(data)
    except KeyboardInterrupt:
        print("\nStopping recording.")
    finally:
        out_wav.close()
        print(f"Saved {OUTPUT_FILE}")
