トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索   ヘルプ   最終更新のRSS

MATLAB Note/Data Acquisition Toolbox

Last-modified: 2016-02-10 (水) 05:52:32
Top / MATLAB Note / Data Acquisition Toolbox

音声をマイクで録音しながら、リアルタイムに解析する

  • パラメータを設定
     fs = 10000;                             % 録音のサンプリング周波数
     rectime = 3;                            % 録音の総秒数
     plottime = 0.1;                         % 録音中、何秒に一回分析するか
  • 音声データの読み込み
     disp( strcat('録音開始...( ', num2str(rectime), ' 秒間)') );
    
     %アナログデバイスオブジェクト AIVoice を作成
     AIVoice = analoginput('winsound');
     chan = addchannel(AIVoice,1);
     %プロパティを設定
     set(AIVoice,'SampleRate', fs)
     ActualRate = get(AIVoice,'SampleRate');
     set(AIVoice,'SamplesPerTrigger', ActualRate * rectime)  % rectime 秒経過したら録音停止
    
     %録音開始 
     start(AIVoice)
  • 分析
     try 
         %録音中のデータを随時取り出して、スペクトログラムをプロットする
         alldata = zeros(3000,1);
         % 録音終了の rectime 前までプロットを続ける(数値オーバー対策)
         for count = 1 : 1 : fix(rectime / plottime)
             % fs * plottime サンプル録音できた時点で、データを data に格納
             [data, time] = getdata(AIVoice, fs * plottime);
             alldata = [alldata ; data];
             plotdata = alldata(length(alldata) - 3000 : length(alldata), : )
             figure(1); spectrogram(plotdata,30,'yaxis');  % スペクトログラム(30フレームで分析)
         end
         alldata = alldata(1000 : length(alldata), : );
         wavwrite(alldata, fs, 16, 'output_SpeechAnalysis.wav');
     catch
         stop();
     end
    
     %メモリを掃除
     waittilstop(AIVoice,2)  % AIVoiceが実行を停止していることを確認
     delete(AIVoice)         % クリーンアップ
     clear AIVoice
  • 「10秒の録音を行ないながら、0.1秒ごとに、最新の録音データ+直前 3000 フレームをスペクトログラムに表示する」プログラムができました。
  • メモリの問題でエラーが出る場合は、MATLABを再起動してください。

反応時間測定

  • 以下は編集途中のコンテンツです。
  • ハードウェア : Measurement Computing 社の PMD-1208FS を使うとします。

VoiceChanger