我正在研究一些语音识别软件作为我的第一个Haskell项目 . 我正在寻找可以跨平台工作的东西 . 我的计划如下:
-
将音频录制为.wav文件
-
使用https://hackage.haskell.org/package/flac将.wav文件转换为FLAC文件 .
-
向Google的Speech API发送语音API请求(可在此处查看https://cloud.google.com/speech/docs/quickstart) .
-
接收回复并解释它 .
但是,我目前有点卡在第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的解决方案,但是因为我正在寻找一些(希望)简单和跨平台的东西,这似乎是一个很好的选择 .