r/rust • u/crutcher • 4h ago
🛠️ project bunsen-asr v0.39.0: speech to text via: whisper, qwen3-asr, parakeet, phonon-1/2
crates.ioThis is less an announcement of capability, than a call for timers and tuners. I want a solid ai/tensor development stack in Rust. I'm a big fan of burn, and I'm trying to put effort into moving us towards that world.
I've been developing bunsen (tomorrow's burn problems today!) as a front-runner common library for extensions to the burn tensor ecosystem which aren't solid enough yet for the core.
A big part of that has been porting existing pretrained model families; and working to modularize their internals into reusable components, strong tests, and flexible rust-oriented configs.
I've been working to port a number of modern ASR (automatic speech recognition) models to bunsen; and wire up the pull/cache/load pathway for several ASR families.
bunsen-asr is a binary crate released against the bunsen library, against the burn library, showcasing drivers for these ASR stacks.
Currently, this has support for:
- whisper - openai public models through turbo, huggingface loads.
- qwen3-asr - qwen3-asr public models, phonon-1, huggingface loads.
- parakeet - nvidia public models, phonon-2, huggingface loads.
But it's slower than the released pytorch-based asr tools. Weights load slower, some internal buffering is worse, probably half a dozen tiny issues I haven't found yet.
The core burn team is very busy with GPU correctness; and edge utility stuff. I'm targeting what comes next: tensor shape contracts, path-based parameter selectors, complex sub-graph combinators, and now, timers.
I'm looking for approaches to make asr calls through this toy binary faster; and to instrument it in ways which are useful for determining where to work.
- should we implement `tracing` + otel on ... everything?
- when downloading weights, should they be loaded from source, then re-saved as burnpak files?
- how do we time repeated chunk calls? histogram on call delay?
- etc.