#!/usr/bin/env python3 """Convert raw PCM audio data to WAV format. Azure OpenAI Realtime API outputs PCM audio (24kHz, 16-bit, mono). This script converts it to standard WAV format for browser playback. Usage: from pcm_to_wav import pcm_to_wav wav_bytes = pcm_to_wav(pcm_data, sample_rate=24000) """ import struct import io def pcm_to_wav( pcm_data: bytes, sample_rate: int = 24000, channels: int = 1, sample_width: int = 2 ) -> bytes: """Convert raw PCM audio data to WAV format. Args: pcm_data: Raw PCM audio bytes sample_rate: Samples per second (default 24000 for gpt-realtime-mini) channels: Number of audio channels (default 1 for mono) sample_width: Bytes per sample (default 2 for 16-bit) Returns: WAV-formatted audio bytes """ wav_buffer = io.BytesIO() # RIFF header wav_buffer.write(b'RIFF') wav_buffer.write(struct.pack(' int: """Calculate audio duration in seconds from PCM data length.""" return len(pcm_data) // (sample_rate * sample_width) if __name__ == "__main__": # Example usage import sys if len(sys.argv) > 1: with open(sys.argv[1], 'rb') as f: pcm_data = f.read() wav_data = pcm_to_wav(pcm_data) output_path = sys.argv[1].replace('.pcm', '.wav') with open(output_path, 'wb') as f: f.write(wav_data) print(f"Converted to {output_path} ({calculate_duration(pcm_data)}s)")