wip: realtime updates

This commit is contained in:
leo
2026-05-28 18:33:58 +02:00
parent 64bf50116b
commit 2bc60effc8
2 changed files with 22 additions and 10 deletions
+11 -1
View File
@@ -409,7 +409,17 @@ class SpeechStream(stt.RecognizeStream):
event_type = data.get("type")
if event_type == "transcription.delta":
current_text += data.get("delta", "")
delta = data.get("delta", "")
if not delta:
continue
current_text += delta
self._event_ch.send_nowait(
stt.SpeechEvent(
type=stt.SpeechEventType.INTERIM_TRANSCRIPT,
request_id=request_id,
alternatives=[stt.SpeechData(text=current_text, language="")],
)
)
elif event_type == "transcription.done":
final_text = data.get("text") or current_text
self._event_ch.send_nowait(
@@ -65,6 +65,8 @@ const useTranscriptionState = () => {
) => {
console.log(participant, segments)
if (!participant || segments.length === 0) return
if (segments.length > 1) {
@@ -75,15 +77,15 @@ const useTranscriptionState = () => {
const segment = segments[0]
setTranscriptionSegments((prevSegments) => {
const existingSegmentIds = new Set(prevSegments.map((s) => s.id))
if (existingSegmentIds.has(segment.id)) return prevSegments
return [
...prevSegments,
{
participant: participant,
...segment,
},
]
const existingIndex = prevSegments.findIndex(
(s: TranscriptionSegmentWithParticipant) => s.id === segment.id
)
if (existingIndex === -1) {
return [...prevSegments, { participant, ...segment }]
}
const next = prevSegments.slice()
next[existingIndex] = { ...next[existingIndex], ...segment }
return next
})
}