Python 从20+;麦克风
我被要求(如果可能的话)编写一个程序,在一台计算机上监控至少20个麦克风的输入 目前,我正在使用python(2.6)在一个使用Alsa的Ubuntu系统上进行原型制作。到目前为止,我的尝试产生了很多问题 Ubuntu是必需的,Alsa不是,python是理想的 对于硬件,一个建议是多个声卡。另一个是一系列usb集线器和麦克风适配器(如)(在这种情况下,设备将完全相同并位于同一usb总线上) 问题: 如何从一张声卡同时录制多个麦克风?(例如,使用线路输入和麦克风,任何知道如何使用两个以上输入的人都可以获得奖励!) 在USB设置中,如何识别插入的声卡(USB适配器)的位置 连接到USB集线器(或USB集线器链) 如果解决方案是通过USB原始访问麦克风,那么USB总线上的设备位置是否仅取决于它们插入USB集线器上的哪个端口,或者是否可以在打开和关闭计算机电源之间切换 最后,如果使用原始访问,我如何最好地获取数据(目前没有使用pyUSB的经验)以及需要从原始->音频进行什么转换(如果有) 编辑: 通过monitor,我被要求将输入记录到磁盘(理想情况下高于设置的阈值,speex编解码器看起来非常适合),监控音量水平,提供图形反馈,并设置至少一个在所有活动话筒中循环的输出Python 从20+;麦克风,python,audio,usb,microphone,libusb,Python,Audio,Usb,Microphone,Libusb,我被要求(如果可能的话)编写一个程序,在一台计算机上监控至少20个麦克风的输入 目前,我正在使用python(2.6)在一个使用Alsa的Ubuntu系统上进行原型制作。到目前为止,我的尝试产生了很多问题 Ubuntu是必需的,Alsa不是,python是理想的 对于硬件,一个建议是多个声卡。另一个是一系列usb集线器和麦克风适配器(如)(在这种情况下,设备将完全相同并位于同一usb总线上) 问题: 如何从一张声卡同时录制多个麦克风?(例如,使用线路输入和麦克风,任何知道如何使用两个以上输入的人
Python并不是一个长期的需求,它只是迄今为止我发现的从声卡获取PCM数据的最简单的方法(但仅限于麦克风) 我打算让声卡的轮询和数据处理在不同的线程中进行,这是一个我没有太多经验的领域 在哪里可以找到有关实现USB音频类驱动程序的更多信息?这里“监视器”的定义是一个很大的变量。Monitor可能意味着“记录到磁盘”、“检测高于特定阈值的卷级别”或“在频域中执行更高级别的分析(即传统的信号处理)。”这三种方法对CPU使用和Python的可行性有非常不同的影响。Python可能不是最合适的,这取决于您想要做什么 如果使用Python,我将注意以下几点:
- Python的音频支持非常弱
- python ALSA绑定(pyalsa)用于序列器、混频器和硬件控制,而不是读取PCM样本(尽管绑定可能有助于管理设备)
- Python在某些多线程条件下存在问题(参见GIL——全局解释器锁),通过使用单独的Python进程可以完全避免这些问题,但这也不是所有情况下都需要的(我假设您运行的是多核/处理器系统,希望通过CPU分配监控20个音频输入的负载)
- CPU和内存密集型操作(如音频分析中所期望的)并不是Python的强项。尽管如此,PCM数据可以通过struct.unpack()解包,信号分析可以通过NumPy和SciPy中的例程完成
希望这能有所帮助!如果您不介意延迟的话,USB音频是可以的,但我严重怀疑它能否在20个频道上工作,尤其是在20台设备上
获得几个大的Firewire接口(8通道+),可能来自Presonus。找到Linux声音系统支持的东西,你不想自己处理任何总线。如果可以,使用DAW应用程序获取音频。如果需要处理,编写插件可能比从头开始容易。我不知道有什么好的库可以用Python进行多轨录制。我建议您首先需要一些硬件,如数字混音台,它将支持所有这些输入。我真的怀疑您是否能够轻松地让多个麦克风工作。在您开始编写任何代码来记录所有这些输入之前,检查PC是否/如何处理这种情况是合乎逻辑的第一步 我也不愿意在这里推荐Python