github / github/app

Voice dictation gets stuck on "Voice mode is busy" and only an app restart clears it

未关闭
#2,923 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
没有语言数据
星标
2.1k
派生
153
PR 合并指标
30 天内没有已合并 PR

描述

Voice dictation stops working after I switch away from the app while a recording is running. Pressing the shortcut afterwards shows a toast that reads "Voice mode is busy" and "Another voice recording is already in progress. Try again in a moment." The mic button looks idle, and there is no control anywhere to stop the recording the app claims is running. Restarting the app is the only recovery I have found.

The toast is wrong. No recording is in progress. The app is refusing to start one.

### What the logs show

I hit the toast at about 21:01 UTC on 2026-08-17. In `~/.copilot/logs/github-app..log` there is not a single `github_app::voice::real` line between 18:00:00 and 21:09:50 UTC. The count is zero. The previous voice session had ended cleanly more than three hours earlier, and the next one started well afterwards:

```
2026-08-17T17:57:45.192769Z INFO github_app::voice::real: Starting voice transcription session model_alias=nemotron-speech-streaming-en-0.6b
2026-08-17T17:59:08.696735Z INFO ... Live voice transcription stream stopped session_id=99ef85e9-8e70-4ab3-8d38-34a15e09bd45

<-- toast appeared in here, around 21:01 UTC, with zero voice log lines in the whole gap -->

2026-08-17T21:09:50.187144Z INFO github_app::voice::real: Starting voice transcription session model_alias=nemotron-speech-streaming-en-0.6b
```

`start_voice_transcription_session` logs `Starting voice transcription session` as its first step, so the missing line means the frontend never called the backend at all. Neither piece of the toast text appears anywhere in `github.exe`. Both point to the same conclusion: the guard that raises this toast lives in the frontend, and the backend is idle and healthy the whole time.

Windows agrees that the microphone is free. Under `HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\microphone\NonPackaged`, the entry for `github.exe` records a real `LastUsedTimeStop` timestamp rather than `0`, so no capture is open.

So a frontend flag that tracks "a recording is in progress" is sticking in the on position, most likely when the composer loses focus or unmounts while recording, so the stop path never runs. Once it sticks, nothing in the UI clears it.

### Steps to reproduce

1. Turn off Settings, then Voice dictation, then Push to talk, so the shortcut toggles start and stop.
2. Press the shortcut to start recording.
3. Switch to another application, or to another session in the app, while it is still recording.
4. Come back and press the shortcut again.

The mic button shows as idle and the toast appears. It stays that way until the app restarts.

This does not happen on every attempt, but it has happened repeatedly over several days.

### What I expected

The shortcut should start a recording whenever no recording is actually running. Failing that, there should be a visible way to cancel a recording that the app believes is in progress.

### Environment

- GitHub Copilot app 1.1.10 on Windows
- WebView2 151.0.4129.86
- Voice model `nemotron-speech-streaming-en-0.6b`
- Push to talk off, shortcut `Ctrl+Space`
- Microphone is `Remote Audio`, redirected into a Remote Desktop session

### Suggestions

Two changes would help even without a full fix. Clear the frontend flag when the backend reports no active session, since the backend already knows. And give the toast an action that forces the state to reset, because today the only way out is restarting the whole app.

贡献指南

打开贡献指南

调研方向

首先跟踪发出“Voice mode is busy” toast 的前端 guard,然后在 composer 或 session 失去焦点时,将其状态与后端 start_voice_transcription_session 的日志进行比较。完成的标准是:录音期间切换到其他位置不再使快捷键保持阻塞,之后再次按下快捷键即可开始录音,而无需重启应用。

由索引模型根据 Issue 内容生成。

评估

领域
audio-video-rtc, desktop
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
活跃
描述清晰度
基本清楚
新手友好度
55/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。