An experimental app that inserts AI DJ talk into local music playback.
There are bugs/glitches exist.
Tested only on Google Pixel 9 for client and RTX3060 12GB for host (local llm with llama.cpp and TTS generation)
https://github.com/user-attachments/assets/2c893c0c-9bbf-4f0b-af7d-945cfad3ba87
The Android app generates DJ talk in one of two ways, selectable in Settings → DJ ENGINE:
| Mode | Where talk is generated | Needs |
|---|---|---|
| Remote | Ubuntu PC: any LLM + Chatterbox TTS | The voidfm-host package running on a PC reachable from the phone |
| On-Device | The phone itself: Gemma 4 E2B (LiteRT-LM) + Supertonic 3 | Two model files on the phone; English only |
Android app (music playback + DJ talk playback)
├─ Remote ── HTTP ──> Ubuntu PC (LLM talk generation + Chatterbox TTS)
└─ On-Device ─────────> Gemma 4 E2B + Supertonic 3 on the phone
Download the APK from the GitHub Releases page and install it.
voidfm start (see below), then tap Connect.Download voidfm-host_<version>_all.deb from the GitHub Releases page, then:
sudo apt install ./voidfm-host_*_all.deb
voidfm start
The first voidfm start (run as your normal user, not root):
~/.local/share/voidfm and installs PyTorch / Chatterbox TTS (several GB),A CUDA-capable NVIDIA GPU is recommended for reasonable TTS latency. Using Tailscale is recommended for connecting from outside your home network.
| Command | |
|---|---|
voidfm start / stop / restart | Start, stop, or restart the host |
voidfm status | Show whether it is running and the address to connect to |
voidfm logs -f | Follow the log (first start downloads the TTS model) |
voidfm enable / disable | Start automatically at login |
voidfm configure | Re-run the setup wizard |
voidfm config | Edit ~/.config/voidfm/config.toml (voice cloning, multiple voices, …) |
voidfm uninstall | Remove the Python environment (then sudo apt remove voidfm-host) |
The package also installs a panel icon (VoidFM Host in the app grid, voidfm tray from a terminal). It starts automatically at login from the next login on; open it from the app grid to use it right after installing. From its menu you can start / stop / restart the host, see the address to enter in the app, open the setup wizard or the config file, follow the log, and turn autostart on or off. On Ubuntu's default GNOME desktop the icon appears in the top bar through the preinstalled AppIndicator extension.
API keys can be put in ~/.config/voidfm/env (e.g. OPENAI_API_KEY=...) and referenced from the config as api_key = "env:OPENAI_API_KEY".
app/ Flutter Android app (both DJ engines)
host/ Python host (FastAPI + LLM client + Chatterbox TTS)
bin/voidfm host launcher CLI (installed as /usr/bin/voidfm)
bin/voidfm-tray panel icon (GTK AppIndicator, installed as /usr/bin/voidfm-tray)
packaging/ .deb build script and systemd unit
docs/ notes
# Host from a checkout (uses the same ~/.config/voidfm and ~/.local/share/voidfm)
host/bin/voidfm start
python3 -m unittest discover -s host/tests
# Build the .deb into dist/
packaging/ubuntu/build-deb.sh
# App
cd app && flutter test && flutter run
| Setting | Description |
|---|---|
| DJ Engine | Remote or On-Device |
| Host / Port | Address of the PC running voidfm (Remote mode) |
| On-Device Model / DJ Voice / Speech Pace | Model files, Supertonic 3 voice and speed (On-Device mode) |
| DJ Personality | standard / energetic / chill / intellectual / comedian |
| Talk Length | short / medium / long |
| Talk Frequency | Every 1–5 songs |
| DJ Name | Optional name the DJ uses to introduce themselves |
| Your Name | Optional listener name the DJ calls you by |
| Custom Prompt | Extra instructions appended to every DJ prompt |
3 commits
Dart
45.2%
Python
28.3%
Kotlin
21.4%
Shell
5.1%
An experimental app that inserts AI DJ talk into local music playback.
There are bugs/glitches exist.
Tested only on Google Pixel 9 for client and RTX3060 12GB for host (local llm with llama.cpp and TTS generation)
https://github.com/user-attachments/assets/2c893c0c-9bbf-4f0b-af7d-945cfad3ba87
The Android app generates DJ talk in one of two ways, selectable in Settings → DJ ENGINE:
| Mode | Where talk is generated | Needs |
|---|---|---|
| Remote | Ubuntu PC: any LLM + Chatterbox TTS | The voidfm-host package running on a PC reachable from the phone |
| On-Device | The phone itself: Gemma 4 E2B (LiteRT-LM) + Supertonic 3 | Two model files on the phone; English only |
Android app (music playback + DJ talk playback)
├─ Remote ── HTTP ──> Ubuntu PC (LLM talk generation + Chatterbox TTS)
└─ On-Device ─────────> Gemma 4 E2B + Supertonic 3 on the phone
Download the APK from the GitHub Releases page and install it.
voidfm start (see below), then tap Connect.Download voidfm-host_<version>_all.deb from the GitHub Releases page, then:
sudo apt install ./voidfm-host_*_all.deb
voidfm start
The first voidfm start (run as your normal user, not root):
~/.local/share/voidfm and installs PyTorch / Chatterbox TTS (several GB),A CUDA-capable NVIDIA GPU is recommended for reasonable TTS latency. Using Tailscale is recommended for connecting from outside your home network.
| Command | |
|---|---|
voidfm start / stop / restart | Start, stop, or restart the host |
voidfm status | Show whether it is running and the address to connect to |
voidfm logs -f | Follow the log (first start downloads the TTS model) |
voidfm enable / disable | Start automatically at login |
voidfm configure | Re-run the setup wizard |
voidfm config | Edit ~/.config/voidfm/config.toml (voice cloning, multiple voices, …) |
voidfm uninstall | Remove the Python environment (then sudo apt remove voidfm-host) |
The package also installs a panel icon (VoidFM Host in the app grid, voidfm tray from a terminal). It starts automatically at login from the next login on; open it from the app grid to use it right after installing. From its menu you can start / stop / restart the host, see the address to enter in the app, open the setup wizard or the config file, follow the log, and turn autostart on or off. On Ubuntu's default GNOME desktop the icon appears in the top bar through the preinstalled AppIndicator extension.
API keys can be put in ~/.config/voidfm/env (e.g. OPENAI_API_KEY=...) and referenced from the config as api_key = "env:OPENAI_API_KEY".
app/ Flutter Android app (both DJ engines)
host/ Python host (FastAPI + LLM client + Chatterbox TTS)
bin/voidfm host launcher CLI (installed as /usr/bin/voidfm)
bin/voidfm-tray panel icon (GTK AppIndicator, installed as /usr/bin/voidfm-tray)
packaging/ .deb build script and systemd unit
docs/ notes
# Host from a checkout (uses the same ~/.config/voidfm and ~/.local/share/voidfm)
host/bin/voidfm start
python3 -m unittest discover -s host/tests
# Build the .deb into dist/
packaging/ubuntu/build-deb.sh
# App
cd app && flutter test && flutter run
| Setting | Description |
|---|---|
| DJ Engine | Remote or On-Device |
| Host / Port | Address of the PC running voidfm (Remote mode) |
| On-Device Model / DJ Voice / Speech Pace | Model files, Supertonic 3 voice and speed (On-Device mode) |
| DJ Personality | standard / energetic / chill / intellectual / comedian |
| Talk Length | short / medium / long |
| Talk Frequency | Every 1–5 songs |
| DJ Name | Optional name the DJ uses to introduce themselves |
| Your Name | Optional listener name the DJ calls you by |
| Custom Prompt | Extra instructions appended to every DJ prompt |
3 commits
Dart
45.2%
Python
28.3%
Kotlin
21.4%
Shell
5.1%