* Fix voice cache crash when server runs with custom --model-path (#13)
When started with --model-path "<full file path>", the file path was used
verbatim as a filename tag, producing targets like
voice_cache/Aadi.C:\...\english.yaml.safetensors — invalid on Windows.
safetensors raises SafetensorError (not OSError) on the resulting I/O
failure, so the existing handler let it propagate and broke voice loading.
Reduce path-like model identifiers to their filesystem-safe stem in
active_model_tag, and broaden the cache-write handler so any future
serialization failure stays best-effort.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Bump version to 2.5.4
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Apply ruff format
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Address Copilot review on PR #14
- Strip dots from path-derived model tags. Otherwise a config like
english.v2.yaml would yield tag "english.v2", …
Runtime model switching, per-model voice caching, thread-safety fix (#12)
* test: add pytest harness for TTS server tests
* feat(config): add supported languages, aliases, cache dir
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(voice-cache): add per-model voice path resolution
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(voice-cache): add stem listing and mtime staleness
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(tts): track active model state with boot snapshot
Add _lock, _loading, _active, _boot_active to TTSService.__init__,
rewrite load_model to record active model state and snapshot boot config.
Change voice_cache type from dict to OrderedDict.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(tts): wire per-model cache dir and voice resolution
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(tts): add reload_model with rollback-on-failure
Add TTSService.reload_model(language, quantize) with mutual-exclusion
guard (_loading flag), boot-source check, …
Merge pull request #11 from teddybear082/fix_opus_output_support
teddybear082
5aa947f
add proper opus support
bump version
teddybear082
147e805
linting
teddybear082
6b0bf34
add proper opus support
teddybear082
3ab3c26
Openai compatible requires opus output as one of the formats which was not working before, create fixes through server and webui to support opus output
Merge pull request #10 from teddybear082/upgrade_to_pocket_2_0_0
teddybear082
f459c16
upgrade pocket-tts to 2.0.0
bump version
teddybear082
67dd04d
ruff format
teddybear082
d027f1f
upgrade pocket-tts to 2.0.0
teddybear082
37f4354
-update to pocket-tts multilingual
-add parameters for server for language and quantize
-add .sh file for linux users
Enhance README with text preprocessing and duration update
teddybear082
effa59f
Added text preprocessing option and updated voice duration guidelines.
Merge pull request #8 from teddybear082/feature_text_preprocessing
teddybear082
6d8882c
Add text preprocessing
more linting
teddybear082
ec11370
linting fixes
teddybear082
d00ff23
Add text preprocessing
teddybear082
a05aaa6
-Add English text preprocessing to make audio more likely to be read correctly as TTS by model
-Enable command line and environment variables for text preprocessing
-Fix streaming and text preprocessing not disabling correctly via bat file options
bump version
teddybear082
871e190
Merge pull request #7 from teddybear082/update_pocket_tts_upstream
teddybear082
6167b9d
Minor changes for pocket-tts==1.1.0 release
Minor changes for pocket-tts==1.1.0 release
teddybear082
ac065ea
-switch from variant argument to config
-update requirements.txt
-update language in server and .exe bat files
-update help on server.py
Update README with WingmanAI compatibility details
teddybear082
8669f5d
Added information about compatibility with WingmanAI and real-time usage.
rename voices, implement better UI to search voices (#4)
* rename voices, implement better UI to search voices
* add output format param to UI, clarify when streaming is (not) available
* fixes #2 docker: ensure non-root user owns /app dir to preventing permission errors
Fix response_format by disabling streaming for non-PCM/WAV (#3)
* Fix response_format by disabling streaming for non-PCM/WAV
Ensures response_format is honored by disabling streaming when a non-PCM/WAV format (e.g., MP3) is requested. Prevents STREAM_DEFAULT or stream: true from returning raw PCM with an MP3 Content-Type. Adds a warning log when streaming is requested for unsupported formats and falls back to a full file response.
* bump version
* remove duplicate line
fix bat file for running python server
teddybear082
42be64f
Revert "initial attempt at supporting speed parameter"
teddybear082
d53a922
This reverts commit b76e9c89ada70a4c1233039dbc75286e992ef50a.
Revert "fix ruff linting stuff"
teddybear082
f7b1404
This reverts commit 3aba5784c9d768b1ae84f5fa133b93ed020b3835.
This pull request represents a major version 2.0 refactoring of the Pocket-TTS OpenAI-compatible server. The PR restructures the monolithic codebase into a modular application architecture, adds comprehensive Docker support, improves logging and configuration management, and updates the port from 5002 to 49112.
Changes:
Complete architectural refactor from single-file (pocket_tts_openai_server.py, utils.py) to modular app/ package structure with separate services, routes, and configuration modules
Added Docker deployment with multi-stage builds, health checks, and docker-compose orchestration
Implemented comprehensive logging with rotation support
Added CI/CD workflows for linting, Docker builds, and Windows executable generation
Enhanced documentation with updated README, new AGENTS.md for developers, and inline API documentation in the web UI
Changed default port from 5002 to 49112