使用Haskell录制麦克风音频

时间:2018-04-07 14:35:11

标签: haskell audio sdl-2

我正在开发一些语音识别软件作为我的第一个Haskell项目。我正在寻找可以跨平台工作的东西。我的计划如下:

  1. 将音频录制为.wav文件
  2. 使用https://hackage.haskell.org/package/flac将.wav文件转换为FLAC文件。
  3. 向Google的Speech API发送语音API请求(如https://cloud.google.com/speech/docs/quickstart所示)。
  4. 收到回复并解释。
  5. 但是,我目前有点卡在第1步,因为在Haskell中录制麦克风输入似乎相当困难。

    由于这是一次学习经历,我想尝试找到一些我很容易理解的简单的东西。经过一些谷歌搜索,我发现了这个:https://codereview.stackexchange.com/questions/169577/sound-recorder-based-on-sdl2,它使用Haskell SDL2绑定和Codec.Audio.Wave。我尝试复制代码以查看它是否可行,但唉它没有。运行程序时没有任何错误,但是当我尝试播放wave文件时,没有任何反应,它似乎完全是空的。似乎没有记录任何内容,因为文件大小只有44个字节。

    我认为问题是SDL开放设备规格无法找到合适的录音设备,所以我尝试检查频率,看看我的麦克风是否无法处理48000赫兹,然后因此没有帮助(它最大为96000 Hz)我试图弄乱设备通道,但这也无济于事。

    问题不在于我的麦克风,因为我尝试用arecord录制一些音频(在Arch Linux上),这很好用。正如我所说,这是我的第一个Haskell项目,我是一个新手,虽然我确实有其他语言的经验,但我完全可能做了一些非常愚蠢的事情。

    我不反对任何不涉及SDL2的解决方案,但是因为我正在寻找一些(希望)简单和跨平台的东西,这似乎很合适。

0 个答案:

没有答案