--- title: NeuDecide emoji: 🎙️ colorFrom: blue colorTo: yellow sdk: gradio sdk_version: 6.29.1 app_file: app.py short_description: Speech in, tool calls out — no transcript in between python_version: "3.12" --- A demo of [NeuDecide](https://huggingface.co/neuphonic/neudecide), a tiny (~55M parameter, 43 MB) voice-action model from [Neuphonic](https://www.neuphonic.com). Record a spoken command, give it a list of tools as JSON, and it emits the matching tool call — no transcript in between and no GPU required. ``` "clean the bathroom" + [cleanRoom, goToBase, getBattery] → [{"name": "cleanRoom", "arguments": {"room": "bathroom"}}] ``` - **Inputs**: a short voice recording (≤ 30 s, English) and a JSON list of tool definitions (`name`, `description`, JSON-Schema `parameters`). - **Output**: the tool calls the utterance maps to — a JSON list of `{"name", "arguments"}` dicts, or `[]` when no tool applies. - **How**: three q4 ONNX graphs (audio encoder, tool encoder, decoder) run on CPU via ONNX Runtime with grammar-constrained decoding, using the [`neudecide`](https://pypi.org/project/neudecide/) package. Tools are passed in at inference time, so you change what the model can do by editing the JSON — try the preset tool sets (robot vacuum, car control, smart home) or paste your own. Weights are bundled in `model/`; sample WAVs and preset tools are from the [authors' repository](https://github.com/neuphonic/neudecide) (Apache-2.0).