listen(): make a missing-mic failure diagnosable
The error return interpolated only str(e), so exceptions that stringify to "" (e.g. asyncio.TimeoutError) surfaced as "VAD recording failed: " with no detail — exactly what a disconnected mic produced. Include the exception type and a fallback hint, and reword the no-audio PlaybackError toward "is a microphone connected?".
This commit is contained in:
parent
663dc91f5b
commit
da9be3a976
@ -331,7 +331,8 @@ async def record_audio_until_silence(
|
||||
|
||||
if not pcm_buf:
|
||||
raise PlaybackError(
|
||||
f"VAD recording captured no audio. Check source '{source or 'default'}'."
|
||||
f"No audio captured — is a microphone connected? "
|
||||
f"(source '{source or 'default'}' produced no samples)"
|
||||
)
|
||||
|
||||
# Write the accumulated PCM as a WAV file.
|
||||
|
||||
@ -895,7 +895,10 @@ async def listen(
|
||||
warmup_ms=warmup_ms,
|
||||
)
|
||||
except Exception as e:
|
||||
return {"error": f"VAD recording failed: {e}"}
|
||||
# Include the exception TYPE — some (e.g. asyncio.TimeoutError)
|
||||
# stringify to "", which otherwise hides a missing-mic failure.
|
||||
detail = str(e) or "no detail (often a disconnected/blocked mic)"
|
||||
return {"error": f"VAD recording failed ({type(e).__name__}): {detail}"}
|
||||
else:
|
||||
await ctx.info(f"Listening for {duration_seconds:.1f}s (source={source or 'default'})...")
|
||||
try:
|
||||
@ -904,7 +907,8 @@ async def listen(
|
||||
ready_tone=start_tone, warmup_ms=warmup_ms,
|
||||
)
|
||||
except Exception as e:
|
||||
return {"error": f"Recording failed: {e}"}
|
||||
detail = str(e) or "no detail (often a disconnected/blocked mic)"
|
||||
return {"error": f"Recording failed ({type(e).__name__}): {detail}"}
|
||||
|
||||
# "Capture done" tone AFTER pw-record stops. Audible "over and out"
|
||||
# so the user knows they can stop talking and the system is now
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user