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 †
- Mathworks Japan様サンプルファイル VoiceChanger