Fritter-TTS reads technical and general English (model names, Linux commands, acronyms, version numbers) in Daniel Rosehill's voice. A fine-tune of Qwen3-TTS-12Hz-1.7B-Base. Model: Fritter-ASR/Fritter-TTS (access by request).
No sample here was picked by ear: these are every line the release run generated, unedited. Real takes are Daniel's own recordings after the same cleaning chain as the training data. "Zero-shot" is the untuned base model cloning the voice from one reference take.
Before: the untuned base model, Qwen3-TTS-12Hz-1.7B-Base, cloning Daniel's voice from one reference recording. After: Fritter-TTS v1. Same text, nothing picked by ear. Passages of more than three sentences are generated sentence by sentence and joined.
| Text | Before | After |
|---|---|---|
| Restart the Docker container and check the logs again. one pass | 3.1 s | 3.3 s |
| I'll SSH into the NAS and see why the backup job failed overnight. one pass | 3.2 s | 4.3 s |
| The new release needs Python 3.12 and at least 16 GB of RAM. one pass | 4.5 s | 5.1 s |
| The VPN drops whenever the router renews its DHCP lease. I've pinned a static IP for now and opened an issue on GitHub. one pass | 7.1 s | 7.4 s |
| The fine-tune ran on an L40S for about an hour. After that I quantized it to Q4_K_M with llama.cpp and pushed the GGUF to Hugging Face. one pass | 9.0 s | 9.1 s |
| I tried Claude Sonnet 4.5, GPT-5 and Gemini 2.5 Pro on the same prompt. Sonnet gave the cleanest JSON, so that's the one going into the pipeline. one pass | 9.6 s | 9.4 s |
| The home server runs Ubuntu 24.04 with everything in Docker Compose. Home Assistant, Jellyfin and a small Postgres database each get their own container. Backups go to a Synology NAS every night, and a copy is synced to object storage once a week. It's not glamorous, but it has run for two years with almost no attention. sentence by sentence | 19.7 s | 19.6 s |
| The build failed on CI but worked on my laptop, which is always a bad sign. It turned out the runner was on Node 18 while I was on Node 22. I pinned the version in the workflow file, cleared the npm cache and reran the job. Twenty minutes of debugging for a one-line fix, which is about the usual ratio. sentence by sentence | 18.6 s | 20.1 s |
| My dictation setup uses a fine-tuned Parakeet model running locally on the GPU. I press a key on the macro pad, speak, and the text lands wherever the cursor is. The fine-tune fixed most of the technical vocabulary, things like Kubernetes, PyTorch and OpenRouter. Numbers were the last thing to sort out, so now I record version numbers the way I actually say them. sentence by sentence | 22.5 s | 23.3 s |
| Most of my day now involves working alongside AI agents in the terminal. I describe what I want, the agent reads the repository, proposes a change and runs the tests. The trick is giving it enough context without burying it in detail. A short CLAUDE.md file with the project's rules does more than a long prompt ever did. When something goes wrong, I ask it to write down what it learned, so the next session starts smarter. It's not perfect, but it has changed how much I can get done in an afternoon. And I dictate almost all of it, which is why the speech models matter so much to me. sentence by sentence | 33.7 s | 36.3 s |
The model was trained on takes of at most 15 s. One pass generates the whole passage in one go; sentence by sentence generates each sentence separately and joins them with a short pause.
| Text | One pass | Sentence by sentence |
|---|---|---|
| I upgraded the home server to Ubuntu 24.04 last night and the Docker containers came back up on their own. The only thing that broke was the Nginx reverse proxy, which took about ten minutes to sort out. | 10.8 s | 13.6 s |
| Today I'm testing a few speech models on the GPU box, starting with Parakeet and then Whisper Large v3 Turbo. The plan is to run each one through the same test set, write the results to a JSON file, and compare the word error rates. If the fine-tuned model wins on the technical sentences, I'll quantize it to Q4_K_M and push it to Hugging Face. After that, it's a matter of wiring it into the dictation app with a keyboard shortcut and seeing how it does in real use. | 26.3 s | 27.2 s |
Sentences the model never trained on, with Daniel's real recording.
| Text | Fritter-TTS v1 | Real recording | Zero-shot base |
|---|---|---|---|
| Can you send me the link to the LangSmith project? I want to compare the evaluation runs from before and after the prompt change. | |||
| Jupyter keeps crashing whenever I load that large dataset into memory. | |||
| Yesterday I compared eSpeak against a few other engines for latency and clarity. | |||
| With extended thinking it was slower, but the plan is much better. | |||
| The nightly job exports all customer records to a backup drive. | |||
| I'm not much of a runner, but KRunner is how I launch literally every app on my desktop. | |||
| The call quality was bad because the phone fell back from wideband to narrow audio. | |||
| Which lav mic would you pick for dictating on the go? | |||
| Most of my old recordings are MKV, so keep that container for the archive. | |||
| Could you help me set up the SpeechT5 pipeline for our internal project? | |||
| PII redaction must happen before any log leaves the server. | |||
| I added a new rule in SailPoint to catch orphaned accounts. | |||
| The team spent the morning benchmarking anti-spoofing against a replay attack. | |||
| RetinaNet gives us decent accuracy without the extra region proposal step. | |||
| The on call engineer checked Future AGI first when latency spiked last night. | |||
| We should align the detection rules with the NIST Cybersecurity Framework before the next sprint. | |||
| Our team is still debating whether Instant Checkout belongs in the main chat flow. | |||
| I used Dia to generate a short podcast style exchange. | |||
| Higgs Audio can speak in a chosen style and carry emotion across a sentence. | |||
| Hi Avi, I'm rebuilding my home server on NixOS so the whole setup lives in one config file and I can roll back whenever something breaks. |
Lines written for testing, with no recording to compare.
| Text | Fritter-TTS v1 | Zero-shot base |
|---|---|---|
| I left the laptop updating overnight, and by the morning it had decided to forget every password I own. | ||
| Ah, sure look, it'll be grand. I'll ring you back after the match, around half seven or so. | ||
| Run sudo systemctl restart nginx, then tail the journal with journalctl -u nginx -f until the errors stop. | ||
| I switched the pipeline from GPT-4o to Claude Sonnet 4.5 and the latency dropped by about 300 milliseconds. | ||
| The NAS exposes an SMB share over the VPN, and the API behind it returns JSON over HTTPS. | ||
| Ubuntu 24.04 ships Python 3.12, so the CUDA 12.8 wheels for PyTorch 2.8 install cleanly. | ||
| When I first set up the home server I thought Docker would make everything simple, but by the third broken volume mount I was reading the Compose docs line by line. |