1

現在、同時に録音しながら音声信号を処理しています。すなわち:

  1. 0.1 秒ごとの音声を繰り返し録音します。

  2. 各音声パケットを FIFO 方式で処理します (たとえば、この関数を呼び出しますprocess)。長さ 0.1 秒の音声パケットを処理するには、約 1 秒かかります。

実行したコードは次のとおりです。

r = audiorecorder(fs, 16,1);
data{k} = getaudiodata(r);
process(data{k});

process問題は、実行中に 1 の音声のサンプルを見逃すことです。録音を停止せずに実行processし、0.1 秒の音声録音ごとに関数を呼び出します。に用意されているコールバック関数を使ってみます録音中に繰り返し実行される関数である が、録音中にサンプルを取得できないことがaudiorecorder.問題です。TimerFcn

何かアドバイス?

4

1 に答える 1

0

使い始めたマトリックスで何かを見つけてみてくださいgetaudiodata()

それは時間に応じて何らかの取り決めをしなければなりません。plot()(サウンド信号を時間軸でプロットするため、時間に応じた値の分布が必要です)

その配置に従って行列を反復処理し、process() 関数を呼び出します。

このように、一度に音を録音してから、0.1 秒ごとに 1 つずつ処理を繰り返すことができます。

于 2018-06-09T15:03:45.233 に答える