陷入不同平台的浪潮

时间:2009-12-30 07:59:21

标签: python windows linux language-agnostic audio

我会提前道歉,因为我非常模糊,但我在这方面的知识有限,所以我不知道必要的“关键词”让我的观点/问题清楚。 抱歉

我想要做的是找到一种方法来获取原始音频数据的输出,例如,当某些外部应用程序正在播放音乐时,数据从麦克风传递到输出设备等等上。我希望能够实时访问这些数据(好吧,几乎是实时的),以便我可以分析/可视化等等。

我知道,这肯定是可能的,就像我很久以前在Java中做的那样(我想我使用的是Processing和Minim库)。这是通过在声卡上启用一种“环回”输入设备在Windows中完成的(我认为我的供应商称之为“Wave Out Mix”或其他东西)。如何在基于Linux的操作系统下解决相同的问题?

我打算将python用于分析/可视化部分,但是如果需要获取原始数据,我可以在C中工作。

提前感谢任何信息。

1 个答案:

答案 0 :(得分:4)

您是否可以访问“wave out”或“loopback”取决于您的声卡和驱动程序。

Linux上的原生声音API称为ALSA。搜索ALSA文档和示例代码,您应该能够从声卡中获取一些代码进行记录,然后希望设置您的调音台,以便您从“wave out”录制而不是从麦克风录制。

较旧的Linux声音API(/ dev / dsp)称为OSS。它稍微简单一点,ALSA模拟了大部分API - 但如果您希望完全访问声卡,则ALSA是首选解决方案。

您可能需要查看Jack - 这是一个系统,用于将音频输出从一个应用程序路由到另一个应用程序的输入,大链或各种其他配置。有很多兼容的程序,如果你需要的所有东西都支持Jack,那么你会发现它是迄今为止最简单的API类型。

最后,这可能听起来很愚蠢,但是你可以得到一个模拟环回电缆 - 一个男到男的立体声微型插孔 - 并将它从你的耳机插孔循环到你的线路输入插孔,然后以这种方式记录“波形输出” ,不管你有什么声卡。这是一个带有模拟漏洞的愚蠢的黑客,但它确实有效,并且取决于你想要记录的内容,它可能已经足够了。