1

我想在记录信号期间获得音频数据帧的音高。(不停止录制)首先,我执行了以下代码。

r = audiorecorder(fs,16,1);
while 1
   recordblocking(r,T);  % T is frame length [s]   (A)
   sample{k} = getaudiodata(r);   
   pitch{k} = get_pitch(sample{k});     % (B)
end

但是,在执行 get_pitch 函数期间,录制过程会停止,这会导致丢失部分要录制的音乐信号。

我希望样本记录不间断地执行,但是将长度为 T[s] 的数据发送到函数 get_pitch 以便连续获得所有帧的音高。

有没有人可以给我一些建议?我非常感谢您的所有评论。

4

1 回答 1

0

一般来说,如果你使用的是 Matlab,并且你想要多线程,你唯一的希望就是并行计算工具箱。你这里有一个典型的consumer/producer scenario- 尝试用谷歌搜索它。

但是,您的方法的问题不一定是缺少线程。如果 get_pitch 命令足够快,你就没有问题。您不妨保存所有样本并在之后进行分析(如果它适合应用程序)。

于 2012-05-09T14:30:47.370 回答