franken_tts
Pure-Rust, CPU-hyper-optimized runtime for Qwen3-TTS zero-shot voice cloning — turns the model's hidden 15-step residual-code microdecoder from its largest CPU liability into its largest optimization advantage
Franken_tts runs Qwen3 TTS without a GPU
A pure Rust runtime for one voice cloning model that performs inference on the CPU with no Python or ML framework.
What franken_tts runs
Franken_tts is a pure Rust, memory safe, CPU only runtime for a single text to speech model, Qwen3-TTS-12Hz-0.6B-Base. The README states it does zero shot voice cloning with no Python, no ML framework, and no GPU at inference time. That scope is deliberate: the project supports one fixed model rather than being a general speech framework, and the README compares it to sibling projects franken_ocr and franken_whisper, which share the same one model, model specific kernels philosophy.
The license badge reads MIT plus rider, and the version badge reads 0.1.4, so the project is early but already packaged. The Rust badge points to a nightly toolchain. Because the runtime is CPU only, a user can run voice cloning on a machine without a graphics card, which is the main practical difference from the usual Python and PyTorch setup. The README frames the tool as verified seam by seam against the upstream PyTorch model, meaning the Rust implementation was checked against the original to match its behavior. For a reader, franken_tts is a way to deploy one specific TTS model in a small, dependency light binary, at the cost of being tied to that model revision. The fixed model and specific kernels are presented as a feature, not a limitation, because they let the author optimize hard for one case.
The CPU cost it addresses
The README's TL;DR explains the problem franken_tts solves. Running a modern voice cloning model normally means pulling in Python, PyTorch, and a GPU for a 0.6B parameter model. The README says Qwen3-TTS's public description as a 12.5 Hz model hides its real CPU cost, which is a 15 step autoregressive residual code microdecoder inside every 80 millisecond frame. The 28 layer talker runs once, then a 5 layer code predictor runs fifteen sequential times using per depth embeddings and per depth 2048 way heads, and then a causal codec decodes.
The README gives concrete traffic numbers. First order Q8 weight traffic is about 1.65 GB per frame, and the microdecoder body accounts for roughly 1.18 GB of that, reread fifteen times. These figures are the reason a naive CPU port would be slow, and they are the target franken_tts attacks by reimplementing the pipeline in safe Rust. The project treats the hidden microdecoder, normally the largest CPU liability, as the largest optimization opportunity. The README excerpt cuts off before detailing the solution mechanics, but the framing is clear: the cost is concentrated in the repeated microdecoder passes, and a careful Rust implementation can recover speed without a GPU. A reader should take the 1.65 GB and 15x figures as the author's own measurements of where the time goes.
Installation and siblings
The README provides install commands for the main platforms. On macOS and Linux the user can run a curl script, curl -fsSL the install.sh and pipe it to bash, or install through Homebrew with brew install dicklesworthstone/tap/franken-tts. On Windows the README gives a PowerShell one liner that creates a script block from install.ps1 and runs it in EasyMode. These options mean a user can get a binary without building from source, though the project is Rust and could also be compiled.
The README places franken_tts alongside franken_ocr and franken_whisper as siblings built on the same idea: one fixed model revision, model specific kernels, and no claim of being a general framework. That family identity tells a reader what to expect: deep optimization for a single model instead of broad compatibility. The version 0.1.4 badge suggests the tool is young, so APIs and behavior may still shift. Because the runtime is CPU only and dependency light, it fits into environments where a full Python and PyTorch stack would be unwanted, such as a small server or an edge machine. A user who wants voice cloning from the specific Qwen3 TTS base model can install via the provided scripts and avoid the heavier conventional toolchain entirely.
Editorial conclusion
Franken_tts is written in Rust, carries an MIT plus rider license, and is at version 0.1.4. It installs on macOS and Linux with a curl script or Homebrew, and on Windows with an install.ps1 script, and it targets the Qwen3-TTS-12Hz-0.6B-Base model for zero shot voice cloning.
Community notes