Commit History
-
feat: Complete fresh restart with clean Streamlit configurationβ
Peter Michael Gits +1: Claude- Replaced complex Gradio app with minimal Streamlit interface - Updated README.md to use app.py instead of hello_world.py - Clean configuration to resolve persistent 500 errors - Testing basic Streamlit functionality in existing space π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>3cb7ae9 -
debug: Add print statement to test Python execution before Streamlitβ
Peter Michael Gits +1: Claude- Added print statement to verify Python runs - Testing if issue is with Python execution or Streamlit specifically - Investigating persistent 500 errors π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>35326c5 -
fix: Ultra-minimal hello_world.py to diagnose 500 errorsβ
Peter Michael Gits +1: Claude- Reduced to absolute minimum Streamlit code - Added shebang and docstring for clarity - Testing if import or function calls cause 500 error π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>f763a8f -
fix: Remove .streamlit/config.toml and simplify to minimal hello_world testβ
Peter Michael Gits +1: Claude- Removed .streamlit/config.toml that was causing 500 server errors - Simplified requirements.txt to ultra-minimal streamlit only - Updated hello_world.py to basic test without custom configuration - HF Spaces handles Streamlit configuration automatically π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>df2f06e -
Merge remote-tracking branch 'hf/main'
Peter Michael Gits383733a -
restore: Bring back full VoiceCal WebRTC interfaceβ
Peter Michael Gits +1: Claude- Restore streamlit_websocket_app.py from backup with full WebRTC functionality - Update README.md app_file to point to main application - Add necessary requirements for WebRTC integration - Keep .streamlit/config.toml for proper HF Spaces configuration - Now that infrastructure works, restore complete voice interface π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>3763b20 -
fix: Add explicit Streamlit configuration for HF Spaces health checkβ
Peter Michael Gits +1: Claude- Add shebang and system info to hello_world.py - Create .streamlit/config.toml with explicit port 7860 configuration - Set headless=true and enableCORS=false for HF Spaces compatibility - Should resolve 'Launch timed out, workload was not healthy' error π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>03f17d5 -
debug: Add hello world test for HF Spaces restart cycle investigationβ
Peter Michael Gits +1: Claude- Ultra-minimal hello_world.py with basic streamlit output - Strip requirements.txt to just 'streamlit' - Change app_file to hello_world.py in README.md - Test if 5-minute restart cycle persists with minimal code - Will isolate whether issue is infrastructure or code-related π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>8884a5c -
debug: Switch to ultra-minimal Streamlit test to isolate restart loop issueβ
Peter Michael Gits +1: Claude- Create minimal_test.py with only basic Streamlit components - Change app_file to minimal_test.py in README.md for HF Spaces - Remove st.set_page_config() from main app temporarily - Test if complex Streamlit components are causing restart loops - Will identify root cause before re-adding functionality π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>4a0bb42 -
debug: Simplify VoiceCal to isolate restart issue causeβ
Peter Michael Gits +1: Claude- Remove complex JavaScript WebRTC integration temporarily - Create minimal Streamlit interface for startup debugging - Backup original version as streamlit_websocket_app.py.backup - Add test_streamlit_simple.py for isolated testing - Focus on basic Streamlit functionality first - Will re-add WebRTC after confirming basic startup works π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>ae83ce7 -
fix: Resolve VoiceCal restart loop by removing conflicting Dockerfileβ
Peter Michael Gits +1: Claude- Remove Dockerfile that conflicts with streamlit SDK configuration - Keep streamlit SDK in README.md as primary deployment method - Backup Dockerfile as Dockerfile.backup for future reference - Add requirements.txt for Streamlit SDK dependency management - Resolves HF Spaces restart loop caused by SDK/Docker conflict π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>ef88eec
-
refactor: Streamline VoiceCal to pure WebSocket connectivity with STT v1.0.0β
Peter Michael Gits +1: Claude- Updated WebSocket URL to /ws/stt for standalone STT service - Added sendAudioViaWebSocket() method with base64 audio transmission - Commented out HTTP API fallback code (focusing on WebSocket-only) - Enhanced STT response handling for standalone service v1.0.0 - Updated WebSocket test connection method - Modified UI to reflect "Pure WebSocket" and "No fallbacks" approach - Technical documentation updated for standalone STT integration π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>1c5ac0f -
fix: Switch to Gradio HTTP API fallback for WebSocket connectivity issuesβ
Peter Michael Gits +1: Claude- Use /api/predict endpoint instead of WebSocket due to Gradio routing conflicts - Maintain WebRTC audio capture with WebM/Opus format - Add fallback mechanism for reliable STT integration - Compatible with new standalone WebSocket STT service v1.0.0 π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>8527d70 -
fix: Update WebSocket URL to /api/ws/stt to avoid Gradio routing conflictsβ
Peter Michael Gits +1: Claude- Change STT WebSocket path from /ws/stt to /api/ws/stt - This path should avoid conflicts with Gradio's internal routing - Update VoiceCal client to use new WebSocket endpoint - Add logging to show alternative path being used π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>a312290 -
fix: Force Streamlit to use port 7860 for HuggingFace Spacesβ
Peter Michael Gits +1: Claude- Add .streamlit/config.toml to override default port 8501 - Set port = 7860 explicitly for HF Spaces compatibility - Add headless = true and disable usage stats for container deployment - This ensures VoiceCal is accessible on the correct HF Spaces port π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>bfa1948 -
fix: Shorten description to meet HF Spaces 60 character limit
Peter Michael Gitsf23aff9 -
fix: Simplify VoiceCal to single Streamlit service with direct STT connectionβ
Peter Michael Gits +1: Claude- Replace complex nginx reverse proxy setup with simple Streamlit app - Create streamlit_websocket_app.py with direct STT WebSocket connection - Eliminate multi-service complexity that was causing HF Spaces deployment issues - Implement direct connection to wss://pgits-stt-gpu-service.hf.space/ws/stt - Maintain unmute.sh pattern with simplified architecture: * WebRTC MediaRecorder for audio capture * Direct WebSocket communication to STT service * Real-time transcription display - Much better compatibility with HuggingFace Spaces constraints π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>e118f9c -
feat: Implement WebRTC integration following unmute.sh patternβ
Peter Michael Gits +1: Claude- Add comprehensive Streamlit app with WebRTC voice interface - Implement JavaScript client following unmute.sh methodology: * MediaRecorder with 250ms chunks for real-time streaming * WebM/Opus format (16kHz, mono) for optimal quality * Flush trick implementation for end-of-stream processing * Automatic chunking and buffering with status updates - Create FastAPI WebSocket server for WebRTC endpoint handling - Add Nginx reverse proxy to work within HF Spaces single-port constraint: * Main app on port 7860 (HF requirement) * Streamlit on internal port 8501 * FastAPI WebSocket on internal port 8001 * Proxy routing: / -> Streamlit, /ws/webrtc/ -> FastAPI - Integrate with existing WebRTC handler for STT/TTS services - Real-time bidirectional voice communication ready π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>af83599 -
fix: Remove .gitattributes file that triggers HF VS Code detectionβ
Peter Michael Gits +1: Claude- The .gitattributes file with LFS configurations was causing HF to detect this as an ML project - HF automatically installs openvscode-server for ML projects with LFS files - Removing this file should prevent VS Code installation attempts - This was the root cause of the persistent VS Code extension errors π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>09fe934 -
fix: Switch to Streamlit SDK to bypass VS Code detectionβ
Peter Michael Gits +1: Claude- Change from Gradio to Streamlit SDK to avoid HF's Python development environment setup - Create simple streamlit_app.py with basic functionality test - Ultra-minimal requirements.txt with just streamlit and basic utilities - This should avoid the openvscode-server installation completely π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>f3e809e -
fix: Simplify VoiceCal build to avoid VS Code detectionβ
Peter Michael Gits +1: Claude- Switch to gradio SDK with simple_test.py app file - Use requirements-minimal.txt without webrtcvad and audio dependencies - Remove build tools from Dockerfile - use minimal system packages only - Add .spacesignore to prevent VS Code detection files from being uploaded - This should avoid the openvscode-server installation that was failing π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>212c804 -
fix: Add build dependencies for webrtcvad and audio librariesβ
Peter Michael Gits +1: Claude- Add gcc, g++, make, python3-dev for compiling webrtcvad - Add audio library headers: libasound2-dev, portaudio19-dev, libsndfile1-dev - Add pkg-config for dependency resolution - This fixes the 'gcc: command not found' error during pip install π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>713df26 -
fix: Switch to Docker SDK to avoid VS Code extension build errorsβ
Peter Michael Gits +1: Claude- Change from sdk: gradio to sdk: docker to bypass HF's auto-detection - Use custom Dockerfile instead of HF's default Gradio environment - This avoids the VS Code extension installation that was causing build failures - Add HF config to disable VS Code integration π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>7008e61 -
fix: Resolve syntax error in WebSocket retry logicβ
Peter Michael Gits +1: Claude- Fixed orphaned except blocks in _connect_websocket_with_retry method - Removed duplicate exception handling left from refactoring - Resolves SyntaxError at line 573 causing app startup failure - Update to v0.8.5 with critical syntax fix The error occurred when retry logic was moved to separate method but old exception handlers weren't properly cleaned up. π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>34964d9
-
feat: Add comprehensive WebSocket retry logic with GPU cold start timing calibrationβ
Peter Michael Gits +1: Claude- Add sophisticated exponential backoff retry mechanism (8 attempts, 3-45s delays) - Implement detailed timing calibration for GPU cold start pattern analysis - Add comprehensive status code analysis (503=cold start, 403=unavailable, etc.) - Track connection timing thresholds: <8s=warm, <30s=normal, >60s=loading issues - Add retry attempt logging with elapsed time tracking for performance debugging - Provide calibration summaries to identify service state patterns - Update to v0.8.4 with enhanced WebSocket resilience This addresses the cold start timing issues where STT services need time to warm up and provides detailed metrics to calibrate optimal retry parameters. π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>ee023ba -
feat: Add STT service preload to prevent cold start delaysβ
Peter Michael Gits +1: Claude- Add _preload_stt_service() method to warm up STT model during VoiceCal startup - Call /preload?model_size=base endpoint to trigger model loading - Prevent WebSocket HTTP 503 errors caused by cold-starting STT service - Add timeout handling and detailed logging for preload process - Update to v0.8.3 with STT service preload warming Resolves the timing issue where VoiceCal tries to connect before STT service is ready. π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>628e022 -
feat: Update to v0.8.2 with WebSocket STT integrationβ
Peter Michael Gits +1: Claude- Updated version to reflect WebSocket integration improvements - Enhanced description to include WebSocket STT and fallback mechanisms - Tracks the fix for WebSocket 403 Forbidden errors on HF Spaces π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>4a7e625 -
fix: Resolve Gradio client FileData validation errorβ
Peter Michael Gits +1: Claude- Use handle_file() to create proper FileData objects for Gradio API calls - Fixes "meta field must be explicitly provided" validation error - Ensures Gradio client passes correctly formatted file metadata π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>f677de5 -
fix: Improve Gradio client STT endpoint discoveryβ
Peter Michael Gits +1: Claude- Fixed "multiple endpoints" error by trying specific endpoint names - Added support for transcribe_audio endpoint name and function index - Better error handling for different Gradio result formats - Enhanced logging for endpoint discovery debugging - This should fix the HTTP fallback when WebSocket fails with 403 π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>225c499 -
fix: Always initialize WebSocket URLs regardless of MCP statusβ
Peter Michael Gits +1: Claude- WebSocket URLs were only initialized when MCP failed completely - Fake MCP success prevented WebSocket fallback initialization - Now WebSocket/HTTP services are always initialized first - This ensures STT WebSocket connection is always available - Fixes "hasattr(self, 'stt_websocket_urls'): False" issue π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>cdc2e76 -
debug: Add WebSocket URL availability debugging to STT serviceβ
Peter Michael Gits +1: Claude- Added debug logging to check if stt_websocket_urls is properly initialized - Will help diagnose why WebSocket connection is being skipped - Added fallback message when WebSocket URLs are not available π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>0caa1e7 -
feat: Update version to v0.8.0 - Whisper corruption detection supportβ
Peter Michael Gits +1: Claude- Updated version from 0.7.2 to 0.8.0 - Enhanced description to reflect STT service improvements - VoiceCal now supports STT service with Whisper corruption detection - Compatible with new factory reset and alternative STT models π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>ce0e860 -
fix: Configure MediaRecorder with consistent WebM/Opus formatβ
Peter Michael Gits +1: Claude- Fix root cause of "Thank you very much" repetitive transcriptions - Configure MediaRecorder with audio/webm;codecs=opus for consistent encoding - Add 128kbps audio bitrate for good quality - Prevent "EBML header parsing failed" errors in STT service - Follow unmute.sh methodology for WebM format consistency - Add fallback handling for browsers without WebM/Opus support Resolves STT service logs showing corrupted WebM files causing ffmpeg conversion failures and silence fallback transcriptions. π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>5d2f2af -
fix: Implement correct WebSocket STT protocol and SSL handlingβ
Peter Michael Gits +1: Claude- Add SSL context with disabled certificate verification for HF Spaces - Implement two-step WebSocket STT protocol: 1. Wait for stt_connection_confirmed message 2. Send stt_audio_chunk message 3. Receive stt_transcription response - Enhanced connection debugging and timeout handling - Add test script showing WebSocket STT connection working correctly Fixes WebSocket connectivity issues with pgits-stt-gpu-service.hf.space π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>f7f39b9 -
feat: Add comprehensive WebSocket STT debuggingβ
Peter Michael Gits +1: Claude- Detailed debugging for audio file processing and format detection - WebSocket connection state and parameter logging - Message sending/receiving debugging with JSON parsing - Enhanced error handling for different WebSocket exception types - Connection timeout and failure tracking across multiple URLs - Audio data validation and base64 encoding verification Helps identify why WebSocket STT streaming isn't working properly. π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>3a3cbca
-
chore: Bump version to v0.7.1β
Peter Michael Gits +1: Claude- Update version for MCP fallback improvements - Build timestamp: 2025-08-22T15:00:00 π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>e9456c7 -
fix: Improve MCP fallback logic for STT service connectionβ
Peter Michael Gits +1: Claude- Fix HTTP fallback to properly return valid transcription results - Remove immediate error return when ImportError occurs in MCP client - Ensure WebSocket/HTTP STT services work when MCP is unavailable - Addresses "ERROR: MCP STT service failed - no demo mode" issue - Enables proper unmute.sh methodology with external STT services π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>f2e8ec0 -
feat: Implement unmute.sh streaming STT methodology v0.7.0β
Peter Michael Gits +1: ClaudeUNMUTE.SH METHODOLOGY IMPLEMENTATION: - Buffer audio chunks during recording (like unmute.sh streaming) - Apply flush trick when recording stops - combine all chunks into complete audio - Process complete audio with is_final=True for proper transcription finalization - Clear buffer after processing to prevent chunk contamination - Add flush trick markers and metadata following unmute.sh patterns Key Changes: β Buffer chunks during recording instead of processing individually β Implement flush trick: combine chunks + process with is_final=True β Send only final transcription after complete audio processing β Clear buffers after each recording session β Add unmute.sh-style metadata (is_final, chunks_processed) This should fix the 'Thank you very much' issue by properly implementing unmute.sh's streaming methodology with flush trick for clean transcriptions. π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>7d32abe -
debug: Add audio debugging to trace 'Thank you very much' source v0.6.1β
Peter Michael Gits +1: ClaudeDEBUGGING: Add detailed logging to find source of repeated transcription - Add audio file size and hex dump debugging in WebSocket STT calls - Add audio tuple content debugging in Gradio audio processing - Log exact audio data being sent to STT service - This will help identify if voiceCal is sending wrong/corrupted audio - or if STT service has internal issues with specific audio content π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>b61f866 -
feat: Remove all demo simulation code - REAL STT ONLY v0.6.0β
Peter Michael Gits +1: ClaudeMAJOR CHANGE: Complete removal of demo/simulation modes - Remove all _simulate_stt() and _simulate_stt_with_length() methods - Remove demo_mode flags and logic throughout MCPAudioHandler - Force voiceCal to only use real STT services (WebSocket/MCP/HTTP) - Return clear error messages when STT services fail instead of fake responses - Update version to 0.6.0 for this breaking change - No more confusing demo transcriptions that mask real issues Real Services Only: β WebSocket STT (primary) β MCP STT (fallback) β HTTP STT (final fallback) β No demo/simulation modes π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>4cf4588 -
fix: Remove max_file_size parameter for HF Spaces compatibility v0.5.11β
Peter Michael Gits +1: ClaudeCRITICAL FIX: Resolve voiceCal deployment crash - Remove max_file_size parameter from gr.Blocks() - not supported in HF Spaces Gradio version - Fix TypeError: BlockContext.__init__() unexpected keyword argument error - Update to v0.5.11 to trigger fresh deployment - Add compatibility note for future reference - This should resolve the exit code: 1 deployment failure π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>9a4b253 -
fix: Improve WebSocket stability and prevent spinning v0.5.10β
Peter Michael Gits +1: Claude- Update version to v0.5.10 to trigger fresh deployment - Add better timeout handling for WebSocket connections (15s connect, 30s response) - Disable ping_interval to reduce connection overhead - Improve timeout handling to prevent service from hanging or spinning - Force deployment refresh to resolve any stuck container issues π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>54cc854 -
feat: Add WebSocket STT integration with unmute.sh methodology v0.5.6β
Peter Michael Gits +1: Claude- Implement WebSocket STT service connection following unmute.sh patterns - Add real-time audio processing with flush trick support - Update MCP audio handler with WebSocket-first approach - Support unmute.sh protocol with is_final parameter for latency optimization - Add fallback chain: WebSocket β MCP β HTTP β Demo mode - Maintain backward compatibility with existing endpoints π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>dee3412
-
fix: Add max_file_size to resolve Gradio upload error v0.5.9β
Peter Michael Gits +1: Claude- Fix AttributeError: 'Blocks' object has no attribute 'max_file_size' - Set 10MB max file size for audio uploads - Addresses 500 errors in Gradio upload endpoint π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>edd02a0 -
Disable demo TTS responses due to poor STT accuracyβ
Peter Michael Gits +1: Claude- Only first 3 words were being transcribed correctly - Demo TTS responses not working properly with incomplete transcriptions - Keep WebRTC demo page functional for STT testing without TTS interference π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>bc9a856 -
fix: Add Hugging Face Spaces GPU support v0.5.8β
Peter Michael Gits +1: Claude- Add required 'import spaces' and @spaces.GPU decorator - Create initialize_gpu_resources() function to satisfy HF Spaces requirement - Add spaces>=0.19.0 to requirements.txt - Update to version 0.5.8 Fixes "Runtime error no @spaces.GPU function detected during startup" π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>b63ba79 -
fix: Add PyTorch dependencies and fix base64 imports v0.5.7β
Peter Michael Gits +1: Claude- Add missing PyTorch, TorchAudio, and Transformers dependencies to requirements.txt - Fix missing base64 import statements in WebSocket handler - Add better HTTP 503 error handling for cold starts - Update to version 0.5.7 with comprehensive fixes π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>e985487
-
temp: Update WebSocket URLs to standard port 7860β
Peter Michael Gits +1: Claude- Revert STT back to port 7860 (services now forced to WebSocket mode) - Both STT and TTS should run WebSocket endpoints on port 7860 - Temporary fix while debugging environment variable detection - Should resolve TTS connection issues π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>22227a1 -
feat: Add environment variable diagnostic scriptβ
Peter Michael Gits +1: Claude- Create debug_env_vars.py to check HF environment variable detection - Helps troubleshoot STT_SERVICE_MODE and TTS_SERVICE_MODE issues - Shows all environment variables and service mode detection - Useful for debugging Hugging Face Spaces configuration π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>49028b7 -
feat: Add enhanced TTS connection error handling and diagnosticsβ
Peter Michael Gits +1: Claude- Add timeout handling for TTS WebSocket connections - Improve error messages with specific diagnostic hints - Detect when TTS service is in wrong mode (Gradio vs WebSocket) - Guide users to set TTS_SERVICE_MODE=websocket environment variable - Better debugging for TTS connection failures π€ Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>57bc78b