feat(tts): raise default glyph speed 1.35 -> 1.4
Bump the base TTS speed default (WSAI_TTS_SPEED, slider default/label, dashboard fallbacks) so the bot speaks a bit faster by default. 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,
|
WSAI_MELO_DEVICE cpu | cuda | auto (default auto: GPU if torch sees one,
|
||||||
else CPU; the worker falls back to CPU if CUDA fails)
|
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_OUT_DIR where wavs are written (default ~/.cache/wsai/tts)
|
||||||
WSAI_TTS_SPEED glyph speed / length_scale multiplier (0.5..2.0, default 1.35)
|
WSAI_TTS_SPEED glyph speed / length_scale multiplier (0.5..2.0, default 1.4)
|
||||||
WSAI_TTS_WORD_GAP intra-sentence pause delta, sec (-0.2..0.5, default -0.07)
|
WSAI_TTS_WORD_GAP intra-sentence pause delta, sec (-0.2..0.5, default -0.07)
|
||||||
WSAI_TTS_SENTENCE_GAP sentence-boundary silence, sec (-0.5..1.5, default -0.30)
|
WSAI_TTS_SENTENCE_GAP sentence-boundary silence, sec (-0.5..1.5, default -0.30)
|
||||||
WSAI_TTS_PITCH global semitone offset (-12..12, default 0.0)
|
WSAI_TTS_PITCH global semitone offset (-12..12, default 0.0)
|
||||||
@@ -99,7 +99,7 @@ class MeloTTS:
|
|||||||
self.out_dir = Path(out_dir or os.environ.get("WSAI_TTS_OUT_DIR")
|
self.out_dir = Path(out_dir or os.environ.get("WSAI_TTS_OUT_DIR")
|
||||||
or (Path.home() / ".cache/wsai/tts"))
|
or (Path.home() / ".cache/wsai/tts"))
|
||||||
self.speed = float(speed if speed is not None
|
self.speed = float(speed if speed is not None
|
||||||
else os.environ.get("WSAI_TTS_SPEED", "1.35"))
|
else os.environ.get("WSAI_TTS_SPEED", "1.4"))
|
||||||
# Reply-global rhythm/pitch controls (see melo_worker.py / docs manual).
|
# Reply-global rhythm/pitch controls (see melo_worker.py / docs manual).
|
||||||
self.word_gap = float(word_gap if word_gap is not None
|
self.word_gap = float(word_gap if word_gap is not None
|
||||||
else os.environ.get("WSAI_TTS_WORD_GAP", "-0.07"))
|
else os.environ.get("WSAI_TTS_WORD_GAP", "-0.07"))
|
||||||
|
|||||||
@@ -520,7 +520,7 @@ class Dashboard:
|
|||||||
def _tts_base(self) -> dict:
|
def _tts_base(self) -> dict:
|
||||||
t = self.tts
|
t = self.tts
|
||||||
return {
|
return {
|
||||||
"speed": float(getattr(t, "speed", 1.35)),
|
"speed": float(getattr(t, "speed", 1.4)),
|
||||||
"word_gap": float(getattr(t, "word_gap", -0.07)),
|
"word_gap": float(getattr(t, "word_gap", -0.07)),
|
||||||
"sentence_gap": float(getattr(t, "sentence_gap", -0.30)),
|
"sentence_gap": float(getattr(t, "sentence_gap", -0.30)),
|
||||||
"pitch": float(getattr(t, "pitch", 0.0)),
|
"pitch": float(getattr(t, "pitch", 0.0)),
|
||||||
@@ -1038,8 +1038,8 @@ PAGE = r"""<!DOCTYPE html>
|
|||||||
<span id="tEmoNote" class="sttstat">감정을 고르면 그 감정만 따로 조절합니다. 기본(공통)은 태그 없는 말투에 적용됩니다.</span>
|
<span id="tEmoNote" class="sttstat">감정을 고르면 그 감정만 따로 조절합니다. 기본(공통)은 태그 없는 말투에 적용됩니다.</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="ttsgrid">
|
<div class="ttsgrid">
|
||||||
<label>글자 속도 <b id="tvSpeed">1.35x</b>
|
<label>글자 속도 <b id="tvSpeed">1.40x</b>
|
||||||
<input type="range" id="tSpeed" min="0.5" max="2.0" step="0.05" value="1.35"></label>
|
<input type="range" id="tSpeed" min="0.5" max="2.0" step="0.05" value="1.4"></label>
|
||||||
<label>단어 간격 <b id="tvWord">-70 ms</b>
|
<label>단어 간격 <b id="tvWord">-70 ms</b>
|
||||||
<input type="range" id="tWord" min="-0.2" max="0.5" step="0.01" value="-0.07"></label>
|
<input type="range" id="tWord" min="-0.2" max="0.5" step="0.01" value="-0.07"></label>
|
||||||
<label>문장 간격 <b id="tvSent">-0.30 s</b>
|
<label>문장 간격 <b id="tvSent">-0.30 s</b>
|
||||||
@@ -1460,7 +1460,7 @@ async function pollSTTLoad(target){
|
|||||||
// --- 봇 목소리(TTS) 조절: 감정별 슬라이더 → 미리듣기 → 봇 적용 -------------- #
|
// --- 봇 목소리(TTS) 조절: 감정별 슬라이더 → 미리듣기 → 봇 적용 -------------- #
|
||||||
let ttsInited = false;
|
let ttsInited = false;
|
||||||
let ttsState = {base:{}, overrides:{}, emotions:[]}; // last-known server state
|
let ttsState = {base:{}, overrides:{}, emotions:[]}; // last-known server state
|
||||||
const TTS_DEFAULT = {speed:1.35, word_gap:-0.07, sentence_gap:-0.3, pitch:0};
|
const TTS_DEFAULT = {speed:1.4, word_gap:-0.07, sentence_gap:-0.3, pitch:0};
|
||||||
function ttsLabels(){
|
function ttsLabels(){
|
||||||
const sp=parseFloat($('tSpeed').value), wg=parseFloat($('tWord').value),
|
const sp=parseFloat($('tSpeed').value), wg=parseFloat($('tWord').value),
|
||||||
sg=parseFloat($('tSent').value), pt=parseInt($('tPitch').value,10);
|
sg=parseFloat($('tSent').value), pt=parseInt($('tPitch').value,10);
|
||||||
|
|||||||
Reference in New Issue
Block a user