c++ - Pi 3 USB USB 麦克风;在 C/C++ 中以编程方式访问

标签 c++ c usb raspberry-pi3 audio-processing

我正在使用 USB 麦克风使用 Raspberry Pi 3(运行 Raspbian)进行语音处理项目。我可以看到麦克风显示为 Pi 的可选音频设备,并且它完美地产生/捕获声音。

我不知道如何在我的代码中使用它;我对此进行了大量研究,并找到了一些教程,但没有任何意义。我有更多的硬件背景,并且在 Controller 上做过类似的事情,我连接一个实际的麦克风并将模拟信号处理为 IO 引脚上的数字信号;我对此感到非常沮丧,以至于我打算使用麦克风和 A2D 转换从 Arduino 传输数据。

------------------------------------------------------------ --------我的问题---------------------------------------------------- ------------
1)我想知道如何用C或C++访问USB数据流或USB设备。我的Linux能力不是最好的。我是否打开串行连接或打开“/dev/USB/....”中的文件流?能提供一下代码示例吗?

2) 无论 USB 麦克风输入的保真度如何,我想知道如何在 C/C++ 中访问其输入。我一直在研究 ALSA,但无法真正理解它的很多复杂性。有什么东西可以让我访问 USB 端口上的原始输入信号并进行处理(我可以推断出频率、幅度等)?

我已经在这里浏览了很多类似的帖子。我真的被这个问题困住了。我真的很想从操作系统的角度了解正在发生的事情;我将使用给定的库,但我想了解它是如何工作的。

谢谢!

最佳答案

所以更新:

所以我用 C 语言编写了所有代码,并使用了一些 .sh 脚本。我继续思考如何使用 Alsa asoundlib(特别是 asound.h)。截至目前,我可以使用 Pi 3 通过 USB 麦克风/耳机生成和录制声音。这样做相当困难,但这里有一个有用的链接 (1)。

对于我的项目,我还在链接 (2) 和视频链接 (3) 上找到了针对其 PocketSphinx 音频识别设备的 CMU 教程/存储库。这个项目也使用了 Alsa asoundlib,对我来说有很大的帮助。下载需要一段时间,并且您需要爬行其 .sh 脚本以找出其 gcc 链接。但我现在可以提供音频提示,这些提示由我的 Pi 3 解释并推送到扬声器输出和 GPIO 引脚。

链接(1) http://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2pcm_8c-example.html (2)https://wolfpaulus.com/embedded/raspberrypi2-sr/ (3)https://www.youtube.com/watch?v=5kp5qpwVh_8

关于c++ - Pi 3 USB USB 麦克风;在 C/C++ 中以编程方式访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49739209/

相关文章:

c++ - 没有排序的第三大区域

c++ - 如何在多个类中使用库而不会出现 "multiple definition"错误

c - 将整数分配给 C 位域

c - 这可能是由于堆损坏,这表明 cvector.exe 或它加载的任何 DLL 中存在错误

android - 在宏中连接格式化字符串

function - QEMU 中的 USB 功能 Controller 仿真

c - USB 24 位音频流描述符

c++ - 如何正确分割字符串中的数字?

c++ - 当文件有尾随换行符时,ifstream::tellg 在 MSVC2012 和 gcc (mingw) 上有所不同

linux - 自定义设备的 USB 用户空间设备驱动程序