Your guess is correct until an audio recorder Streamlit native widget is implemented, which I believe is somewhere on the roadmap, your best bet would be using streamlit-webrtc which uses JS code on the frontend side to pass audio to the Python backend server. There’s also a JS hack through streamlit-bokeh-events.