github / github/copilot-cli

Temporarily mute system playback during voice capture

Aberta
#4,092 0 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
Shell
Estrelas
11.2k
Forks
1.9k
Merge médio
14h 16min
PRs com merge (30d)
6

Descrição

### Describe the feature or problem you'd like to solve

Temporarily mute system playback while voice capture is active. For example, I may be listening to Spotify when I press the keyboard shortcut to speak to Copilot. The speaker audio can interfere with microphone capture, so I would like playback muted immediately and restored when I finish talking.

### Proposed solution

Add an option such as **Mute system playback while listening**. When voice capture begins, Copilot should save the current output device and mute state, then mute the active playback device. When capture ends or is cancelled, it should restore the saved state rather than simply toggling mute.

This would improve transcription quality and prevent background audio from being captured without requiring users to manually pause or mute other applications.

### Example prompts or workflows

- While Spotify is playing, press the Copilot voice shortcut; playback is muted until voice capture ends.
- Cancel voice capture; playback immediately returns to its previous state.
- Start voice capture while the output is already muted; it remains muted afterward.
- Switch output devices, including a Bluetooth profile change, while capturing; Copilot safely restores the device state when capture ends.

### Additional context

This appears feasible on all three desktop platforms without elevated privileges:

| Platform | Feasibility | Native mechanism |
| --- | --- | --- |
| Windows | High | Core Audio [`IAudioEndpointVolume`](https://learn.microsoft.com/windows/win32/api/endpointvolume/nn-endpointvolume-iaudioendpointvolume) exposes `GetMute`/`SetMute` for the default render endpoint. |
| macOS | High | Core Audio exposes [`kAudioDevicePropertyMute`](https://developer.apple.com/documentation/coreaudio/kaudiodevicepropertymute), readable and writable through AudioObject property APIs on supported output devices. |
| Linux | Medium-high | PipeWire/WirePlumber supports muting the default sink (for example, [`wpctl set-mute @DEFAULT_AUDIO_SINK@`](https://pipewire.pages.freedesktop.org/wireplumber/tools/wpctl.html)); PulseAudio exposes [`pa_context_set_sink_mute_by_name`](https://freedesktop.org/software/pulseaudio/doxygen/introspect_8h.html). The implementation needs backend/runtime detection across distributions. |

Cross-platform implementation considerations:

- Snapshot the output device identity and prior mute state before changing it; do not implement this as a blind toggle.
- Restore state on every normal completion, cancellation, and error path. Because endpoint mute can survive a process crash, persist enough temporary state for best-effort recovery on the next launch.
- Handle default-device changes during capture, especially Bluetooth devices switching between high-quality playback and headset profiles when the microphone opens.
- Check whether the selected device actually exposes a writable mute control. If not, report that the option is unavailable rather than silently changing volume.
- Avoid overwriting a mute-state change the user makes manually while voice capture is active.

Muting all system playback would be simpler and more predictable than targeting individual applications such as Spotify. Per-application muting could be considered separately but varies more significantly by platform and audio backend.

Guia de contribuição

Abrir o guia de contribuição

Direção de pesquisa

Nenhum arquivo, teste ou ponto de entrada é especificado. Comece localizando os caminhos existentes de início, conclusão, cancelamento e erro da captura de voz e, em seguida, identifique as integrações de áudio da plataforma. O trabalho estará concluído quando um recurso opcional de mudo capturar o dispositivo de saída e o estado de mudo, restaurá-los com segurança em todos os caminhos de saída e lidar com alterações de dispositivo e controles de mudo indisponíveis.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Domínio
audio-video-rtc, desktop
Tipo de issue
Funcionalidade
Dificuldade
5/5
Tempo estimado
Mais de uma semana
Status de atividade
Pouca atividade
Clareza
Razoavelmente clara
Facilidade para iniciantes
30/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.