Parsing "play Radiohead" without a neural net
A lightweight, rule-based intent parser for voice assistants that trades ML complexity for explicit control.

What it does
Adapt turns spoken or typed natural language into structured intents using hand-defined entities and rules. You register vocabulary (“play” is a Listen Command, “Radiohead” is an Artist) and build intents from required or optional pieces. It’s the parser behind the Mycroft open-source voice assistant.
The interesting bit
The framework is deliberately non-neural. You define what matters — no training data, no GPU, no stochastic surprises. The Pandora example in the README shows dynamic vocabulary populated from an API at runtime, which is where this gets useful: static commands plus live data.
Key highlights
- Rule-based matching with
require()andoptionally()constraints - Runtime vocabulary registration (good for user-specific data like playlists or station names)
- Debug serialization via
adapt.tools.debugfor reproducible issue reports - Apache 2.0 licensed, though the project requires a CLA for contributions
- Production-ready badge, but Travis CI and Coveralls links suggest older tooling
Caveats
- README examples use Python 2-era
virtualenvsyntax and Travis CI (deprecated), so setup may need adjustment - No performance benchmarks or latency claims in the documentation
- Requires manual vocabulary curation; scaling to broad domains means more elbow grease
Verdict
Good fit if you’re building a voice interface with a constrained, known vocabulary and want debuggability over magic. Skip it if you need open-domain understanding or expect users to say things you haven’t explicitly planned for.