No sales team | No call centre | No account manager | No mailing list GitHub | Buy me a cup of tokens
TechHurts.com
SOFTWARE THAT DOES NOT PHONE HOME  ·  EST. WHENEVER
☞ On-device means on-device.
Your text and your voice never touch a network we control, because we do not have one.
Product No. 001

TTS Runner reads anything aloud, on your phone.

Share text or an article link to it and it speaks, in a voice cloned from a recording you made. No server, no account, no audio leaving the device. Free, Apache-2.0, source included.

TTS Runner — on-device Qwen3-TTS and Supertonic 3

Two engines ship side by side. Qwen3-TTS (1.7B, llama.cpp) clones a voice from a 10–20 second reference recording. Supertonic 3 (99M, ONNX Runtime) runs below real time — 5.7 seconds of audio in 2.7 seconds on a Galaxy S24 FE — across 31 languages. The speaker you pick decides the engine; there is no hidden global setting and the app never switches backend behind your back.

Screenshots
Speakers tab listing cloned Qwen voices, each with a star for the per-engine default
Speakers
a tab per engine
Player showing a waveform that grows as each chunk is generated
Player
waveform as it reads
Jobs tab with generation history and per-job statistics
Jobs
history and stats
Chats tab showing a conversation timeline with lines you can reorder
Chats
a scene as a timeline
Hosting tab serving an OpenAI-compatible speech API on the local network
Hosting
local speech API
Settings tab with model downloads and backend selection
Settings
models and backends

Taken on a Galaxy S24 FE running Android 16. These are the real app, not mock-ups — and they are served from this domain, like everything else on this site.

What it does
  • Read anything you share. Send it text or an article URL from any app. Links are run through Readability — the Firefox Reader View algorithm — so nav bars, cookie banners and related-article rails are dropped and only the article is spoken. You see the extracted text in an editor before a word is read.
  • Clone a voice. Record one on the phone, trim it on a waveform, or design one from a written description. A cloned voice can then be refined on the phone to sound closer — a gradient-free search that takes a few minutes.
  • Chats. Conversations you keep: type a line, hear it immediately, switch speaker mid-scene, drag lines into a different order, export the whole thing as one track.
  • Jobs. Compose and render to Music/TTS Runner/*.m4a with the screen off, with per-job stats and re-runs in a different voice.
  • Local hosting. Optionally serve your phone's voices as an OpenAI-compatible POST /v1/audio/speech endpoint, with a browser client on the same port. This is off until you turn it on, and it serves your network, not ours.
  • Survives being killed. Every generated chunk is cached, so a job the OS kills mid-run continues from where it stopped rather than starting over.
Privacy, specifically

This is the part most text-to-speech apps get wrong, because the easy way to build one is to send your text to somebody's API. We didn't.

  • Your text is processed on the phone. Generation runs locally in a native engine. Nothing is sent anywhere for synthesis.
  • Your voice recordings stay on the phone. Cloning and refinement run on-device. No reference audio is uploaded.
  • ×No analytics SDK, no crash reporter, no ad ID. There is no account and no device identifier, so there is no profile of you anywhere.
  • ×No background connections. The app touches the network in exactly three situations, all of them started by you: downloading a model you chose, fetching an article link you shared, and serving the local API if you switched it on.
Permissions, and why

Every permission is listed here with the feature that needs it. If a reason ever looks thin to you, deny it — the feature stops and the rest of the app keeps working.

Microphone Only to record a reference clip when you tap record for voice cloning. Not used at any other time, and never in the background.
Internet Downloading the model you picked, fetching an article URL you shared, and the local speech API if you enable it. Nothing else.
Notifications The progress notification for a running generation job, which Android requires for a foreground service.
Storage / folder access Saving rendered audio where you asked for it, and the optional backup folder that mirrors your speakers so a reinstall becomes a restore. Scoped to the folder you choose.
Not requested Contacts. Location. Call log. SMS. Camera. Calendar. Nearby devices. Anything with “precise” in the name.
Measured speed
Device / engineResult
Galaxy S24 FE — Supertonic 3, CPU5.7 s of audio in 2.7 s (RTF 0.47)
Galaxy Z Fold5 — Supertonic 3, CPU33 s of audio in 16 s (RTF 0.48)
Galaxy S24 FE — Qwen3-TTS 1.7B, Vulkan3.4 s of audio in ~21 s
Galaxy Z Fold5 — Qwen3-TTS 1.7B, CPU3.4 s of audio in ~23 s

Backends are chosen per engine and per phone — CPU, OpenCL or Vulkan for Qwen; CPU, NNAPI or XNNPACK for Supertonic. The app stars whichever it measured fastest on your hardware and tells you why it picked it.

Getting it
InstallDownload the APK from the releases page and install it. There is no store listing, no sign-in and no licence key.
First runSettings → download a model. Supertonic 3 is about 400 MB and is the fast one. Then Speakers → Clone, Design, or restore from a backup folder.
UseFrom any app: share text or a link → Read aloud (TTS Runner). Or paste into the Jobs tab and press Listen.
Build it yourselfThe build is fully containerised — the host needs only podman or docker, no Android SDK, NDK, JDK or Gradle.
☞ Note on the model licences. The app is Apache-2.0. The model weights are downloaded at runtime from their own publishers and carry their own licences — we do not redistribute them and we cannot relicense them for you.

Download the APK »   ☕ Buy Me A Cup Of Tokens