Merge pull request #4202 from pipecat-ai/mb/fix-inworld-tts-streaming-utf8

Fix UTF-8 decode error in Inworld TTS streaming response
This commit is contained in:
Mark Backman
2026-03-31 15:28:37 -04:00
committed by GitHub
2 changed files with 7 additions and 6 deletions

1
changelog/4202.fixed.md Normal file
View File

@@ -0,0 +1 @@
- Fixed `InworldHttpTTSService` streaming responses crashing with `UnicodeDecodeError` when multi-byte UTF-8 characters were split across chunk boundaries. This caused TTS audio to cut off mid-sentence intermittently.

View File

@@ -387,16 +387,16 @@ class InworldHttpTTSService(TTSService):
Yields:
An asynchronous generator of frames.
"""
buffer = ""
buffer = b""
# Track the duration of this utterance based on the last word's end time
utterance_duration = 0.0
async for chunk in response.content.iter_chunked(1024):
buffer += chunk.decode("utf-8")
async for chunk in response.content.iter_any():
buffer += chunk
while "\n" in buffer:
line, buffer = buffer.split("\n", 1)
line_str = line.strip()
while b"\n" in buffer:
line, buffer = buffer.split(b"\n", 1)
line_str = line.decode("utf-8").strip()
if not line_str:
continue