Skip to content

Commit 0dbb478

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 da8dca6 commit 0dbb478

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
@@ -1563,27 +1563,31 @@
15631563
navigator.vibrate(5);
15641564
}
15651565
1566-
// Emit chat event for TTS
1567-
const messageContentParts = getMessageContentParts(
1568-
removeAllDetails(message.content),
1569-
$config?.audio?.tts?.split_on ?? 'punctuation'
1570-
);
1571-
messageContentParts.pop();
1572-
1573-
// dispatch only last sentence and make sure it hasn't been dispatched before
1574-
if (
1575-
messageContentParts.length > 0 &&
1576-
messageContentParts[messageContentParts.length - 1] !== message.lastSentence
1577-
) {
1578-
message.lastSentence = messageContentParts[messageContentParts.length - 1];
1579-
eventTarget.dispatchEvent(
1580-
new CustomEvent('chat', {
1581-
detail: {
1582-
id: message.id,
1583-
content: messageContentParts[messageContentParts.length - 1]
1584-
}
1585-
})
1566+
// Emit chat event for TTS (skip when TTS is not active)
1567+
if ($settings?.responseAutoPlayback || $showCallOverlay) {
1568+
const messageContentParts = getMessageContentParts(
1569+
removeAllDetails(message.content),
1570+
$config?.audio?.tts?.split_on ?? 'punctuation'
15861571
);
1572+
messageContentParts.pop();
1573+
1574+
// dispatch only last sentence and make sure it hasn't been dispatched before
1575+
if (
1576+
messageContentParts.length > 0 &&
1577+
messageContentParts[messageContentParts.length - 1] !==
1578+
message.lastSentence
1579+
) {
1580+
message.lastSentence =
1581+
messageContentParts[messageContentParts.length - 1];
1582+
eventTarget.dispatchEvent(
1583+
new CustomEvent('chat', {
1584+
detail: {
1585+
id: message.id,
1586+
content: messageContentParts[messageContentParts.length - 1]
1587+
}
1588+
})
1589+
);
1590+
}
15871591
}
15881592
}
15891593
}
@@ -1597,27 +1601,29 @@
15971601
navigator.vibrate(5);
15981602
}
15991603
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-
})
1604+
// Emit chat event for TTS (skip when TTS is not active)
1605+
if ($settings?.responseAutoPlayback || $showCallOverlay) {
1606+
const messageContentParts = getMessageContentParts(
1607+
removeAllDetails(message.content),
1608+
$config?.audio?.tts?.split_on ?? 'punctuation'
16201609
);
1610+
messageContentParts.pop();
1611+
1612+
// dispatch only last sentence and make sure it hasn't been dispatched before
1613+
if (
1614+
messageContentParts.length > 0 &&
1615+
messageContentParts[messageContentParts.length - 1] !== message.lastSentence
1616+
) {
1617+
message.lastSentence = messageContentParts[messageContentParts.length - 1];
1618+
eventTarget.dispatchEvent(
1619+
new CustomEvent('chat', {
1620+
detail: {
1621+
id: message.id,
1622+
content: messageContentParts[messageContentParts.length - 1]
1623+
}
1624+
})
1625+
);
1626+
}
16211627
}
16221628
}
16231629

0 commit comments

Comments
 (0)