From 287ac9871576cfbdee6997d89ce1f9df555e640e Mon Sep 17 00:00:00 2001 From: Grail Finder Date: Sun, 11 Jan 2026 11:51:46 +0300 Subject: Enha(tts): split remaining text on sentences; update build tags --- extra.go | 1 - extra/tts.go | 29 +++++++++++++++++------------ noextra.go | 1 - 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/extra.go b/extra.go index 3ea63e2..66f9fa2 100644 --- a/extra.go +++ b/extra.go @@ -1,5 +1,4 @@ //go:build extra -// +build extra package main diff --git a/extra/tts.go b/extra/tts.go index e5bbec5..96c8859 100644 --- a/extra/tts.go +++ b/extra/tts.go @@ -165,17 +165,18 @@ func (o *KokoroOrator) readroutine() { } } } - // INFO: if there is a lot of text it will take some time to make with tts at once - // to avoid this pause, it might be better to keep splitting on sentences - // but keepinig in mind that remainder could be ommited by tokenizer - // Flush remaining text + // flush remaining text remaining := o.textBuffer.String() remaining = cleanText(remaining) o.textBuffer.Reset() - if remaining != "" { - o.logger.Debug("calling Speak with remainder", "rem", remaining) - if err := o.Speak(remaining); err != nil { - o.logger.Error("tts failed", "sentence", remaining, "error", err) + if remaining == "" { + continue + } + o.logger.Debug("calling Speak with remainder", "rem", remaining) + sentencesRem := tokenizer.Tokenize(remaining) + for _, rs := range sentencesRem { // to avoid dumping large volume of text + if err := o.Speak(rs.Text); err != nil { + o.logger.Error("tts failed", "sentence", rs, "error", err) } } } @@ -364,10 +365,14 @@ func (o *GoogleTranslateOrator) readroutine() { remaining := o.textBuffer.String() remaining = cleanText(remaining) o.textBuffer.Reset() - if remaining != "" { - o.logger.Debug("calling Speak with remainder", "rem", remaining) - if err := o.Speak(remaining); err != nil { - o.logger.Error("tts failed", "sentence", remaining, "error", err) + if remaining == "" { + continue + } + o.logger.Debug("calling Speak with remainder", "rem", remaining) + sentencesRem := tokenizer.Tokenize(remaining) + for _, rs := range sentencesRem { // to avoid dumping large volume of text + if err := o.Speak(rs.Text); err != nil { + o.logger.Error("tts failed", "sentence", rs.Text, "error", err) } } } diff --git a/noextra.go b/noextra.go index 2ad138c..91c2b45 100644 --- a/noextra.go +++ b/noextra.go @@ -1,5 +1,4 @@ //go:build !extra -// +build !extra package main -- cgit v1.2.3