Audio I/O for Python,
running in the browser

Record the microphone and play audio back from Python inside the browser — Pyodide, JupyterLite, thebe — straight to and from a NumPy array. No native PortAudio, no server.

rec = record(3.0) recorded 3.00 s
rec.samplesfloat32 · (144000, 1) · 48 kHz

Features

Why it exists

Python can't reach the speakers, so it asks the page

In the browser, Python usually runs in a Web Worker with no access to getUserMedia or the Web Audio API — so the usual sounddevice → PortAudio stack can't run. browseraudio does the capture and playback on the page's main thread, through a small anywidget frontend, and ships the samples across to the kernel.

Read the architecture →