diff --git a/ttstoy/webui/app.py b/ttstoy/webui/app.py index 33a2099..f0b4b9b 100644 --- a/ttstoy/webui/app.py +++ b/ttstoy/webui/app.py @@ -952,6 +952,22 @@ def api_chatterbox_upload(): loops = (6000 // len(seg)) + 1 seg = seg * loops log.debug(f"Voice upload: looped clip to {len(seg)}ms") + if len(seg) > 30000: + trimmed = seg[:30000] + try: + from pydub.silence import detect_silence + search_start = max(0, 30000 - 1500) + silences = detect_silence( + seg[search_start:30000], min_silence_len=300, silence_thresh=-40 + ) + if silences: + cutoff_local = silences[0][0] + if cutoff_local > 100: + trimmed = seg[: search_start + cutoff_local] + except Exception: + pass + seg = trimmed + log.debug(f"Voice upload: trimmed clip to {len(seg)}ms") buf = _io.BytesIO() seg.export(buf, format="wav") audio_bytes = buf.getvalue()