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 に答える