An Android Text-to-Speech (TTS) engine that connects to any OpenAI-compatible API backend (supporting the /v1/audio/speech endpoint).
This allows you to use custom, self-hosted, or cloud TTS voices — powered by AllTalk TTS, Piper, OpenAI, or any compatible service — as a standard system-wide TTS engine on your Android device.
- Integrates as a standard Android TTS Engine (selectable in Android Settings → Text-to-Speech).
- Connects to any OpenAI-compatible
/v1/audio/speechbackend. - API Key is optional — works without authentication for local servers.
- In-app Settings screen to configure:
- Backend URL
- API Key (optional, stored locally, input masked)
- TTS Model
- TTS Voice
- Response Format (wav / mp3 / opus / pcm)
- Quick-fill presets for AllTalk (local) and OpenAI Cloud.
- Direct link to Android TTS engine selection from the main screen.
- Settings are persisted locally using Jetpack DataStore.
Download the latest APK from Releases and install it, or build from source.
Open the app and tap "Open Android TTS Settings", then set Custom TTS as your preferred engine.
Tap the ⚙️ icon to open Settings. Use a preset or fill in manually:
| Field | AllTalk (local) | OpenAI Cloud |
|---|---|---|
| Backend URL | http://<your-pc-ip>:7851/v1/audio/speech |
https://api.openai.com/v1/audio/speech |
| API Key | (leave empty) | Your OpenAI API Key |
| Model | piper |
tts-1 or tts-1-hd |
| Voice | alloy |
alloy, nova, echo, … |
| Format | wav |
wav |
Tap Save.
AllTalk TTS runs on your PC/server and exposes an OpenAI-compatible API on port 7851.
- Install and start AllTalk TTS on your machine.
- Make sure your Android device and the server are on the same network.
- Use the "AllTalk (Local)" preset in the app — update the IP address to match your server.
Note for WSL users: Set up a Windows port forward so the phone can reach WSL:
netsh interface portproxy add v4tov4 listenport=7851 listenaddress=0.0.0.0 connectport=7851 connectaddress=<WSL-IP>
| Format | Status |
|---|---|
wav |
✅ Supported |
pcm |
✅ Supported |
mp3 |
❌ Not yet implemented |
opus |
❌ Not yet implemented |
- MP3 / Opus decoding support.
- Implement
onStop()to cancel ongoing network requests. - More sophisticated language/voice mapping.

