Skip to content

Commit 30f3f77

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 f883bbe commit 30f3f77

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
@@ -1597,27 +1597,31 @@
15971597
navigator.vibrate(5);
15981598
}
15991599
1600-
// Emit chat event for TTS
1601-
const messageContentParts = getMessageContentParts(
1602-
removeAllDetails(message.content),
1603-
$config?.audio?.tts?.split_on ?? 'punctuation'
1604-
);
1605-
messageContentParts.pop();
1606-
1607-
// dispatch only last sentence and make sure it hasn't been dispatched before
1608-
if (
1609-
messageContentParts.length > 0 &&
1610-
messageContentParts[messageContentParts.length - 1] !== message.lastSentence
1611-
) {
1612-
message.lastSentence = messageContentParts[messageContentParts.length - 1];
1613-
eventTarget.dispatchEvent(
1614-
new CustomEvent('chat', {
1615-
detail: {
1616-
id: message.id,
1617-
content: messageContentParts[messageContentParts.length - 1]
1618-
}
1619-
})
1600+
// Emit chat event for TTS (skip when TTS is not active)
1601+
if ($settings?.responseAutoPlayback || $showCallOverlay) {
1602+
const messageContentParts = getMessageContentParts(
1603+
removeAllDetails(message.content),
1604+
$config?.audio?.tts?.split_on ?? 'punctuation'
16201605
);
1606+
messageContentParts.pop();
1607+
1608+
// dispatch only last sentence and make sure it hasn't been dispatched before
1609+
if (
1610+
messageContentParts.length > 0 &&
1611+
messageContentParts[messageContentParts.length - 1] !==
1612+
message.lastSentence
1613+
) {
1614+
message.lastSentence =
1615+
messageContentParts[messageContentParts.length - 1];
1616+
eventTarget.dispatchEvent(
1617+
new CustomEvent('chat', {
1618+
detail: {
1619+
id: message.id,
1620+
content: messageContentParts[messageContentParts.length - 1]
1621+
}
1622+
})
1623+
);
1624+
}
16211625
}
16221626
}
16231627
}
@@ -1631,27 +1635,29 @@
16311635
navigator.vibrate(5);
16321636
}
16331637
1634-
// Emit chat event for TTS
1635-
const messageContentParts = getMessageContentParts(
1636-
removeAllDetails(message.content),
1637-
$config?.audio?.tts?.split_on ?? 'punctuation'
1638-
);
1639-
messageContentParts.pop();
1640-
1641-
// dispatch only last sentence and make sure it hasn't been dispatched before
1642-
if (
1643-
messageContentParts.length > 0 &&
1644-
messageContentParts[messageContentParts.length - 1] !== message.lastSentence
1645-
) {
1646-
message.lastSentence = messageContentParts[messageContentParts.length - 1];
1647-
eventTarget.dispatchEvent(
1648-
new CustomEvent('chat', {
1649-
detail: {
1650-
id: message.id,
1651-
content: messageContentParts[messageContentParts.length - 1]
1652-
}
1653-
})
1638+
// Emit chat event for TTS (skip when TTS is not active)
1639+
if ($settings?.responseAutoPlayback || $showCallOverlay) {
1640+
const messageContentParts = getMessageContentParts(
1641+
removeAllDetails(message.content),
1642+
$config?.audio?.tts?.split_on ?? 'punctuation'
16541643
);
1644+
messageContentParts.pop();
1645+
1646+
// dispatch only last sentence and make sure it hasn't been dispatched before
1647+
if (
1648+
messageContentParts.length > 0 &&
1649+
messageContentParts[messageContentParts.length - 1] !== message.lastSentence
1650+
) {
1651+
message.lastSentence = messageContentParts[messageContentParts.length - 1];
1652+
eventTarget.dispatchEvent(
1653+
new CustomEvent('chat', {
1654+
detail: {
1655+
id: message.id,
1656+
content: messageContentParts[messageContentParts.length - 1]
1657+
}
1658+
})
1659+
);
1660+
}
16551661
}
16561662
}
16571663

0 commit comments

Comments
 (0)