微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Python 中测量扬声器音量?

如何解决在 Python 中测量扬声器音量?

我正在尝试用 Python 测量扬声器的声级。这个想法是打开一个浏览器来播放声音,并且由于浏览器将音频输出认扬声器,因此使用 sounddevice

测量该声音

但是,我无法让它工作。这是我到目前为止的代码

import sounddevice as sd
import numpy as np

def print_sound(outdata,frames,time,status):
    volume_norm = np.linalg.norm(outdata)*10
    print ("|" * int(volume_norm))

deviceInfo = sd.query_devices(kind='output')
print(deviceInfo)

sd.default.device = deviceInfo


with sd.OutputStream(callback=print_sound,device=deviceInfo['index']):
    sd.sleep(10000)

我被抛出这个错误

{'name': 'Speakers (Realtek High Definiti','hostapi': 0,'max_input_channels': 0,'max_output_channels': 2,'default_low_input_latency': 0.09,'default_low_output_latency': 0.09,'default_high_input_latency': 0.18,'default_high_output_latency': 0.18,'default_samplerate': 44100.0}
Traceback (most recent call last):
  File "c:\Users\MyUser\Desktop\MyProjects\MainRecorderScript\venv\lib\site-packages\sounddevice.py",line 2710,in _split
    invalue,outvalue = value
ValueError: too many values to unpack (expected 2)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "c:\Users\MyUser\Desktop\MyProjects\MainRecorderScript\sound_device_test.py",line 11,in <module>
    sd.default.device = deviceInfo
  File "c:\Users\MyUser\Desktop\MyProjects\MainRecorderScript\venv\lib\site-packages\sounddevice.py",line 2170,in __setattr__
    getattr(self,name)._pair[:] = _split(value)
  File "c:\Users\MyUser\Desktop\MyProjects\MainRecorderScript\venv\lib\site-packages\sounddevice.py",line 2714,in _split
    raise ValueError('Only single values and pairs are allowed') from e
ValueError: Only single values and pairs are allowed

我不想指定一个字符串来命名认扬声器,因为这会从 PC 移动到 PC,所以我希望捕获认扬声器。不会插入麦克风

编辑:作为参考,我尝试修改此脚本 How to read realtime microphone audio volume in python and ffmpeg or similar

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?