Local-first TTS workstation · v0.1.1

Text in. Voice out.
Nothing leaves the studio.

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.

  • 3 model backends
  • 9 registered targets
  • 0 telemetry endpoints
voicesynth / session
$ python main.py --cli \
--text "The tape is rolling." \
--backend f5-tts \
--output session.wav
INFO | Backend: f5-tts
INFO | Loading F5-TTS components...
INFO | Audio saved to: session.wav (24000 Hz)
24 kHzWAV / PCMLOCAL

Signal chain

One interface, several model families.

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.

01

Text

CLI text or file, or the studio editor. Language can be set or heuristically detected.

02

Manager

InferenceManager resolves device, precision and the selected backend.

03

Backend

F5-TTS, GPT-SoVITS or Fish Speech behind a common TTSBackend API.

04

WAV

Audio is written with soundfile at the backend's native sample rate.

Reality check

What the code actually ships.

Status is derived from the source, not the roadmap. Interfaces without synthesis are labelled as such.

Full backend matrix →
pytorch implemented

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
fish-speech scaffold

Fish Speech

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.

  • VRAM floor2 GB min
  • Sample rate44100 Hz
  • Precisionfp32 · fp16 · int8 · int4
gpt-sovits implemented

GPT-SoVITS

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.

  • VRAM floor2 GB min
  • Sample rate32000 Hz
  • Precisionfp32 · fp16 · int8
Registered runtime targets and implementation status
Runtime targetStatusVRAM floorPlatformsSynthesis
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

Your microphone room, not someone's server room.

Private by construction

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.

A studio, not a demo

Waveform review, playback, voice-profile management, GPU monitoring, presets and a priority batch queue are part of the PyQt6 application.

Honest interfaces

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

Built around the loop: write, listen, revise.

The GUI exposes the same inference manager as the CLI, plus the supporting workflow.

Studio guide →
A

Text-to-speech panel

Editor with live character/word counts, language selection, backend switch, NFE steps, sampler, speed, seed and chunking controls.

B

Voice cloning

Drag in a reference clip, auto-transcribe it with faster-whisper when installed, score the sample and save a reusable speaker profile.

C

Profiles & adapters

SQLite-backed profiles with reference samples, quality scores and .vsp import/export. Adapter checkpoints are discovered from adapters/.

D

Batch queue

Priority queue with pause/resume/cancel, progress callbacks and optional per-job WAV output.

E

GPU monitor

NVML-based VRAM, utilization and temperature polling with a memory-manager view when CUDA is present.

F

Presets & precision

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

Run it on your own machine.

Start with the CLI, then open the studio. The first F5-TTS run downloads weights; after that inference is local.