F5-TTS (PyTorch)
Zero-shot cloning with reference audio, configurable NFE steps and adapter checkpoints. This is the default and the most complete synthesis path.
- VRAM floor1.5 GB min
- Sample rate24000 Hz
- Precisionfp32 · fp16 · int8
Local-first TTS workstation · v0.1.1
VoiceSynth Studio unifies open TTS models behind one local workflow: a command-line synthesizer, a PyQt6 studio, voice references, profiles and batch queues. No accounts. No API keys. No audio uploads.
Signal chain
The repository ships a shared backend contract, an inference manager, a PyQt6 studio and a CLI. Model code and weights stay external, so you can choose what to install.
CLI text or file, or the studio editor. Language can be set or heuristically detected.
InferenceManager resolves device, precision and the selected backend.
F5-TTS, GPT-SoVITS or Fish Speech behind a common TTSBackend API.
Audio is written with soundfile at the backend's native sample rate.
Reality check
Status is derived from the source, not the roadmap. Interfaces without synthesis are labelled as such.
Zero-shot cloning with reference audio, configurable NFE steps and adapter checkpoints. This is the default and the most complete synthesis path.
Integration scaffold: the loading path is present, but the inference engine is not wired, so synthesis falls back to a placeholder tone. Treat it as unfinished.
Drives the external GPT-SoVITS package when installed. Without the package the backend logs a warning and returns a placeholder tone instead of failing loudly.
| Runtime target | Status | VRAM floor | Platforms | Synthesis |
|---|---|---|---|---|
| DirectML | interface | 2 GB min | WIN | no — NotImplementedError |
| llama.cpp (GGUF) | interface | 0.5 GB min | WIN · LINUX | no — NotImplementedError |
| ONNX Runtime | interface | CPU capable | WIN · LINUX | no — NotImplementedError |
| OpenVINO | interface | CPU capable | WIN · LINUX | no — NotImplementedError |
| TensorRT-LLM | interface | 2 GB min | WIN · LINUX | no — NotImplementedError |
| vLLM | interface | 3 GB min | LINUX | no — NotImplementedError |
Runtime targets are registered in core/backend_registry.py. Several can load a model
or session but have no TTS synthesis implementation yet. They are not advertised as acceleration.
Why local
Text and reference audio are processed by local Python code. The application has no telemetry, analytics or cloud API client. Model weights are downloaded from Hugging Face only when needed.
Waveform review, playback, voice-profile management, GPU monitoring, presets and a priority batch queue are part of the PyQt6 application.
The runtime layer is a real abstraction with capability metadata. Not every registered target synthesizes audio yet — this site says which ones do instead of promising a speedup.
The studio
The GUI exposes the same inference manager as the CLI, plus the supporting workflow.
Editor with live character/word counts, language selection, backend switch, NFE steps, sampler, speed, seed and chunking controls.
Drag in a reference clip, auto-transcribe it with faster-whisper when installed, score the sample and save a reusable speaker profile.
SQLite-backed profiles with reference samples, quality scores and .vsp import/export. Adapter checkpoints are discovered from adapters/.
Priority queue with pause/resume/cancel, progress callbacks and optional per-job WAV output.
NVML-based VRAM, utilization and temperature polling with a memory-manager view when CUDA is present.
Four VRAM-oriented presets and a quantization catalogue. Conversion actions that are not implemented are marked as such in the UI.
Ready when your GPU is
Start with the CLI, then open the studio. The first F5-TTS run downloads weights; after that inference is local.