Spaces:
Building
Building
Update websocket_handler.py
Browse files- websocket_handler.py +15 -2
websocket_handler.py
CHANGED
@@ -600,6 +600,10 @@ async def generate_and_stream_tts(
|
|
600 |
# Generate audio
|
601 |
audio_data = await tts_provider.synthesize(text)
|
602 |
|
|
|
|
|
|
|
|
|
603 |
# Change state to playing
|
604 |
await session.change_state(ConversationState.PLAYING_AUDIO)
|
605 |
await websocket.send_json({
|
@@ -620,13 +624,21 @@ async def generate_and_stream_tts(
|
|
620 |
chunk = audio_data[i:i + chunk_size]
|
621 |
chunk_index = i // chunk_size
|
622 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
623 |
await websocket.send_json({
|
624 |
"type": "tts_audio",
|
625 |
-
"data":
|
626 |
"chunk_index": chunk_index,
|
627 |
"total_chunks": total_chunks,
|
628 |
"is_last": chunk_index == total_chunks - 1,
|
629 |
-
"mime_type": "audio/mpeg"
|
630 |
})
|
631 |
|
632 |
# Small delay to prevent overwhelming the client
|
@@ -654,6 +666,7 @@ async def generate_and_stream_tts(
|
|
654 |
log_error(
|
655 |
f"TTS generation error",
|
656 |
error=str(e),
|
|
|
657 |
session_id=session.session.session_id
|
658 |
)
|
659 |
await websocket.send_json({
|
|
|
600 |
# Generate audio
|
601 |
audio_data = await tts_provider.synthesize(text)
|
602 |
|
603 |
+
# Debug log to check audio data
|
604 |
+
log_debug(f"Audio data type: {type(audio_data)}, length: {len(audio_data)}")
|
605 |
+
log_debug(f"First 10 bytes: {audio_data[:10]}")
|
606 |
+
|
607 |
# Change state to playing
|
608 |
await session.change_state(ConversationState.PLAYING_AUDIO)
|
609 |
await websocket.send_json({
|
|
|
624 |
chunk = audio_data[i:i + chunk_size]
|
625 |
chunk_index = i // chunk_size
|
626 |
|
627 |
+
# IMPORTANT: Ensure chunk is bytes before encoding
|
628 |
+
if isinstance(chunk, str):
|
629 |
+
# If chunk is already a string, it might be base64 already
|
630 |
+
chunk_base64 = chunk
|
631 |
+
else:
|
632 |
+
# Convert bytes to base64
|
633 |
+
chunk_base64 = base64.b64encode(chunk).decode('utf-8')
|
634 |
+
|
635 |
await websocket.send_json({
|
636 |
"type": "tts_audio",
|
637 |
+
"data": chunk_base64,
|
638 |
"chunk_index": chunk_index,
|
639 |
"total_chunks": total_chunks,
|
640 |
"is_last": chunk_index == total_chunks - 1,
|
641 |
+
"mime_type": "audio/mpeg"
|
642 |
})
|
643 |
|
644 |
# Small delay to prevent overwhelming the client
|
|
|
666 |
log_error(
|
667 |
f"TTS generation error",
|
668 |
error=str(e),
|
669 |
+
traceback=traceback.format_exc(),
|
670 |
session_id=session.session.session_id
|
671 |
)
|
672 |
await websocket.send_json({
|