Skip to content

Commit cfd6cd7

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 685ef4c commit cfd6cd7

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
@@ -1602,27 +1602,31 @@
16021602
navigator.vibrate(5);
16031603
}
16041604
1605-
// Emit chat event for TTS
1606-
const messageContentParts = getMessageContentParts(
1607-
removeAllDetails(message.content),
1608-
$config?.audio?.tts?.split_on ?? 'punctuation'
1609-
);
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-
})
1605+
// Emit chat event for TTS (skip when TTS is not active)
1606+
if ($settings?.responseAutoPlayback || $showCallOverlay) {
1607+
const messageContentParts = getMessageContentParts(
1608+
removeAllDetails(message.content),
1609+
$config?.audio?.tts?.split_on ?? 'punctuation'
16251610
);
1611+
messageContentParts.pop();
1612+
1613+
// dispatch only last sentence and make sure it hasn't been dispatched before
1614+
if (
1615+
messageContentParts.length > 0 &&
1616+
messageContentParts[messageContentParts.length - 1] !==
1617+
message.lastSentence
1618+
) {
1619+
message.lastSentence =
1620+
messageContentParts[messageContentParts.length - 1];
1621+
eventTarget.dispatchEvent(
1622+
new CustomEvent('chat', {
1623+
detail: {
1624+
id: message.id,
1625+
content: messageContentParts[messageContentParts.length - 1]
1626+
}
1627+
})
1628+
);
1629+
}
16261630
}
16271631
}
16281632
}
@@ -1636,27 +1640,29 @@
16361640
navigator.vibrate(5);
16371641
}
16381642
1639-
// Emit chat event for TTS
1640-
const messageContentParts = getMessageContentParts(
1641-
removeAllDetails(message.content),
1642-
$config?.audio?.tts?.split_on ?? 'punctuation'
1643-
);
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-
})
1643+
// Emit chat event for TTS (skip when TTS is not active)
1644+
if ($settings?.responseAutoPlayback || $showCallOverlay) {
1645+
const messageContentParts = getMessageContentParts(
1646+
removeAllDetails(message.content),
1647+
$config?.audio?.tts?.split_on ?? 'punctuation'
16591648
);
1649+
messageContentParts.pop();
1650+
1651+
// dispatch only last sentence and make sure it hasn't been dispatched before
1652+
if (
1653+
messageContentParts.length > 0 &&
1654+
messageContentParts[messageContentParts.length - 1] !== message.lastSentence
1655+
) {
1656+
message.lastSentence = messageContentParts[messageContentParts.length - 1];
1657+
eventTarget.dispatchEvent(
1658+
new CustomEvent('chat', {
1659+
detail: {
1660+
id: message.id,
1661+
content: messageContentParts[messageContentParts.length - 1]
1662+
}
1663+
})
1664+
);
1665+
}
16601666
}
16611667
}
16621668

0 commit comments

Comments
 (0)