Skip to content

Commit 6e7a0b9

Browse files
Algorithm5838github-actions[bot]
authored andcommitted
perf: skip TTS processing when not active
Only run sentence-boundary detection during streaming when autoPlayback or voice overlay is active.
1 parent 231d35e commit 6e7a0b9

1 file changed

Lines changed: 46 additions & 40 deletions

File tree

src/lib/components/chat/Chat.svelte

Lines changed: 46 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1549,27 +1549,31 @@
15491549
navigator.vibrate(5);
15501550
}
15511551
1552-
// Emit chat event for TTS
1553-
const messageContentParts = getMessageContentParts(
1554-
removeAllDetails(message.content),
1555-
$config?.audio?.tts?.split_on ?? 'punctuation'
1556-
);
1557-
messageContentParts.pop();
1558-
1559-
// dispatch only last sentence and make sure it hasn't been dispatched before
1560-
if (
1561-
messageContentParts.length > 0 &&
1562-
messageContentParts[messageContentParts.length - 1] !== message.lastSentence
1563-
) {
1564-
message.lastSentence = messageContentParts[messageContentParts.length - 1];
1565-
eventTarget.dispatchEvent(
1566-
new CustomEvent('chat', {
1567-
detail: {
1568-
id: message.id,
1569-
content: messageContentParts[messageContentParts.length - 1]
1570-
}
1571-
})
1552+
// Emit chat event for TTS (skip when TTS is not active)
1553+
if ($settings?.responseAutoPlayback || $showCallOverlay) {
1554+
const messageContentParts = getMessageContentParts(
1555+
removeAllDetails(message.content),
1556+
$config?.audio?.tts?.split_on ?? 'punctuation'
15721557
);
1558+
messageContentParts.pop();
1559+
1560+
// dispatch only last sentence and make sure it hasn't been dispatched before
1561+
if (
1562+
messageContentParts.length > 0 &&
1563+
messageContentParts[messageContentParts.length - 1] !==
1564+
message.lastSentence
1565+
) {
1566+
message.lastSentence =
1567+
messageContentParts[messageContentParts.length - 1];
1568+
eventTarget.dispatchEvent(
1569+
new CustomEvent('chat', {
1570+
detail: {
1571+
id: message.id,
1572+
content: messageContentParts[messageContentParts.length - 1]
1573+
}
1574+
})
1575+
);
1576+
}
15731577
}
15741578
}
15751579
}
@@ -1583,27 +1587,29 @@
15831587
navigator.vibrate(5);
15841588
}
15851589
1586-
// Emit chat event for TTS
1587-
const messageContentParts = getMessageContentParts(
1588-
removeAllDetails(message.content),
1589-
$config?.audio?.tts?.split_on ?? 'punctuation'
1590-
);
1591-
messageContentParts.pop();
1592-
1593-
// dispatch only last sentence and make sure it hasn't been dispatched before
1594-
if (
1595-
messageContentParts.length > 0 &&
1596-
messageContentParts[messageContentParts.length - 1] !== message.lastSentence
1597-
) {
1598-
message.lastSentence = messageContentParts[messageContentParts.length - 1];
1599-
eventTarget.dispatchEvent(
1600-
new CustomEvent('chat', {
1601-
detail: {
1602-
id: message.id,
1603-
content: messageContentParts[messageContentParts.length - 1]
1604-
}
1605-
})
1590+
// Emit chat event for TTS (skip when TTS is not active)
1591+
if ($settings?.responseAutoPlayback || $showCallOverlay) {
1592+
const messageContentParts = getMessageContentParts(
1593+
removeAllDetails(message.content),
1594+
$config?.audio?.tts?.split_on ?? 'punctuation'
16061595
);
1596+
messageContentParts.pop();
1597+
1598+
// dispatch only last sentence and make sure it hasn't been dispatched before
1599+
if (
1600+
messageContentParts.length > 0 &&
1601+
messageContentParts[messageContentParts.length - 1] !== message.lastSentence
1602+
) {
1603+
message.lastSentence = messageContentParts[messageContentParts.length - 1];
1604+
eventTarget.dispatchEvent(
1605+
new CustomEvent('chat', {
1606+
detail: {
1607+
id: message.id,
1608+
content: messageContentParts[messageContentParts.length - 1]
1609+
}
1610+
})
1611+
);
1612+
}
16071613
}
16081614
}
16091615

0 commit comments

Comments
 (0)