几秒钟前如何创建音频缓冲区以访问麦克风输入

Posted

技术标签:

【中文标题】几秒钟前如何创建音频缓冲区以访问麦克风输入【英文标题】:how to create an audio buffer to access mic input few seconds ago 【发布时间】:2019-11-19 02:47:43 【问题描述】:

我正在尝试创建一个可以通过启动指令激活的语音识别功能。我找到了这个 snowboy 包,可以创建一个启动指令侦听器,该侦听器可以全时侦听并在激活时运行特定任务。

我的问题是,我需要在检测到启动指令时运行语音认证功能。假设我的启动指令是“你好”,而我的语音验证输入需要是“你好,请开门”。但是如果我在检测到启动指令后开始录制,我需要重复单词 hello。我怎样才能在不重复的情况下获得完整的“你好,请开门”录音。

有没有办法让雪童输出它用来激活的短音频文件“你好”,如果是这样,我可以将它们组合起来。

如果现在我可以创建一个音频缓冲区,它将一直保存最后 10 秒的麦克风数据,而不会对 CPU 造成太大影响。同时这也需要和雪童共用麦克风。

这是我的想法,但我不知道如何实现。请告诉我如何做到这一点或任何其他我可以获得完整录音的方法。

如果有些地方不清楚,请随时编辑问题。

谢谢!!

【问题讨论】:

【参考方案1】:

是的。检测到后,Snowboy 默认播放资源文件夹中的“ding”波形文件。您可以编辑 snowboydecoder.HotwordDetector 函数来播放另一个声音文件而不是 ding(您可能需要对它编译的语言有一个粗略的了解)。您可以下载自定义波形文件以在此处播放,或使用 Internet 上的各种免费 TTS API 列表来生成“机器人声音”自定义消息,并保存到您的计算机。如果需要,我将进行详细说明

【讨论】:

这不是我要问的……我想你误会了。我需要的是一种方法来保存雪人用来激活的音频片段

以上是关于几秒钟前如何创建音频缓冲区以访问麦克风输入的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Macbook 麦克风获取音频数据?

在 Ubuntu Linux 上操作音频输入缓冲区

如何捕获麦克风缓冲区

如何使用 C WinAPI 获取当前麦克风输入电平?

如何从麦克风输入中获取音量

如何显示我的麦克风的当前音量?