如何在 MATLAB 中收听麦克风?

Posted

技术标签:

【中文标题】如何在 MATLAB 中收听麦克风?【英文标题】:How to listen to the microphone in MATLAB? 【发布时间】:2016-10-03 07:54:42 【问题描述】:

我想知道是否有办法用 MATLAB 捕捉麦克风的声音,简单地处理它(我只需要一些标准的音频功能,我可以自己做)并根据这些功能做出决定。可能我唯一的特点是声音的幅度,我想以此为基础做出决定。我所需要的只是一种捕捉现场音频的方法,剩下的我可以做。

如何使用 MATLAB 捕获实时音频(在运行中,或通过保存为小块并以少量延迟进行处理)?

我找到了这个code,但我得到了错误:

Error using analoginput (line 46)
The DAQ Legacy Interface is not supported on this platform..

任何在 64 位 Windows 8 下工作的解决方案?

注意

我问了 MATLAB 的问题,但在这一点上,我可以接受任何类型的解决方案 :) 我想要的伪代码如下:

float threshold;
float max_duration;
while (!interrupted) && (timer() < max_duration)
    a = record_audio() // or record_audio(5s)
    b = analyze_audio(a)
    if b.mean_amplitude > threshold
        do(something);
    end
end

我不确定录制过程(是否并行),但没关系。在分析过程中可能会遗漏一些实时数据,这对我来说是可以接受的。

编辑

感谢您的帮助。正如文档所暗示的,我运行了daq.getVendors() 并得到了这个输出:

ans = 
Data acquisition vendor 'National Instruments':
      ID: 'ni'
      FullName: 'National Instruments'
      % ..

所以我尝试了s = daq.createSession('ni'),我得到了这个错误:

The vendor 'ni' is not known. Use 'daq.getVendors()' for a list of vendors.

欢迎并接受任何类型的编程语言或外部软件推荐来做到这一点:)

谢谢,

【问题讨论】:

您阅读文档了吗? mathworks.com/help/matlab/import_export/… 和 mathworks.com/help/matlab/ref/audiorecorder.html 【参考方案1】:

首先,确保进入麦克风设置(输入设置)并选中“收听此麦克风”复选框。您应该从扬声器听到麦克风输入,因为以下代码将记录计算机的声音输出。由于我们正在输出您的麦克风,因此您将录制麦克风。

然后你可以将声音输出录制为:

ai=analoginput('winsound');
addchannel(ai,1);
start(ai);
data=getdata(ai);

你可以听

sound(data)

【讨论】:

谢谢,但我在使用 analoginput() 时仍然遇到同样的错误。另外我不明白如何定期(在线)处理数据。这看起来像离线,即它会录制一段时间的音频然后停止。我想要的是,记录音频并每隔N (~5) 秒分析一次。有可能吗?

以上是关于如何在 MATLAB 中收听麦克风?的主要内容,如果未能解决你的问题,请参考以下文章

如何实时收听麦克风输入并进行分析?

从网站收听麦克风[重复]

是否可以以编程方式在 Android 中收听扬声器输出?

自动启用网络聊天中必应语音的开始收听功能

如何让我的 iPhone 收听高于某个阈值的声音频率?

OSX 如何判断用户何时插入/拔出带有内置麦克风的耳机