Skip to content

Commit 80df012

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 f655dda commit 80df012

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

0 commit comments

Comments
 (0)