INFO: Started server process [2909266] INFO: Waiting for application startup. INFO:__main__:Initializing VoiceKit MCP connection... INFO:httpx:HTTP Request: GET https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/sse "HTTP/1.1 200 OK" INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP connected. Tools: ['voicekit_extract_embedding', 'voicekit_compare_voices', 'voicekit_analyze_acoustic_features', 'voicekit_transcribe_audio', 'voicekit_isolate_voice', 'voicekit_analyze_voice_similarity'] INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8002 (Press CTRL+C to quit) INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO: 127.0.0.1:49922 - "GET /api/dashboard HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=85b92e03-86fb-4b44-afdc-e845571d1f06 INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 222.3KB → 80.7KB (63.7% reduction) in 271.2ms INFO:__main__:⏱️ Base64 encoding: 271.4ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.2ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 85b92e03-86fb-4b44-afdc-e845571d1f06: Attempt 1/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 7876.5ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'pitch': 100.0, 'rhythm': 100.0, 'energy': 100.0, 'pronunciation': 0, 'transcript': 0, 'overall': 100.0, 'user_text': ''} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" ERROR:__main__:Gemini response error: AI response had no content. Please try again. INFO:__main__:⏱️ Gemini hint generation: 4174.7ms INFO:__main__:Generated hints: {'type': 'advice', 'answer': [{'text': 'Focus on improving pronunciation (score: 0/100)', 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 12323.2ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '85b92e03-86fb-4b44-afdc-e845571d1f06', 'puzzle_number': 3, 'pitch': 100.0, 'rhythm': 100.0, 'energy': 100.0, 'pronunciation': 0.0, 'transcript': 0.0, 'overall': 100.0, 'advice': 'Focus on improving pronunciation (score: 0/100)', 'is_correct': True, 'guess_timestamp': 1764230530805, 'user_text': ''}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=100.0, correct=True DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter: Got response DEBUG gemini_adapter: Response type: DEBUG gemini_adapter: Response has candidates: True DEBUG gemini_adapter: First candidate type: DEBUG gemini_adapter: finish_reason: MAX_TOKENS DEBUG get_text: Response type: DEBUG get_text: Has candidates: True DEBUG get_text: Candidate has content: True DEBUG get_text: finish_reason: MAX_TOKENS DEBUG get_text: Content has parts: True WARNING get_text: No parts in content INFO: 127.0.0.1:48388 - "POST /api/analyze-voice HTTP/1.1" 200 OK INFO: 127.0.0.1:36388 - "GET /api/dashboard HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=85b92e03-86fb-4b44-afdc-e845571d1f06 INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 294.6KB → 107.0KB (63.7% reduction) in 278.1ms INFO:__main__:⏱️ Base64 encoding: 278.4ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.2ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 85b92e03-86fb-4b44-afdc-e845571d1f06: Attempt 2/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 5564.3ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'pitch': 100.0, 'rhythm': 100.0, 'energy': 100.0, 'pronunciation': 0, 'transcript': 0, 'overall': 100.0, 'user_text': ''} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" ERROR:__main__:Gemini response error: AI response had no content. Please try again. INFO:__main__:⏱️ Gemini hint generation: 3453.2ms INFO:__main__:Generated hints: {'type': 'advice', 'answer': [{'text': 'Focus on improving pronunciation (score: 0/100)', 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 9296.8ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '85b92e03-86fb-4b44-afdc-e845571d1f06', 'puzzle_number': 3, 'pitch': 100.0, 'rhythm': 100.0, 'energy': 100.0, 'pronunciation': 0.0, 'transcript': 0.0, 'overall': 100.0, 'advice': 'Focus on improving pronunciation (score: 0/100)', 'is_correct': True, 'guess_timestamp': 1764230550605, 'user_text': ''}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=100.0, correct=True DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter: Got response DEBUG gemini_adapter: Response type: DEBUG gemini_adapter: Response has candidates: True DEBUG gemini_adapter: First candidate type: DEBUG gemini_adapter: finish_reason: MAX_TOKENS DEBUG get_text: Response type: DEBUG get_text: Has candidates: True DEBUG get_text: Candidate has content: True DEBUG get_text: finish_reason: MAX_TOKENS DEBUG get_text: Content has parts: True WARNING get_text: No parts in content INFO: 127.0.0.1:57332 - "POST /api/analyze-voice HTTP/1.1" 200 OK INFO: 127.0.0.1:57336 - "GET /api/dashboard HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=85b92e03-86fb-4b44-afdc-e845571d1f06 INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 160.2KB → 58.2KB (63.7% reduction) in 248.7ms INFO:__main__:⏱️ Base64 encoding: 249.2ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.4ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 85b92e03-86fb-4b44-afdc-e845571d1f06: Attempt 3/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 5379.0ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'pitch': 100.0, 'rhythm': 100.0, 'energy': 100.0, 'pronunciation': 0, 'transcript': 0, 'overall': 100.0, 'user_text': ''} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" ERROR:__main__:Gemini response error: AI response had no content. Please try again. INFO:__main__:⏱️ Gemini hint generation: 3321.7ms INFO:__main__:Generated hints: {'type': 'advice', 'answer': [{'text': 'Focus on improving pronunciation (score: 0/100)', 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 8951.1ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '85b92e03-86fb-4b44-afdc-e845571d1f06', 'puzzle_number': 3, 'pitch': 100.0, 'rhythm': 100.0, 'energy': 100.0, 'pronunciation': 0.0, 'transcript': 0.0, 'overall': 100.0, 'advice': 'Focus on improving pronunciation (score: 0/100)', 'is_correct': True, 'guess_timestamp': 1764230568279, 'user_text': ''}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=100.0, correct=True DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter: Got response DEBUG gemini_adapter: Response type: DEBUG gemini_adapter: Response has candidates: True DEBUG gemini_adapter: First candidate type: DEBUG gemini_adapter: finish_reason: MAX_TOKENS DEBUG get_text: Response type: DEBUG get_text: Has candidates: True DEBUG get_text: Candidate has content: True DEBUG get_text: finish_reason: MAX_TOKENS DEBUG get_text: Content has parts: True WARNING get_text: No parts in content INFO: 127.0.0.1:44184 - "POST /api/analyze-voice HTTP/1.1" 200 OK INFO: 127.0.0.1:37420 - "GET /api/dashboard HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=85b92e03-86fb-4b44-afdc-e845571d1f06 INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 67.2KB → 24.5KB (63.6% reduction) in 208.3ms INFO:__main__:⏱️ Base64 encoding: 208.6ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.2ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 85b92e03-86fb-4b44-afdc-e845571d1f06: Attempt 4/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 3917.4ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'pitch': 100.0, 'rhythm': 100.0, 'energy': 100.0, 'pronunciation': 0, 'transcript': 0, 'overall': 100.0, 'user_text': ''} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" INFO:__main__:✓ Generated fresh hint for attempt 4, category song INFO:__main__:⏱️ Gemini hint generation: 5050.0ms INFO:__main__:Generated hints: {'type': 'hint', 'answer': [{'text': "This incredibly popular children's song became a global viral sensation.", 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 9176.9ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '85b92e03-86fb-4b44-afdc-e845571d1f06', 'puzzle_number': 3, 'pitch': 100.0, 'rhythm': 100.0, 'energy': 100.0, 'pronunciation': 0.0, 'transcript': 0.0, 'overall': 100.0, 'advice': "This incredibly popular children's song became a global viral sensation.", 'is_correct': True, 'guess_timestamp': 1764230626253, 'user_text': ''}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=100.0, correct=True DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter: Got response DEBUG gemini_adapter: Response type: DEBUG gemini_adapter: Response has candidates: True DEBUG gemini_adapter: First candidate type: DEBUG gemini_adapter: finish_reason: STOP DEBUG get_text: Response type: DEBUG get_text: Has candidates: True DEBUG get_text: Candidate has content: True DEBUG get_text: finish_reason: STOP DEBUG get_text: Content has parts: True DEBUG get_text: Part 0 has text: True DEBUG get_text: Extracted text length: 158, has_function_call: False INFO: 127.0.0.1:49858 - "POST /api/analyze-voice HTTP/1.1" 200 OK INFO: 127.0.0.1:50648 - "GET /api/dashboard HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=85b92e03-86fb-4b44-afdc-e845571d1f06 INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 625.4KB → 227.0KB (63.7% reduction) in 349.6ms INFO:__main__:⏱️ Base64 encoding: 350.2ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.2ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 85b92e03-86fb-4b44-afdc-e845571d1f06: Attempt 5/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 7094.3ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'pitch': 100.0, 'rhythm': 100.0, 'energy': 100.0, 'pronunciation': 0, 'transcript': 0, 'overall': 100.0, 'user_text': ''} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" ERROR:__main__:Gemini response error: AI response had no content. Please try again. INFO:__main__:⏱️ Gemini hint generation: 4290.5ms INFO:__main__:Generated hints: {'type': 'advice', 'answer': [{'text': 'Focus on improving pronunciation (score: 0/100)', 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 11735.6ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '85b92e03-86fb-4b44-afdc-e845571d1f06', 'puzzle_number': 3, 'pitch': 100.0, 'rhythm': 100.0, 'energy': 100.0, 'pronunciation': 0.0, 'transcript': 0.0, 'overall': 100.0, 'advice': 'Focus on improving pronunciation (score: 0/100)', 'is_correct': True, 'guess_timestamp': 1764230697630, 'user_text': ''}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=100.0, correct=True DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter: Got response DEBUG gemini_adapter: Response type: DEBUG gemini_adapter: Response has candidates: True DEBUG gemini_adapter: First candidate type: DEBUG gemini_adapter: finish_reason: MAX_TOKENS DEBUG get_text: Response type: DEBUG get_text: Has candidates: True DEBUG get_text: Candidate has content: True DEBUG get_text: finish_reason: MAX_TOKENS DEBUG get_text: Content has parts: True WARNING get_text: No parts in content INFO: 127.0.0.1:42760 - "POST /api/analyze-voice HTTP/1.1" 200 OK INFO: 127.0.0.1:38540 - "GET /api/dashboard HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=85b92e03-86fb-4b44-afdc-e845571d1f06 INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 475.5KB → 73.0KB (84.7% reduction) in 328.1ms INFO:__main__:⏱️ Base64 encoding: 328.4ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.2ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 85b92e03-86fb-4b44-afdc-e845571d1f06: Attempt 6/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 3741.8ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'pitch': 100.0, 'rhythm': 100.0, 'energy': 100.0, 'pronunciation': 10.0, 'transcript': 5.0, 'overall': 16.8, 'user_text': 'Hello?'} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" ERROR:__main__:Gemini response error: AI response had no content. Please try again. INFO:__main__:⏱️ Gemini hint generation: 3568.2ms INFO:__main__:Generated hints: {'type': 'advice', 'answer': [{'text': 'Focus on improving pronunciation (score: 10/100)', 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 7639.1ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '85b92e03-86fb-4b44-afdc-e845571d1f06', 'puzzle_number': 3, 'pitch': 100.0, 'rhythm': 100.0, 'energy': 100.0, 'pronunciation': 10.0, 'transcript': 5.0, 'overall': 16.8, 'advice': 'Focus on improving pronunciation (score: 10/100)', 'is_correct': False, 'guess_timestamp': 1764230726184, 'user_text': 'Hello?'}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=16.8, correct=False DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter: Got response DEBUG gemini_adapter: Response type: DEBUG gemini_adapter: Response has candidates: True DEBUG gemini_adapter: First candidate type: DEBUG gemini_adapter: finish_reason: MAX_TOKENS DEBUG get_text: Response type: DEBUG get_text: Has candidates: True DEBUG get_text: Candidate has content: True DEBUG get_text: finish_reason: MAX_TOKENS DEBUG get_text: Content has parts: True WARNING get_text: No parts in content INFO: 127.0.0.1:44692 - "POST /api/analyze-voice HTTP/1.1" 200 OK INFO: 127.0.0.1:35682 - "GET /api/dashboard HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=74f86fba-88a7-4f12-b57e-a73c398fc60d INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 330.8KB → 120.1KB (63.7% reduction) in 279.5ms INFO:__main__:⏱️ Base64 encoding: 280.0ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.3ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 74f86fba-88a7-4f12-b57e-a73c398fc60d: Attempt 1/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 1967.4ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'error': "(, 'The app is stopped or disabled', None)"} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" INFO:__main__:✓ Generated fresh hint for attempt 1, category song INFO:__main__:⏱️ Gemini hint generation: 3203.5ms INFO:__main__:Generated hints: {'type': 'hint', 'answer': [{'text': 'This sequence is known for its repetitive nature.', 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 5451.8ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '74f86fba-88a7-4f12-b57e-a73c398fc60d', 'puzzle_number': 3, 'pitch': 0.0, 'rhythm': 0.0, 'energy': 0.0, 'pronunciation': 0.0, 'transcript': 0.0, 'overall': 0.0, 'advice': 'This sequence is known for its repetitive nature.', 'is_correct': False, 'guess_timestamp': 1764231113169, 'user_text': ''}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=0.0, correct=False DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter: Got response DEBUG gemini_adapter: Response type: DEBUG gemini_adapter: Response has candidates: True DEBUG gemini_adapter: First candidate type: DEBUG gemini_adapter: finish_reason: STOP DEBUG get_text: Response type: DEBUG get_text: Has candidates: True DEBUG get_text: Candidate has content: True DEBUG get_text: finish_reason: STOP DEBUG get_text: Content has parts: True DEBUG get_text: Part 0 has text: True DEBUG get_text: Extracted text length: 103, has_function_call: False INFO: 127.0.0.1:35364 - "POST /api/analyze-voice HTTP/1.1" 200 OK INFO: 127.0.0.1:37218 - "GET /api/dashboard HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=9d1a88f9-93cb-453e-831d-003ca5506dcb INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 480.7KB → 174.5KB (63.7% reduction) in 327.9ms INFO:__main__:⏱️ Base64 encoding: 328.7ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.2ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 9d1a88f9-93cb-453e-831d-003ca5506dcb: Attempt 1/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 1994.3ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'error': "(, 'The app is stopped or disabled', None)"} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" ERROR:__main__:Gemini response error: AI response had no content. Please try again. ERROR:__main__:Hint generation error: list index out of range INFO:__main__:⏱️ Gemini hint generation: 4104.0ms INFO:__main__:Generated hints: {'type': 'advice', 'answer': [{'text': 'Keep practicing! Focus on your pronunciation.', 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 6427.8ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '9d1a88f9-93cb-453e-831d-003ca5506dcb', 'puzzle_number': 3, 'pitch': 0.0, 'rhythm': 0.0, 'energy': 0.0, 'pronunciation': 0.0, 'transcript': 0.0, 'overall': 0.0, 'advice': 'Keep practicing! Focus on your pronunciation.', 'is_correct': False, 'guess_timestamp': 1764231387226, 'user_text': ''}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=0.0, correct=False DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter: Got response DEBUG gemini_adapter: Response type: DEBUG gemini_adapter: Response has candidates: True DEBUG gemini_adapter: First candidate type: DEBUG gemini_adapter: finish_reason: MAX_TOKENS DEBUG get_text: Response type: DEBUG get_text: Has candidates: True DEBUG get_text: Candidate has content: True DEBUG get_text: finish_reason: MAX_TOKENS DEBUG get_text: Content has parts: True WARNING get_text: No parts in content INFO: 127.0.0.1:33432 - "POST /api/analyze-voice HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=9d1a88f9-93cb-453e-831d-003ca5506dcb INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 485.8KB → 117.0KB (75.9% reduction) in 331.2ms INFO:__main__:⏱️ Base64 encoding: 331.6ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.2ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 9d1a88f9-93cb-453e-831d-003ca5506dcb: Attempt 2/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 3757.4ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'error': "(, 'The app is stopped or disabled', None)"} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" INFO:__main__:✓ Generated fresh hint for attempt 2, category song INFO:__main__:⏱️ Gemini hint generation: 3068.0ms INFO:__main__:Generated hints: {'type': 'hint', 'answer': [{'text': 'This popular song often features a very simple, repetitive phrase.', 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 7157.7ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '9d1a88f9-93cb-453e-831d-003ca5506dcb', 'puzzle_number': 3, 'pitch': 0.0, 'rhythm': 0.0, 'energy': 0.0, 'pronunciation': 0.0, 'transcript': 0.0, 'overall': 0.0, 'advice': 'This popular song often features a very simple, repetitive phrase.', 'is_correct': False, 'guess_timestamp': 1764231410080, 'user_text': ''}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=0.0, correct=False DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter: Got response DEBUG gemini_adapter: Response type: DEBUG gemini_adapter: Response has candidates: True DEBUG gemini_adapter: First candidate type: DEBUG gemini_adapter: finish_reason: STOP DEBUG get_text: Response type: DEBUG get_text: Has candidates: True DEBUG get_text: Candidate has content: True DEBUG get_text: finish_reason: STOP DEBUG get_text: Content has parts: True DEBUG get_text: Part 0 has text: True DEBUG get_text: Extracted text length: 120, has_function_call: False INFO: 127.0.0.1:59000 - "POST /api/analyze-voice HTTP/1.1" 200 OK INFO: 127.0.0.1:55086 - "GET /api/dashboard HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=72fbe861-5008-48a4-ad59-a4202902d27d INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 191.3KB → 69.5KB (63.7% reduction) in 257.5ms INFO:__main__:⏱️ Base64 encoding: 257.8ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.3ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 72fbe861-5008-48a4-ad59-a4202902d27d: Attempt 1/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 7023.4ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'error': "(, 'The app is stopped or disabled', None)"} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" INFO:__main__:✓ Generated fresh hint for attempt 1, category song INFO:__main__:⏱️ Gemini hint generation: 4314.1ms INFO:__main__:Generated hints: {'type': 'hint', 'answer': [{'text': 'This very memorable phrase is often repeated and has a well-known associated motion.', 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 11596.0ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '72fbe861-5008-48a4-ad59-a4202902d27d', 'puzzle_number': 3, 'pitch': 0.0, 'rhythm': 0.0, 'energy': 0.0, 'pronunciation': 0.0, 'transcript': 0.0, 'overall': 0.0, 'advice': 'This very memorable phrase is often repeated and has a well-known associated motion.', 'is_correct': False, 'guess_timestamp': 1764231927203, 'user_text': ''}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=0.0, correct=False DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter: Got response DEBUG gemini_adapter: Response type: DEBUG gemini_adapter: Response has candidates: True DEBUG gemini_adapter: First candidate type: DEBUG gemini_adapter: finish_reason: STOP DEBUG get_text: Response type: DEBUG get_text: Has candidates: True DEBUG get_text: Candidate has content: True DEBUG get_text: finish_reason: STOP DEBUG get_text: Content has parts: True DEBUG get_text: Part 0 has text: True DEBUG get_text: Extracted text length: 138, has_function_call: False INFO: 127.0.0.1:36742 - "POST /api/analyze-voice HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=72fbe861-5008-48a4-ad59-a4202902d27d INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 191.3KB → 69.5KB (63.7% reduction) in 258.6ms INFO:__main__:⏱️ Base64 encoding: 258.8ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.2ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 72fbe861-5008-48a4-ad59-a4202902d27d: Attempt 2/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 1667.1ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'error': "(, 'The app is stopped or disabled', None)"} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" INFO:__main__:✓ Generated fresh hint for attempt 2, category song INFO:__main__:⏱️ Gemini hint generation: 3533.3ms INFO:__main__:Generated hints: {'type': 'hint', 'answer': [{'text': 'You might recognize this catchy song from a younger audience.', 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 5459.8ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '72fbe861-5008-48a4-ad59-a4202902d27d', 'puzzle_number': 3, 'pitch': 0.0, 'rhythm': 0.0, 'energy': 0.0, 'pronunciation': 0.0, 'transcript': 0.0, 'overall': 0.0, 'advice': 'You might recognize this catchy song from a younger audience.', 'is_correct': False, 'guess_timestamp': 1764231935740, 'user_text': ''}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=0.0, correct=False DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter: Got response DEBUG gemini_adapter: Response type: DEBUG gemini_adapter: Response has candidates: True DEBUG gemini_adapter: First candidate type: DEBUG gemini_adapter: finish_reason: STOP DEBUG get_text: Response type: DEBUG get_text: Has candidates: True DEBUG get_text: Candidate has content: True DEBUG get_text: finish_reason: STOP DEBUG get_text: Content has parts: True DEBUG get_text: Part 0 has text: True DEBUG get_text: Extracted text length: 115, has_function_call: False INFO: 127.0.0.1:37742 - "POST /api/analyze-voice HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=72fbe861-5008-48a4-ad59-a4202902d27d INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 191.3KB → 69.5KB (63.7% reduction) in 260.0ms INFO:__main__:⏱️ Base64 encoding: 260.3ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.2ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 72fbe861-5008-48a4-ad59-a4202902d27d: Attempt 3/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 1431.7ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'error': "(, 'The app is stopped or disabled', None)"} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" INFO:__main__:✓ Generated fresh hint for attempt 3, category song INFO:__main__:⏱️ Gemini hint generation: 4401.2ms INFO:__main__:Generated hints: {'type': 'hint', 'answer': [{'text': 'This highly repetitive and catchy song is extremely popular with young children and often features a specific family of sea creatures.', 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 6093.8ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '72fbe861-5008-48a4-ad59-a4202902d27d', 'puzzle_number': 3, 'pitch': 0.0, 'rhythm': 0.0, 'energy': 0.0, 'pronunciation': 0.0, 'transcript': 0.0, 'overall': 0.0, 'advice': 'This highly repetitive and catchy song is extremely popular with young children and often features a specific family of sea creatures.', 'is_correct': False, 'guess_timestamp': 1764231945075, 'user_text': ''}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=0.0, correct=False DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter: Got response DEBUG gemini_adapter: Response type: DEBUG gemini_adapter: Response has candidates: True DEBUG gemini_adapter: First candidate type: DEBUG gemini_adapter: finish_reason: STOP DEBUG get_text: Response type: DEBUG get_text: Has candidates: True DEBUG get_text: Candidate has content: True DEBUG get_text: finish_reason: STOP DEBUG get_text: Content has parts: True DEBUG get_text: Part 0 has text: True DEBUG get_text: Extracted text length: 188, has_function_call: False INFO: 127.0.0.1:37628 - "POST /api/analyze-voice HTTP/1.1" 200 OK INFO: 127.0.0.1:50834 - "GET /api/dashboard HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=373da787-861c-4ed5-83d1-e31132ab82f2 INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 98.2KB → 35.7KB (63.7% reduction) in 208.8ms INFO:__main__:⏱️ Base64 encoding: 209.2ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.2ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 373da787-861c-4ed5-83d1-e31132ab82f2: Attempt 1/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 2056.2ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'error': "(, 'The app is stopped or disabled', None)"} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" ERROR:__main__:Hint generation error: Unterminated string starting at: line 6 column 7 (char 122) INFO:__main__:⏱️ Gemini hint generation: 4018.0ms INFO:__main__:Generated hints: {'type': 'advice', 'answer': [{'text': 'Keep practicing! Focus on your pronunciation.', 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 6284.3ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '373da787-861c-4ed5-83d1-e31132ab82f2', 'puzzle_number': 3, 'pitch': 0.0, 'rhythm': 0.0, 'energy': 0.0, 'pronunciation': 0.0, 'transcript': 0.0, 'overall': 0.0, 'advice': 'Keep practicing! Focus on your pronunciation.', 'is_correct': False, 'guess_timestamp': 1764232282995, 'user_text': ''}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=0.0, correct=False DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter: Got response DEBUG gemini_adapter: Response type: DEBUG gemini_adapter: Response has candidates: True DEBUG gemini_adapter: First candidate type: DEBUG gemini_adapter: finish_reason: MAX_TOKENS DEBUG get_text: Response type: DEBUG get_text: Has candidates: True DEBUG get_text: Candidate has content: True DEBUG get_text: finish_reason: MAX_TOKENS DEBUG get_text: Content has parts: True DEBUG get_text: Part 0 has text: True DEBUG get_text: Extracted text length: 127, has_function_call: False INFO: 127.0.0.1:52996 - "POST /api/analyze-voice HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=373da787-861c-4ed5-83d1-e31132ab82f2 INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 98.2KB → 35.7KB (63.7% reduction) in 200.7ms INFO:__main__:⏱️ Base64 encoding: 200.9ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.2ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 373da787-861c-4ed5-83d1-e31132ab82f2: Attempt 2/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 3575.9ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'error': "(, 'The app is stopped or disabled', None)"} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 503 Service Unavailable" Traceback (most recent call last): File "/home/samuel/elevenlabs/gradio/gemini_adapter.py", line 157, in call_gemini_with_tools response = client.models.generate_content( File "/home/samuel/.local/lib/python3.10/site-packages/google/genai/models.py", line 5218, in generate_content response = self._generate_content( File "/home/samuel/.local/lib/python3.10/site-packages/google/genai/models.py", line 4000, in _generate_content response = self._api_client.request( File "/home/samuel/.local/lib/python3.10/site-packages/google/genai/_api_client.py", line 1388, in request response = self._request(http_request, http_options, stream=False) File "/home/samuel/.local/lib/python3.10/site-packages/google/genai/_api_client.py", line 1224, in _request return self._retry(self._request_once, http_request, stream) # type: ignore[no-any-return] File "/home/samuel/.local/lib/python3.10/site-packages/tenacity/__init__.py", line 477, in __call__ do = self.iter(retry_state=retry_state) File "/home/samuel/.local/lib/python3.10/site-packages/tenacity/__init__.py", line 378, in iter result = action(retry_state) File "/home/samuel/.local/lib/python3.10/site-packages/tenacity/__init__.py", line 420, in exc_check raise retry_exc.reraise() File "/home/samuel/.local/lib/python3.10/site-packages/tenacity/__init__.py", line 187, in reraise raise self.last_attempt.result() File "/usr/lib/python3.10/concurrent/futures/_base.py", line 451, in result return self.__get_result() File "/usr/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result raise self._exception File "/home/samuel/.local/lib/python3.10/site-packages/tenacity/__init__.py", line 480, in __call__ result = fn(*args, **kwargs) File "/home/samuel/.local/lib/python3.10/site-packages/google/genai/_api_client.py", line 1201, in _request_once errors.APIError.raise_for_response(response) File "/home/samuel/.local/lib/python3.10/site-packages/google/genai/errors.py", line 106, in raise_for_response cls.raise_error(response.status_code, response_json, response) File "/home/samuel/.local/lib/python3.10/site-packages/google/genai/errors.py", line 133, in raise_error raise ServerError(status_code, response_json, response) google.genai.errors.ServerError: 503 UNAVAILABLE. {'error': {'code': 503, 'message': 'The model is overloaded. Please try again later.', 'status': 'UNAVAILABLE'}} ERROR:__main__:Hint generation error: 503 UNAVAILABLE. {'error': {'code': 503, 'message': 'The model is overloaded. Please try again later.', 'status': 'UNAVAILABLE'}} INFO:__main__:⏱️ Gemini hint generation: 1907.5ms INFO:__main__:Generated hints: {'type': 'advice', 'answer': [{'text': 'Keep practicing! Focus on your pronunciation.', 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 5685.0ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '373da787-861c-4ed5-83d1-e31132ab82f2', 'puzzle_number': 3, 'pitch': 0.0, 'rhythm': 0.0, 'energy': 0.0, 'pronunciation': 0.0, 'transcript': 0.0, 'overall': 0.0, 'advice': 'Keep practicing! Focus on your pronunciation.', 'is_correct': False, 'guess_timestamp': 1764232299134, 'user_text': ''}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=0.0, correct=False DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter ERROR: ServerError: 503 UNAVAILABLE. {'error': {'code': 503, 'message': 'The model is overloaded. Please try again later.', 'status': 'UNAVAILABLE'}} INFO: 127.0.0.1:51248 - "POST /api/analyze-voice HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=373da787-861c-4ed5-83d1-e31132ab82f2 INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 98.2KB → 35.7KB (63.7% reduction) in 203.0ms INFO:__main__:⏱️ Base64 encoding: 203.2ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.2ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 373da787-861c-4ed5-83d1-e31132ab82f2: Attempt 3/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 2368.2ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'error': "(, 'The app is stopped or disabled', None)"} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" INFO:__main__:✓ Generated fresh hint for attempt 3, category song INFO:__main__:⏱️ Gemini hint generation: 3031.1ms INFO:__main__:Generated hints: {'type': 'hint', 'answer': [{'text': "This popular children's song features an animal from the ocean.", 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 5603.1ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '373da787-861c-4ed5-83d1-e31132ab82f2', 'puzzle_number': 3, 'pitch': 0.0, 'rhythm': 0.0, 'energy': 0.0, 'pronunciation': 0.0, 'transcript': 0.0, 'overall': 0.0, 'advice': "This popular children's song features an animal from the ocean.", 'is_correct': False, 'guess_timestamp': 1764232307309, 'user_text': ''}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=0.0, correct=False DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter: Got response DEBUG gemini_adapter: Response type: DEBUG gemini_adapter: Response has candidates: True DEBUG gemini_adapter: First candidate type: DEBUG gemini_adapter: finish_reason: STOP DEBUG get_text: Response type: DEBUG get_text: Has candidates: True DEBUG get_text: Candidate has content: True DEBUG get_text: finish_reason: STOP DEBUG get_text: Content has parts: True DEBUG get_text: Part 0 has text: True DEBUG get_text: Extracted text length: 117, has_function_call: False INFO: 127.0.0.1:51948 - "POST /api/analyze-voice HTTP/1.1" 200 OK INFO: 127.0.0.1:45728 - "GET /api/dashboard HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=54300d79-af98-4179-a0be-957eb0635814 INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 227.4KB → 82.6KB (63.7% reduction) in 259.2ms INFO:__main__:⏱️ Base64 encoding: 259.5ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.2ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 54300d79-af98-4179-a0be-957eb0635814: Attempt 1/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 6348.2ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'error': "(, 'The app is stopped or disabled', None)"} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" ERROR:__main__:Gemini response error: AI response had no content. Please try again. ERROR:__main__:Hint generation error: list index out of range INFO:__main__:⏱️ Gemini hint generation: 3605.7ms INFO:__main__:Generated hints: {'type': 'advice', 'answer': [{'text': 'Keep practicing! Focus on your pronunciation.', 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 10214.1ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '54300d79-af98-4179-a0be-957eb0635814', 'puzzle_number': 3, 'pitch': 0.0, 'rhythm': 0.0, 'energy': 0.0, 'pronunciation': 0.0, 'transcript': 0.0, 'overall': 0.0, 'advice': 'Keep practicing! Focus on your pronunciation.', 'is_correct': False, 'guess_timestamp': 1764232610975, 'user_text': ''}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=0.0, correct=False DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter: Got response DEBUG gemini_adapter: Response type: DEBUG gemini_adapter: Response has candidates: True DEBUG gemini_adapter: First candidate type: DEBUG gemini_adapter: finish_reason: MAX_TOKENS DEBUG get_text: Response type: DEBUG get_text: Has candidates: True DEBUG get_text: Candidate has content: True DEBUG get_text: finish_reason: MAX_TOKENS DEBUG get_text: Content has parts: True WARNING get_text: No parts in content INFO: 127.0.0.1:49630 - "POST /api/analyze-voice HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=54300d79-af98-4179-a0be-957eb0635814 INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 227.4KB → 82.6KB (63.7% reduction) in 261.8ms INFO:__main__:⏱️ Base64 encoding: 262.2ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.2ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 54300d79-af98-4179-a0be-957eb0635814: Attempt 2/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 1919.2ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'error': "(, 'The app is stopped or disabled', None)"} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" INFO:__main__:✓ Generated fresh hint for attempt 2, category song INFO:__main__:⏱️ Gemini hint generation: 2931.1ms INFO:__main__:Generated hints: {'type': 'hint', 'answer': [{'text': 'This is a very catchy and repetitive song, often associated with a younger audience.', 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 5113.0ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '54300d79-af98-4179-a0be-957eb0635814', 'puzzle_number': 3, 'pitch': 0.0, 'rhythm': 0.0, 'energy': 0.0, 'pronunciation': 0.0, 'transcript': 0.0, 'overall': 0.0, 'advice': 'This is a very catchy and repetitive song, often associated with a younger audience.', 'is_correct': False, 'guess_timestamp': 1764232620411, 'user_text': ''}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=0.0, correct=False DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter: Got response DEBUG gemini_adapter: Response type: DEBUG gemini_adapter: Response has candidates: True DEBUG gemini_adapter: First candidate type: DEBUG gemini_adapter: finish_reason: STOP DEBUG get_text: Response type: DEBUG get_text: Has candidates: True DEBUG get_text: Candidate has content: True DEBUG get_text: finish_reason: STOP DEBUG get_text: Content has parts: True DEBUG get_text: Part 0 has text: True DEBUG get_text: Extracted text length: 138, has_function_call: False INFO: 127.0.0.1:51066 - "POST /api/analyze-voice HTTP/1.1" 200 OK INFO:__main__:Received request: date=2025-11-27, session_id=54300d79-af98-4179-a0be-957eb0635814 INFO:__main__:Found puzzle: 3 - song INFO:__main__:🗜️ Audio compression: 227.4KB → 82.6KB (63.7% reduction) in 271.8ms INFO:__main__:⏱️ Base64 encoding: 272.1ms WARNING:__main__:⚠ No reference audio found for: reference_audio/song/babyshark.mp3 INFO:__main__:⏱️ Reference audio load: 0.2ms WARNING:__main__:⚠ No reference audio available, using user audio INFO:__main__:Session 54300d79-af98-4179-a0be-957eb0635814: Attempt 3/6 INFO:__main__:Calling VoiceKit MCP (attempt 1/3)... INFO:httpx:HTTP Request: POST https://mcp-1st-birthday-voicekit.hf.space/gradio_api/mcp/messages/?session_id=2a62a924b1b44162a71bd1cb3832b2eb "HTTP/1.1 202 Accepted" INFO:__main__:✓ VoiceKit MCP call successful INFO:__main__:⏱️ VoiceKit MCP call: 2405.6ms INFO:__main__:✓ Fresh VoiceKit analysis completed INFO:__main__:VoiceKit scores: {'error': "(, 'The app is stopped or disabled', None)"} INFO:google_genai.models:AFC is enabled with max remote calls: 10. INFO:httpx:HTTP Request: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent "HTTP/1.1 200 OK" INFO:__main__:✓ Generated fresh hint for attempt 3, category song INFO:__main__:⏱️ Gemini hint generation: 2792.0ms INFO:__main__:Generated hints: {'type': 'hint', 'answer': [{'text': "This incredibly popular children's song features a very repetitive and recognizable chorus.", 'path': ''}]} INFO:__main__:⏱️ TOTAL REQUEST TIME: 5470.2ms ERROR:__main__:Failed to save guess record: (psycopg2.errors.UndefinedColumn) column "user_text" of relation "guess_records" does not exist LINE 4: ...pt, overall, advice, is_correct, guess_timestamp, user_text) ^ [SQL: INSERT INTO guess_records (session_id, puzzle_number, pitch, rhythm, energy, pronunciation, transcript, overall, advice, is_correct, guess_timestamp, user_text) VALUES (%(session_id)s, %(puzzle_number)s, %(pitch)s, %(rhythm)s, %(energy)s, %(pronunciation)s, %(transcript)s, %(overall)s, %(advice)s, %(is_correct)s, %(guess_timestamp)s, %(user_text)s) ] [parameters: {'session_id': '54300d79-af98-4179-a0be-957eb0635814', 'puzzle_number': 3, 'pitch': 0.0, 'rhythm': 0.0, 'energy': 0.0, 'pronunciation': 0.0, 'transcript': 0.0, 'overall': 0.0, 'advice': "This incredibly popular children's song features a very repetitive and recognizable chorus.", 'is_correct': False, 'guess_timestamp': 1764232629423, 'user_text': ''}] (Background on this error at: https://sqlalche.me/e/20/f405) INFO:__main__:Analysis complete: category=song, overall=0.0, correct=False DEBUG gemini_adapter: Converted 1 messages to 1 Contents DEBUG gemini_adapter: Tools: 0 DEBUG gemini_adapter: Calling Gemini API... DEBUG gemini_adapter: Got response DEBUG gemini_adapter: Response type: DEBUG gemini_adapter: Response has candidates: True DEBUG gemini_adapter: First candidate type: DEBUG gemini_adapter: finish_reason: STOP DEBUG get_text: Response type: DEBUG get_text: Has candidates: True DEBUG get_text: Candidate has content: True DEBUG get_text: finish_reason: STOP DEBUG get_text: Content has parts: True DEBUG get_text: Part 0 has text: True DEBUG get_text: Extracted text length: 145, has_function_call: False INFO: 127.0.0.1:55780 - "POST /api/analyze-voice HTTP/1.1" 200 OK ERROR:mcp.client.sse:Error in sse_reader Traceback (most recent call last): File "/home/samuel/.local/lib/python3.10/site-packages/httpx/_transports/default.py", line 101, in map_httpcore_exceptions yield File "/home/samuel/.local/lib/python3.10/site-packages/httpx/_transports/default.py", line 271, in __aiter__ async for part in self._httpcore_stream: File "/home/samuel/.local/lib/python3.10/site-packages/httpcore/_async/connection_pool.py", line 407, in __aiter__ raise exc from None File "/home/samuel/.local/lib/python3.10/site-packages/httpcore/_async/connection_pool.py", line 403, in __aiter__ async for part in self._stream: File "/home/samuel/.local/lib/python3.10/site-packages/httpcore/_async/http11.py", line 342, in __aiter__ raise exc File "/home/samuel/.local/lib/python3.10/site-packages/httpcore/_async/http11.py", line 334, in __aiter__ async for chunk in self._connection._receive_response_body(**kwargs): File "/home/samuel/.local/lib/python3.10/site-packages/httpcore/_async/http11.py", line 203, in _receive_response_body event = await self._receive_event(timeout=timeout) File "/home/samuel/.local/lib/python3.10/site-packages/httpcore/_async/http11.py", line 213, in _receive_event with map_exceptions({h11.RemoteProtocolError: RemoteProtocolError}): File "/usr/lib/python3.10/contextlib.py", line 153, in __exit__ self.gen.throw(typ, value, traceback) File "/home/samuel/.local/lib/python3.10/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions raise to_exc(exc) from exc httpcore.RemoteProtocolError: peer closed connection without sending complete message body (incomplete chunked read) The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/home/samuel/.local/lib/python3.10/site-packages/mcp/client/sse.py", line 73, in sse_reader async for sse in event_source.aiter_sse(): # pragma: no branch File "/home/samuel/.local/lib/python3.10/site-packages/httpx_sse/_api.py", line 42, in aiter_sse async for line in lines: File "/home/samuel/.local/lib/python3.10/site-packages/httpx_sse/_api.py", line 80, in _aiter_sse_lines async for text in response.aiter_text(): File "/home/samuel/.local/lib/python3.10/site-packages/httpx/_models.py", line 1018, in aiter_text async for byte_content in self.aiter_bytes(): File "/home/samuel/.local/lib/python3.10/site-packages/httpx/_models.py", line 997, in aiter_bytes async for raw_bytes in self.aiter_raw(): File "/home/samuel/.local/lib/python3.10/site-packages/httpx/_models.py", line 1055, in aiter_raw async for raw_stream_bytes in self.stream: File "/home/samuel/.local/lib/python3.10/site-packages/httpx/_client.py", line 176, in __aiter__ async for chunk in self._stream: File "/home/samuel/.local/lib/python3.10/site-packages/httpx/_transports/default.py", line 270, in __aiter__ with map_httpcore_exceptions(): File "/usr/lib/python3.10/contextlib.py", line 153, in __exit__ self.gen.throw(typ, value, traceback) File "/home/samuel/.local/lib/python3.10/site-packages/httpx/_transports/default.py", line 118, in map_httpcore_exceptions raise mapped_exc(message) from exc httpx.RemoteProtocolError: peer closed connection without sending complete message body (incomplete chunked read)