Spaces:
Running
Running
File size: 2,424 Bytes
b64e75b 27bbf77 b64e75b 27bbf77 b64e75b 27bbf77 b64e75b 27bbf77 b64e75b 27bbf77 b64e75b 27bbf77 b64e75b 27bbf77 b64e75b 27bbf77 b64e75b 27bbf77 b64e75b 27bbf77 b64e75b 27bbf77 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
"""
Helper functions for realtime session management
"""
import base64
from typing import Optional
from datetime import datetime
import sys
import traceback
from logger import log_info, log_error, log_debug, log_warning
def log(message: str):
"""Log helper with timestamp"""
timestamp = datetime.now().strftime("%H:%M:%S.%f")[:-3]
print(f"[{timestamp}] {message}")
sys.stdout.flush()
async def send_tts_welcome_message(websocket, session_id: str, tts_provider, text: str):
"""Send welcome message TTS audio"""
try:
log_info(f"ποΈ Generating welcome TTS for: '{text[:50]}...'", session_id=session_id)
# Generate TTS
audio_data = await tts_provider.synthesize(text)
log_info(f"β
Welcome TTS generated: {len(audio_data)} bytes", session_id=session_id)
# Convert to base64
log_debug(f"π¦ Converting welcome audio to base64...")
audio_base64 = base64.b64encode(audio_data).decode('utf-8')
log_info(f"π Welcome base64 ready: {len(audio_base64)} chars", session_id=session_id)
# Log preview
log_debug(f"π Welcome base64 preview: {audio_base64[:100]}...")
# Send in chunks
chunk_size = 16384
total_length = len(audio_base64)
total_chunks = (total_length + chunk_size - 1) // chunk_size
log_info(f"π€ Sending welcome TTS in {total_chunks} chunks", session_id=session_id)
for i in range(0, total_length, chunk_size):
chunk = audio_base64[i:i + chunk_size]
chunk_index = i // chunk_size
is_last = chunk_index == total_chunks - 1
log_debug(f"π¨ Welcome chunk {chunk_index}/{total_chunks}, size: {len(chunk)}")
await websocket.send_json({
"type": "tts_audio",
"data": chunk,
"chunk_index": chunk_index,
"total_chunks": total_chunks,
"is_last": is_last,
"mime_type": "audio/mpeg"
})
log_info(f"β
Welcome message TTS sent successfully", session_id=session_id, chunks=total_chunks)
except Exception as e:
log_error(
f"β Failed to send welcome TTS",
error=str(e),
traceback=traceback.format_exc(),
session_id=session_id
) |