feat(tts): bump base speed 1.0→1.15 for slightly faster delivery
User asked for a bit faster speech. Pitch shift is already disabled, so the earlier "monster voice" risk from stacking pitch on a fast base is gone — a modest 1.15x base is natural. Emotion multipliers scale off base, so every emotion gets the bump too. Also adds tests/gen_emotion_samples.py, a dev utility that synthesizes one clip per canonical emotion (announce name at neutral speed, then a sample sentence steered by that emotion's tag) and stitches them into a single wav for auditioning the emotion palette. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -12,7 +12,7 @@ Env:
|
||||
WSAI_MELO_DEVICE cpu | cuda | auto (default auto: GPU if torch sees one,
|
||||
else CPU; the worker falls back to CPU if CUDA fails)
|
||||
WSAI_TTS_OUT_DIR where wavs are written (default ~/.cache/wsai/tts)
|
||||
WSAI_TTS_SPEED synthesis speed multiplier (default 1.0)
|
||||
WSAI_TTS_SPEED synthesis speed multiplier (default 1.15)
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -93,7 +93,7 @@ class MeloTTS:
|
||||
self.out_dir = Path(out_dir or os.environ.get("WSAI_TTS_OUT_DIR")
|
||||
or (Path.home() / ".cache/wsai/tts"))
|
||||
self.speed = float(speed if speed is not None
|
||||
else os.environ.get("WSAI_TTS_SPEED", "1.0"))
|
||||
else os.environ.get("WSAI_TTS_SPEED", "1.15"))
|
||||
self.sink = sink or _log_sink
|
||||
self._proc: asyncio.subprocess.Process | None = None
|
||||
self._lock = asyncio.Lock()
|
||||
|
||||
Reference in New Issue
Block a user