You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Windows 10中Spotify、Discord的实时输出音量?

解决Spotify与Discord实时音量平衡的问题

嘿,你遇到的这个问题我之前折腾过!volume.GetMasterVolume()拿到的其实是你给Discord设置的主音量比例(比如你在系统音量 mixer 里拉到50%,它就返回0.5),而不是当前Discord正在输出的实时音频音量。要获取实时输出的音量,你需要用到IAudioMeterInformation接口,它专门用来读取音频会话的实时峰值音量。

修改后的代码示例

我给你调整下代码,你可以直接用:

from __future__ import print_function
from pycaw.pycaw import AudioUtilities, ISimpleAudioVolume, IAudioMeterInformation

def main():
    sessions = AudioUtilities.GetAllSessions()
    for session in sessions:
        # 跳过没有关联进程的会话(比如系统声音)
        if not session.Process:
            continue
        # 获取实时音量计量器
        try:
            meter = session._ctl.QueryInterface(IAudioMeterInformation)
            peak_volume = meter.GetPeakValue()
        except Exception as e:
            # 有些会话可能不支持计量器,直接跳过
            continue
        
        if session.Process.name() == "Discord.exe":
            print(f"Discord实时峰值音量: {peak_volume:.2f}")
        elif session.Process.name() == "Spotify.exe":
            print(f"Spotify实时峰值音量: {peak_volume:.2f}")

if __name__ == "__main__":
    main()

关键点说明

  • IAudioMeterInformation.GetPeakValue()会返回0.0到1.0之间的浮点值,代表当前音频会话输出的峰值音量(比如Discord有人说话时会跳到0.1以上,安静时接近0.0)。
  • 你可以基于这个值做逻辑判断:比如每隔几百毫秒检测一次Discord的峰值,当峰值持续超过某个阈值(比如0.05),就调小Spotify的主音量;当峰值长时间低于阈值,就把Spotify音量调回正常水平。
  • 注意要加异常处理,因为不是所有音频会话都支持计量器接口,跳过这些会话避免程序崩溃。

内容的提问来源于stack exchange,提问作者Penguronik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:06:02