fix: reduce awkward fillers and handle call endings

This commit is contained in:
Konturai DevOps
2026-04-30 18:00:25 +05:00
parent 18696d5f22
commit b7e40de7a1
3 changed files with 61 additions and 9 deletions
+4 -2
View File
@@ -14,18 +14,20 @@ from realtime_voice_service.providers.base import BaseTTS
LOGGER = logging.getLogger("uvicorn.error")
DEFAULT_FILLER_TEXTS: dict[str, tuple[str, ...]] = {
"serper": (
"Сейчас уточню.",
"Проверяю информацию.",
"Сейчас подскажу.",
),
"generic": (
"Сейчас отвечу.",
"Уточняю.",
"Уже отвечаю.",
),
}
class FillerAudioLibrary:
def __init__(
self,
+53 -3
View File
@@ -52,6 +52,7 @@ SEMANTIC_ENDPOINTING_HOLD_MS = _semantic_hold_ms()
FILLER_AUDIO_DELAY_MS = _filler_delay_ms()
TTS_CHUNK_SOFT_MIN_CHARS = _tts_chunk_soft_min_chars()
TTS_CHUNK_SOFT_MIN_WORDS = _tts_chunk_soft_min_words()
_FAREWELL_MARKERS: frozenset[str] = frozenset({
"спасибо",
"благодарю",
@@ -60,9 +61,22 @@ _FAREWELL_MARKERS: frozenset[str] = frozenset({
"пока",
"до встречи",
"хорошего дня",
"ничего не нужно",
"ничего не надо",
"мне ничего не нужно",
"мне ничего не надо",
"больше ничего",
"это все",
"это всё",
"все понятно",
"всё понятно",
"вопросов нет",
"не надо",
"не нужно",
"goodbye",
"bye",
})
_FAREWELL_QUERY_MARKERS: frozenset[str] = frozenset({
"вопрос",
"подскаж",
@@ -73,9 +87,25 @@ _FAREWELL_QUERY_MARKERS: frozenset[str] = frozenset({
"где",
"когда",
"можно",
"нужно",
"нужно ли",
"нужно еще",
"нужно ещё",
"хочу",
"мне",
"еще",
"ещё",
"теперь",
"тогда",
"адрес",
"тариф",
"оператор",
"статус",
"проблем",
"помощ",
"помочь",
"узнать",
"нужен",
"нужна",
"нужны",
})
FAREWELL_RESPONSE_TEXT = "Спасибо за обращение в DigiOps. Всего доброго, до свидания!"
@@ -1082,6 +1112,26 @@ class CallSession:
self.session_id,
len(self._conversation),
)
if _is_terminal_farewell(transcript):
LOGGER.info(
"realtime session %s farewell detected before assistant response: epoch=%s transcript=%r",
self.session_id,
epoch,
_preview_text(transcript),
)
await self._play_prepared_response(
epoch=epoch,
response_text=FAREWELL_RESPONSE_TEXT,
actually_spoken_chunks=actually_spoken_chunks,
)
self._ensure_generation(epoch)
self._commit_assistant_context(
llm_generated_text=FAREWELL_RESPONSE_TEXT,
actually_spoken_chunks=actually_spoken_chunks,
interrupted=False,
)
await self._close_after_farewell()
return
name_collection_response = self._build_name_collection_response(transcript)
if name_collection_response is not None:
LOGGER.info(
@@ -1143,7 +1193,7 @@ class CallSession:
epoch=epoch,
tool_name=None,
started_monotonic=llm_started_monotonic,
suppress=_is_farewell_transcript(transcript),
suppress=_is_terminal_farewell(transcript) or _is_farewell_transcript(transcript),
),
name=f"{self.session_id}-filler-delay-{epoch}",
)