* feat(skills): add bundled neutts optional skill Add NeuTTS optional skill with CLI scaffold, bootstrap helper, and sample voice profile. Also fixes skills_hub.py to handle binary assets (WAV files) during skill installation. Changes: - optional-skills/mlops/models/neutts/ — skill + CLI scaffold - tools/skills_hub.py — binary asset support (read_bytes, write_bytes) - tests/tools/test_skills_hub.py — regression tests for binary assets * feat(tts): add NeuTTS as local TTS provider backend Add NeuTTS as a fourth TTS provider option alongside Edge, ElevenLabs, and OpenAI. NeuTTS runs fully on-device via neutts_cli — no API key needed. Provider behavior: - Explicit: set tts.provider to 'neutts' in config.yaml - Fallback: when Edge TTS is unavailable and neutts_cli is installed, automatically falls back to NeuTTS instead of failing - check_tts_requirements() now includes NeuTTS in availability checks NeuTTS outputs WAV natively. For Telegram voice bubbles, ffmpeg converts to Opus (same pattern as Edge TTS). Changes: - tools/tts_tool.py — _generate_neutts(), _check_neutts_available(), provider dispatch, fallback logic, Opus conversion - hermes_cli/config.py — tts.neutts config defaults --------- Co-authored-by: unmodeled-tyler <unmodeled.tyler@proton.me>
1.6 KiB
1.6 KiB
NeuTTS CLI
Small standalone CLI for installing, checking, and running NeuTTS locally.
This scaffold is designed to be a good fit for a future Hermes optional skill:
- predictable commands
- machine-friendly output for inspection
- local voice profile management
- direct local synthesis
Commands
neutts install --all
neutts doctor
neutts list-models
neutts add-voice demo --ref-audio ./samples/jo.wav --ref-text-file ./samples/jo.txt
neutts list-voices
neutts synth --voice demo --text Hello from NeuTTS --out ./out.wav
neutts synth --voice demo --text Quick smoke test
Install the bundled scaffold
cd optional-skills/mlops/models/neutts/assets/neutts-cli
python -m pip install -e .
Add the bundled sample profile
This skill bundles an upstream NeuTTS sample reference in samples/.
cd optional-skills/mlops/models/neutts/assets/neutts-cli
PYTHONPATH=src python -m neutts_cli.cli add-voice jo-demo \
--ref-audio ./samples/jo.wav \
--ref-text-file ./samples/jo.txt \
--language en
Then inspect it with:
PYTHONPATH=src python -m neutts_cli.cli list-voices
Notes
installinstalls the upstreamneuttspackage into the current Python environment.list-voicesshows local voice profiles created withadd-voice.synthuses NeuTTS reference cloning. A voice profile is just a saved reference audio/text pair.synthaccepts quoted or unquoted text and defaults to./out.wavwhen--outis omitted.- GGUF /
llama-cpp-pythonacceleration can vary by platform, so the CLI prints follow-up guidance instead of forcing one build recipe.