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

但是,我目前有点卡在第1步,因为在Haskell中录制麦克风输入似乎相当困难 .

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

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

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

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