gpt4 book ai didi

python - 如何在python中获取系统输出音量?

转载 作者:行者123 更新时间:2023-12-01 09:34:26 25 4
gpt4 key购买 nike

我正在开发一个项目,需要在 Python 中获取当前系统音频输出级别。基本上,我想知道在 Linux 系统上使用 Python 时扬声器当前发出的声音有多大。我不需要知道扬声器的确切音量,我想要的是相对音量。我在网上没有找到任何好的资源。

最佳答案

tl;dr - 在 macOS 上获取离散系统输出音量的替代答案。

看到您的问题并了解到我无法在 macOS 上构建 pyalsaaudio 后,我想提供一个额外的答案,以了解具体如何在 macOS 上完成此操作,因为它不是以跨平台方式抽象的。

(我知道这对您的直接用例没有帮助,但我有预感,我不是唯一一个因这个问题而对我们也可以运行的解决方案感兴趣的 Mac 用户。)

在 macOS 上,您可以 get the output volume通过运行一些 AppleScript:

$ osascript -e 'get volume settings'
output volume:13, input volume:50, alert volume:17, output muted:false

我将该调用包装在 Python 函数中,以将音量 + 静音状态解析为简单的 0-100 范围:

import re
import subprocess


def get_speaker_output_volume():
"""
Get the current speaker output volume from 0 to 100.

Note that the speakers can have a non-zero volume but be muted, in which
case we return 0 for simplicity.

Note: Only runs on macOS.
"""
cmd = "osascript -e 'get volume settings'"
process = subprocess.run(cmd, stdout=subprocess.PIPE, shell=True)
output = process.stdout.strip().decode('ascii')

pattern = re.compile(r"output volume:(\d+), input volume:(\d+), "
r"alert volume:(\d+), output muted:(true|false)")
volume, _, _, muted = pattern.match(output).groups()

volume = int(volume)
muted = (muted == 'true')

return 0 if muted else volume

例如,在 MacBook Pro 上的各种音量栏设置:

>>> # 2/16 clicks
>>> vol = get_speaker_output_volume()
>>> print(f'Volume: {vol}%')
Volume: 13%
>>> # 2/16 clicks + muted
>>> get_speaker_output_volume()
0
>>> # 16/16 clicks
>>> get_speaker_output_volume()
100

关于python - 如何在python中获取系统输出音量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49662850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com