Audiolab
My React Native and Expo audio monorepo: recording, visualization, audio analysis, and on-device speech experiments.
Why?
Audiolab grew out of a simple frustration: I kept needing better audio primitives for React Native apps. Recording was one part of it, but the real work became everything around it: waveform data, analysis, native performance, model integration, and enough demo apps to know the packages work outside a README snippet.
What lives there now
- @siteed/audio-studio: recording, audio processing, preview extraction, and the core APIs I use across the apps.
- @siteed/audio-ui: Skia-based UI components for waveforms, meters, and recording controls.
- @siteed/react-native-essentia: native Essentia bindings for audio feature extraction.
- @siteed/sherpa-onnx.rn: on-device speech-to-text and text-to-speech through sherpa-onnx.
- @siteed/moonshine.rn: Moonshine transcription for React Native, with native and web paths.
- Audio Playground: the app I use to validate the pieces together on iOS, Android, and web.
Current focus
The recent work is less about one package and more about making the whole stack usable: Expo 56 / React Native 0.85 alignment, device selection scripts, EAS release flows, and recipe-based validation for audio and speech features. I want the examples to behave like real apps, because that is where most library bugs show up.