Commit Graph

16 Commits

Author SHA1 Message Date
6198f15f64 v6.8: Untrack generated VoiceDesign registry, add presets seed
config/voicedesign_voices.json is generated on every container start from the
voice library's designed voices, so it carries the user's own character design
prompts and made the working tree permanently dirty. It is now gitignored.

The 8 bundled vd_* presets were only ever stored in that file, so untracking it
alone would leave a fresh clone with no built-in voices at all. They now live in
config/voicedesign_voices.presets.json, which is tracked:

- generate_voices.py seeds the registry from the presets file when no vd_*
  entries survive in the generated one (i.e. on a fresh checkout).
- run_voicedesign_server.py starts from the presets file when the registry does
  not exist yet, instead of crashing on the missing path. Hot-reload picks up
  the real registry as soon as the voice-clone container writes it.

Also documents the v6.8 engine fixes from 9836261 in the README changelog, which
that commit did not touch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 16:06:05 +02:00
3c389b0292 v6.7: Native speed control and zip word-level timestamps 2026-06-26 11:11:13 +02:00
e58a6843b8 feat: eager background precomputation of speaker embeddings (v6.6) 2026-06-21 09:35:42 +02:00
15f7fd63aa docs: clarify deterministic pt generation (v6.5.1) 2026-06-21 00:53:05 +02:00
7a8d8d17ad feat: true zero-downtime voice hot-reloading (v6.5) 2026-06-20 21:19:19 +02:00
4d7b2c5e0c feat: fully automate speaker embedding generation (v6.4) 2026-06-20 20:52:53 +02:00
8f09b7e797 feat: precompute and load speaker embeddings (.pt) from voices.json 2026-06-20 13:04:55 +02:00
789398c5df feat: introduce -streaming tag convention for Docker Hub
Add :latest-streaming and :v6-streaming as explicit tags for the streaming
service — same image as :latest/:v6 but semantically distinct so compose
files and version pins are unambiguous. Suggested by forum user.

Update docker/docker-compose.yml streaming service to :latest-streaming.
Update README image table and tag summary.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 12:58:12 +02:00
4a199a883a docs: add v6.2 changelog entries for streaming fix and voice field persistence
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 21:05:43 +02:00
8cdd81c5e5 docs: restore --max-seq-len in voiceclone compose, update v6 changelog
Re-add --max-seq-len 2048 to voiceclone command now that v6 image supports it.
Update README changelog to accurately describe all v6 changes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 15:06:30 +02:00
9708eede71 refactor: consolidate Docker files into docker/ and merge streaming repo
- Move full 4-service compose config/docker-compose.yml → docker/docker-compose.yml
- Move single-service quickstart docker-compose.yml → docker/docker-compose.simple.yml
- Replace private /home/sparky paths with /path/to/ placeholders in docker/docker-compose.yml
- Merge martinb78/qwen3-tts-streaming-dgx-spark into martinb78/faster-qwen3-tts-dgx-spark:streaming tag
- Update all image references: v4 → latest, streaming image → :streaming tag
- Update README and DOCKERHUB_STREAMING.md to reflect new structure

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 14:31:25 +02:00
98405f681d fix: prevent voice drift and gender changes on long paragraphs (VoiceClone)
The VoiceClone server was using non_streaming_mode=False, a mode designed
for streaming LLM->TTS pipelines. In that mode only one text token enters
the model's KV cache during prefill; the rest feed via trailing_text_hiddens
at one step per codec frame. For a 54-word paragraph this provides only ~4s
of text guidance for ~18s of speech — 77% generated with no text conditioning.
Without text context the model free-runs and drifts, sometimes changing gender.

Fix: switch to non_streaming_mode=True (already the default for VoiceDesign
and CustomVoice) so the full text is in the prefill throughout generation.
Also lower default temperature 0.9->0.8 and add top_p=0.9 to reduce
accumulated sampling noise over long runs. Temperature, top_k, and top_p
are now configurable per voice in voices.json.

- patches/openai_server.patch: updated for new upstream HEAD; both streaming
  (WAV/PCM) and non-streaming (MP3) paths now use non_streaming_mode=True
- config/run_server.py: align warmup call to non_streaming_mode=True
- README.md: bump image tags v4->v5, add changelog section
- Version: v5

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 12:07:43 +02:00
9414d24b25 docs: add nvidia-ctk command per user feedback 2026-05-26 12:25:14 +02:00
41e6e734e1 docs: document streaming TTS backend 2026-05-26 12:19:51 +02:00
mARTin
b7b917db66
Update README.md 2026-05-25 13:21:47 +02:00
60db1b181f Initial release: Faster-Qwen3-TTS for DGX Spark GB10
Run Qwen3-TTS with CUDA graph acceleration on NVIDIA DGX Spark
(ARM64 / SM 121 / CUDA 13) as an OpenAI-compatible TTS API server.

- Dockerfile targeting nvidia/cuda:13.0.2-base-ubuntu24.04 with ARM64 cu130 PyTorch wheels
- Patch for max-seq-len support to handle long reference audio without crashes
- OpenWebUI + SillyTavern compatible API endpoints (/v1/models, /v1/audio/voices, /speakers)
- Voice management: auto-generate voices.json from speaker reference audio files
- Auto-transcription helper script for generating reference text from audio

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 00:06:05 +02:00