用于MATLAB的假麦克风输入

时间:2015-05-05 07:37:02

标签: matlab microphone

我正在研究一个记录声音和过程的MATLAB项目。在开发过程中,我完全厌倦了一遍又一遍地播放相同的声音。

是否有某种方式来假装"麦克风,即在我的计算机上播放文件并使用与我用麦克风录制的相同代码在MATLAB中获取文件?

感谢您的帮助。

PS:我在Mac OS X Yosemite上

2 个答案:

答案 0 :(得分:1)

这取决于您如何实现代码 - 如果您发布相关部分,您将能够获得更具体的建议 - 但通常您可能能够替换从麦克风捕获输入的代码部分通过从磁盘读取文件的调用 - wavread对此有用(http://uk.mathworks.com/help/matlab/ref/wavread.html)。

如果你正在做实时的东西,它可能会或可能不会工作,但如果没有,那么你可以在第三方应用程序中播放声音文件并使用一些东西在内部将输出重新连接到输入。 Soundflower是一种可以做到这一点的工具,还有其他工具。

答案 1 :(得分:1)

还有更多要解决的难题。

如果只是一种异步工作模式

如果您只是希望在静音中工作并且正在开发的MATLAB过程不需要同步与声音重放(不依赖于声音样本开始的位置,只需要“一些”声音与MATLAB代码准备好后相关的数据输入,最简单的方法是将插孔连接器插入MIC并通过外部设备(MP3播放器等)在无限循环中重新播放声音。享受沉默。

如果需要同步操作模式

如果您的MATLAB代码需要同步处理,与声音样本的开始对齐并在MATLAB代码完成后终止重新播放过程,那么您需要比重新连接更复杂的东西(是它完成了物理或虚拟的声音传递。

有多种方法可以让MATLAB与外部进程通信,从而允许触发远程端的同步事件(发送类似消息 HeyPythonProcess.startTheSoundREPLAY())并进行整个声音处理两者都是静默的(例如,python音频服务可以将声音字节移动到完整(即可编程)控制下的各个音频混音器路径中)并完全同步(通过事件驱动的消息传递层,如 {{ 1}} 允许) 从而根据需要保持这个过程。

如果这听起来很复杂?是的,它很复杂,但既现实又可行。 MATLAB允许以完全自主的多代理方式进行进程间通信/消息传递(没有从属关系,实际上是完全自治的工作模式),并且一旦进入分布式云/网格处理项目,就可以为未来提供巨大的力量

使用桥接模式的MATLAB操作的副作用

还有另一种同步方式,使用python-MATLAB桥接,其中python方面“强制”同步(控制实验)并启动/停止MATLAB部分工作(因此作为副作用对齐重放与MATLAB处理)

ZeroMQ