使用Haskell捕获来自麦克风的音频输入?

时间:2010-03-12 19:26:36

标签: haskell audio io

是否有一个成熟的库可以启用音频输入和输出并在Haskell中工作? (当然,一个不错的包装好。)

我正在寻找能够轻松捕获麦克风输入的东西,也许还会播放各种音频文件。

感谢。

4 个答案:

答案 0 :(得分:4)

  

轻松捕获麦克风输入,也许还可播放各种音频文件..

它将在很大程度上取决于您的操作系统平台:每个操作系统上都有用于此功能的标准C库,您将寻找与它们相关的Haskell绑定(例如PulseAudio等)。查看Hackage上的声音类别:

E.g。 HSndFile用于音频文件编写,http://hackage.haskell.org/package/HSoundFile

答案 1 :(得分:3)

模块pulse-simple暴露绑定以捕获来自麦克风的声音,请参见页面顶部的第二个示例;
https://hackage.haskell.org/package/pulse-simple-0.1.13/docs/Sound-Pulse-Simple.html
cabal要求的脉冲音频库可通过cygwin获得(在cygwin安装程序中搜索“pulse”)。

还有对sox的约束,看起来很有希望。 https://hackage.haskell.org/package/sox

我确定在hackage声音类别中还有其他api包装器。

对于linux有一个绑定到jack,有“unix”作为依赖,它不会建立在Windows上...

答案 2 :(得分:1)

万一你不熟悉hackage:http://hackage.haskell.org/packages/archive/pkg-list.html

看起来那里有一些音频相关的东西。不确定是否有任何东西可以满足您的需求。但大多数“成熟”的haskell库都会在那里。

答案 3 :(得分:1)

您可以使用OpenAL和ALUT来完成此操作。我设法在Windows 8上安装它们,虽然它不是毫不费力的; ALUT需要将底层C库手动编译为DLL。

另一方面,安装OpenAL就像下载SDK并在命令提示符下键入cabal install OpenAL一样简单。

使用ALUT,您可以从音频文件(包括WAV)和内存视图创建OpenAL缓冲区。

我找到了录音和音频播放的例子here。根据您的需要调整代码应该相当简单。

如果我遗漏了一些东西,请告诉我,我会尽力详细说明。