Skip to main content

dcssvox

Hands-free voice control and narration for Dungeon Crawl Stone Soup, built for playing on a phone under Termux with headphones and a mic.

You say what to do; it reads back what happened. No keyboard, no screen-staring.

you:  "explore"
it:   "You encounter a bat."
you:  "attack east"
it:   "You hit the bat. Health 17 of 19."

Why it works

DCSS is turn-based and lives in a terminal, which makes it close to the ideal target for voice: nothing has a reaction window, and both the screen and the input are trivially machine-accessible. dcssvox runs crawl inside tmux and drives it from outside — keystrokes in via send-keys, the rendered screen out via capture-pane. crawl itself is never patched.

Three design rules, all aimed at someone whose hands are busy:

  • Never stuck. There is no keyboard to bail out with, so every modal state is recognised and has a spoken way out. recover() walks crawl back to normal play without needing to classify the state correctly.
  • Never surprised. Irreversible actions (quaff, drop, read, take off) are read back and wait for "yes" before a key is sent.
  • Never guessing. Item and spell names are matched against the letters crawl just printed on screen, not a hand-maintained table. If nothing matches convincingly it says so instead of pressing something.

Speech priority comes from crawl's own message channels: dcssvox pins each of the 30 channels to a colour in its generated rc, so the SGR code on a message row is an exact, language-independent priority signal. "An endoplasm is nearby!" is urgent; "The endoplasm barely misses you." is not read at all.

Install (Termux)

pkg install crawl tmux git cmake clang make
pip install dcssvox
dcssvox doctor          # tells you what's missing

For speech output also install the Termux:API app (from F-Droid) plus pkg install termux-api. For voice input:

dcssvox setup           # builds whisper.cpp + fetches tiny.en (one time)
dcssvox play

Watch the game on screen any time with tmux attach -t dcssvox.

Without a mic

dcssvox type runs the exact same loop with typed input — useful for testing the command vocabulary, and it works on any Linux box.

Vocabulary

Say Does
explore / keep going auto-explore until something happens
north, go east, southwest move one square
run north travel in a direction
attack east attack an adjacent monster
rest / wait long rest / pass one turn
downstairs / travel to the stairs descend / auto-travel
what's around read the monster list (no turn used)
status / where am i health, magic, statuses, location
inventory read what you're carrying
quaff curing / read blinking / wield mace menu actions by name
stop / cancel interrupt, back out of anything
again repeat the last thing said

Anything outside the vocabulary is dropped in silence rather than guessed at — with an always-on mic that refusal is the whole safety model.

Status

Alpha. The deterministic loop is verified end-to-end against crawl 0.34.1. Optional LLM assistance (for long spell/item names, and for phrasing outside the fixed grammar) is planned via pip install dcssvox[llm].

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dcssvox-0.1.0.tar.gz (28.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dcssvox-0.1.0-py3-none-any.whl (29.2 kB view details)

Uploaded Python 3

File details

Details for the file dcssvox-0.1.0.tar.gz.

File metadata

  • Download URL: dcssvox-0.1.0.tar.gz
  • Upload date:
  • Size: 28.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for dcssvox-0.1.0.tar.gz
Algorithm Hash digest
SHA256 922f1e38f5559c3490fb6f0dc0faa4ba266efba642f3e95877f41a4687b03956
MD5 4080b727a7b49fa88bb4e030a44a6dce
BLAKE2b-256 7dd3ca8b91f53223b40e40de4a925e50d5cbe15a19644b16a266cea34aaaa770

See more details on using hashes here.

File details

Details for the file dcssvox-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: dcssvox-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 29.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for dcssvox-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6017486af218bd5b167a395eab282fa927a812d78599ef18b845d3bd30167aa4
MD5 a87b11f34de72274e646485ca1a26c4b
BLAKE2b-256 52686976b6ddae771c221c1eac9e28a7f0fbfd8d88b90e4e0052ffe7d8a8adef

See more details on using hashes here.

Release history Release notifications | RSS feed

0.12.1

2 files

0.12.0

2 files

0.11.1

2 files

0.11.0

2 files

0.10.6

2 files

0.10.5

2 files

0.10.4

2 files

0.10.3

2 files

0.10.2

2 files

0.10.1

2 files

0.10.0

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.3

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.1

2 files

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.1

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page