Windowsでスピーカーのミュートを解除できない|音声デバイスの再起動で直った事例
スピーカーアイコンに×が付き、押してもミュートを解除できない。この症状が、内蔵の音声デバイスと、音声関連のサービス(AudioEndpointBuilder など)をまとめて再起動したら直りました。
Windows Audio サービスだけの再起動では直りませんでした。ドライバーの入れ替えや PC の再起動はしていません。
この記事は1台のノートPCで起きた事例の記録です。根本原因は分かっていないので、どの PC でも直る方法としてではなく、一般的な確認で直らないときに試せることとして書いています。
症状と前提
- 対象: Windows ノートPCの内蔵スピーカー
- 症状: スピーカーに×が付いて音が出ない。×を押してもミュートが解除されない
- 経過: 以前にも同じ症状があり、数日は鳴っていたが再発した
- 音量・出力先の確認など、一般的な対処はすでに試していた
ここから先は、AIエージェントに PowerShell で状態を調べさせ、管理者権限が必要な操作だけ Windows の確認画面(UAC)で本人が承認する形で進めました。
見た目は「正常」だった
まず Windows 上の表示を確認しました。
Get-Serviceで見ると、音声関連のサービスは動いていたGet-PnpDeviceで見ると、スピーカーは認識されていて、エラーの表示(問題コード)もなかった
表示を見る限りでは、どこにも異常はありませんでした。
音量APIが「デバイスが削除された」を返した
次に、Windows の音量を操作する仕組み(Core Audio API の IAudioEndpointVolume)を PowerShell から直接呼び出し、戻り値を確認しました。
- ミュート状態の読み取り(
GetMute)は成功し、「ミュート中」が返った - ミュート解除(
SetMute(false))は0x80070651で失敗した
0x80070651 はシステムエラーコード 1617 の ERROR_DEVICE_REMOVED(デバイスが削除されました)です。デバイス一覧には存在するのに、操作しようとすると「削除された」と返る、という食い違いが起きていました。
音量の値は変わったように読めたのに、ミュートは残っていました。アイコンや音量の数字だけでは判断できない状態だったことになります。
試したことと結果
| 段階 | 操作 | 結果 |
|---|---|---|
| 状態の確認 | Get-Service、Get-PnpDevice | サービスは稼働中、デバイスは認識済み、問題コードなし |
| 読み取り | GetMute | 成功(ミュート中) |
| 解除 | SetMute(false) と音量の変更 | 0x80070651 で失敗。ミュートは残った |
| サービスだけ再起動 | Windows Audio(Audiosrv)を再起動 | 改善せず |
| デバイスと関連サービスを再起動 | 内蔵音声デバイスを pnputil /restart-device で再起動、AudioEndpointBuilder などを再起動 | 音量の変更とミュート解除が成功(戻り値 0) |
| 音の確認 | 音量 25% で短い確認音を再生 | 本人が「聞こえた」と確認 |
直ったときの手順
管理者として開いた PowerShell で行います。実行中は音が一時的に止まります。
- 内蔵音声デバイスの InstanceId を調べる
Get-PnpDevice -Class MEDIA -PresentOnly | Format-List FriendlyName, InstanceId
複数出てくることがあります。名前に「ディスプレイ用オーディオ」と付くものは HDMI などモニター向けの音声なので、内蔵スピーカーの対象ではありません。内蔵スピーカーは「High Definition Audio デバイス」やメーカー名(Realtek など)の付いたものが該当することが多いです。
- 対象のデバイスだけを再起動する(
<InstanceId>は手順1で調べた値)
pnputil /restart-device "<InstanceId>"
- AudioEndpointBuilder を再起動する
Restart-Service AudioEndpointBuilder -Force
Windows Audio(Audiosrv)は AudioEndpointBuilder に依存しているので、-Force を付けると一緒に止まって再起動されます。終わったら Get-Service AudioEndpointBuilder, Audiosrv で、どちらも Running に戻っていることを確認します。
pnputil /restart-device は Windows 10 バージョン 2004 以降で使えます。
確認方法
API が成功を返しても、それだけでは「音が直った」とは言えません。今回は次の3つの順で確認しました。
- ミュート解除と音量変更がエラーなしで通る
- ミュート状態が「解除」と読める
- 小さめの音量で音を鳴らし、実際にスピーカーから聞こえる
最後の確認は人が耳で聞くしかありません。AI に調べさせる場合でも、ここは本人が判断しました。
分かっていないこと
- デバイスの再起動と AudioEndpointBuilder の再起動を同時に行ったため、どちらが効いたのかは分けられていません。再発したら片方ずつ試す予定です。
- メーカー製の音声チップに Microsoft の汎用ドライバーが使われていましたが、それが原因だとは確かめていません。
- スリープからの復帰や Windows Update との関係も確認していません。
デバイスマネージャーで音声デバイスを「無効」→「有効」にする方法も、考え方は同じ「デバイスの再起動」です。ただし、今回はその方法は試していません。