Fix UTF-8 decode error in Inworld TTS streaming response
Buffer raw bytes and only decode after splitting on newline boundaries, preventing multi-byte UTF-8 characters from being split at chunk edges. Fixes #3538
This commit is contained in:
@@ -387,16 +387,16 @@ class InworldHttpTTSService(TTSService):
|
|||||||
Yields:
|
Yields:
|
||||||
An asynchronous generator of frames.
|
An asynchronous generator of frames.
|
||||||
"""
|
"""
|
||||||
buffer = ""
|
buffer = b""
|
||||||
# Track the duration of this utterance based on the last word's end time
|
# Track the duration of this utterance based on the last word's end time
|
||||||
utterance_duration = 0.0
|
utterance_duration = 0.0
|
||||||
|
|
||||||
async for chunk in response.content.iter_chunked(1024):
|
async for chunk in response.content.iter_any():
|
||||||
buffer += chunk.decode("utf-8")
|
buffer += chunk
|
||||||
|
|
||||||
while "\n" in buffer:
|
while b"\n" in buffer:
|
||||||
line, buffer = buffer.split("\n", 1)
|
line, buffer = buffer.split(b"\n", 1)
|
||||||
line_str = line.strip()
|
line_str = line.decode("utf-8").strip()
|
||||||
|
|
||||||
if not line_str:
|
if not line_str:
|
||||||
continue
|
continue
|
||||||
|
|||||||
Reference in New Issue
Block a user