Skip to content

Commit f999979

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 0dfcf98 commit f999979

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
@@ -1587,27 +1587,31 @@
15871587
navigator.vibrate(5);
15881588
}
15891589
1590-
// Emit chat event for TTS
1591-
const messageContentParts = getMessageContentParts(
1592-
removeAllDetails(message.content),
1593-
$config?.audio?.tts?.split_on ?? 'punctuation'
1594-
);
1595-
messageContentParts.pop();
1596-
1597-
// dispatch only last sentence and make sure it hasn't been dispatched before
1598-
if (
1599-
messageContentParts.length > 0 &&
1600-
messageContentParts[messageContentParts.length - 1] !== message.lastSentence
1601-
) {
1602-
message.lastSentence = messageContentParts[messageContentParts.length - 1];
1603-
eventTarget.dispatchEvent(
1604-
new CustomEvent('chat', {
1605-
detail: {
1606-
id: message.id,
1607-
content: messageContentParts[messageContentParts.length - 1]
1608-
}
1609-
})
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'
16101595
);
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] !==
1602+
message.lastSentence
1603+
) {
1604+
message.lastSentence =
1605+
messageContentParts[messageContentParts.length - 1];
1606+
eventTarget.dispatchEvent(
1607+
new CustomEvent('chat', {
1608+
detail: {
1609+
id: message.id,
1610+
content: messageContentParts[messageContentParts.length - 1]
1611+
}
1612+
})
1613+
);
1614+
}
16111615
}
16121616
}
16131617
}
@@ -1621,27 +1625,29 @@
16211625
navigator.vibrate(5);
16221626
}
16231627
1624-
// Emit chat event for TTS
1625-
const messageContentParts = getMessageContentParts(
1626-
removeAllDetails(message.content),
1627-
$config?.audio?.tts?.split_on ?? 'punctuation'
1628-
);
1629-
messageContentParts.pop();
1630-
1631-
// dispatch only last sentence and make sure it hasn't been dispatched before
1632-
if (
1633-
messageContentParts.length > 0 &&
1634-
messageContentParts[messageContentParts.length - 1] !== message.lastSentence
1635-
) {
1636-
message.lastSentence = messageContentParts[messageContentParts.length - 1];
1637-
eventTarget.dispatchEvent(
1638-
new CustomEvent('chat', {
1639-
detail: {
1640-
id: message.id,
1641-
content: messageContentParts[messageContentParts.length - 1]
1642-
}
1643-
})
1628+
// Emit chat event for TTS (skip when TTS is not active)
1629+
if ($settings?.responseAutoPlayback || $showCallOverlay) {
1630+
const messageContentParts = getMessageContentParts(
1631+
removeAllDetails(message.content),
1632+
$config?.audio?.tts?.split_on ?? 'punctuation'
16441633
);
1634+
messageContentParts.pop();
1635+
1636+
// dispatch only last sentence and make sure it hasn't been dispatched before
1637+
if (
1638+
messageContentParts.length > 0 &&
1639+
messageContentParts[messageContentParts.length - 1] !== message.lastSentence
1640+
) {
1641+
message.lastSentence = messageContentParts[messageContentParts.length - 1];
1642+
eventTarget.dispatchEvent(
1643+
new CustomEvent('chat', {
1644+
detail: {
1645+
id: message.id,
1646+
content: messageContentParts[messageContentParts.length - 1]
1647+
}
1648+
})
1649+
);
1650+
}
16451651
}
16461652
}
16471653

0 commit comments

Comments
 (0)