{"library":"miniaudio","title":"Miniaudio Python Bindings","description":"miniaudio provides Python bindings for the `miniaudio` C library, offering cross-platform audio playback and decoding capabilities. It includes built-in decoders for common formats like MP3, FLAC, OGG Vorbis, and WAV. The library is actively maintained, with frequent releases (roughly monthly to bi-monthly) often focusing on updates to the underlying C library and Python version compatibility. The current version is 1.61.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install miniaudio"],"cli":null},"imports":["import miniaudio\nminiaudio.PlaybackDevice","import miniaudio.decoders\nminiaudio.decoders.FileDecoder","import miniaudio\nminiaudio.stream_raw_pcm_memory"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import miniaudio\nimport numpy as np\nimport time\n\ndef get_sine_wave(frequency, duration, sample_rate=44100, amplitude=0.5):\n    \"\"\"Generates a raw 16-bit PCM sine wave as bytes.\"\"\"\n    t = np.linspace(0, duration, int(sample_rate * duration), False)\n    amplitude_scale = np.iinfo(np.int16).max * amplitude\n    data = (amplitude_scale * np.sin(2 * np.pi * frequency * t)).astype(np.int16)\n    return data.tobytes()\n\n# Play a 440 Hz sine wave for 3 seconds\nwith miniaudio.PlaybackDevice() as device:\n    print(\"Playing a 440 Hz sine wave for 3 seconds...\")\n    sine_data = get_sine_wave(440, 3)\n    # Create a stream from raw PCM bytes\n    stream = miniaudio.stream_raw_pcm_memory(\n        sine_data,\n        sample_rate=44100,\n        nchannels=1,\n        output_format=miniaudio.SampleFormat.SIGNED16\n    )\n    device.play(stream)\n    time.sleep(3) # Wait for playback to finish\n    print(\"Finished playing.\")","lang":"python","description":"This example demonstrates how to generate a sine wave using NumPy and play it directly using `miniaudio.stream_raw_pcm_memory`. It sets up a `PlaybackDevice`, creates a stream from the raw audio data, plays it, and then waits for the playback duration. This avoids reliance on external audio files.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"1.71","pypi_latest":"1.71","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":80,"avg_install_s":1.8,"avg_import_s":0.16,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"miniaudio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.15,"mem_mb":5.4,"disk_size":"20.9M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"miniaudio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.8,"import_time_s":0.13,"mem_mb":5.4,"disk_size":"21M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"miniaudio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.21,"mem_mb":5.9,"disk_size":"23.1M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"miniaudio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.9,"import_time_s":0.18,"mem_mb":5.9,"disk_size":"24M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"miniaudio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.16,"mem_mb":5.5,"disk_size":"14.9M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"miniaudio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.8,"import_time_s":0.17,"mem_mb":5.5,"disk_size":"15M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"miniaudio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.14,"mem_mb":5.6,"disk_size":"14.6M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"miniaudio","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.8,"import_time_s":0.15,"mem_mb":5.6,"disk_size":"15M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"miniaudio","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"miniaudio","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":4.1,"import_time_s":null,"mem_mb":null,"disk_size":null}]}}