リアルタイムで取り込​んだ音声信号をFFT​化を行い保存する方法​を教えてほしいです。

29 views (last 30 days)
一秀 近藤
一秀 近藤 on 19 Jul 2022
Commented: 一秀 近藤 on 26 Jul 2022
リアルタイムにて音声を入力を行い、timescopeを用いて波形を表示させ、SpectrumAnalyzerを使いスペクトルを表示させるプログラムをAudio Test Bench をもちいて作成しました。しかしスペクトルのデータを保存することができませんでした。ここまでのプログラミングを載せておきます。
スペクトルデータをもとに今後の処理を行おうと考えております。
スペクトルデータを順次保存する方法を教えていただきたいです。簡単な内容で申し訳ありませんがよろしくお願いします。

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 19 Jul 2022
>スペクトルデータを順次保存する方法を教えていただきたい
SpectrumAnalyzerで測定可能なデータをgetMeasurementsData関数で取得できる様です。
deviceReader = audioDeviceReader('NumChannels',2);%デバイス指定部は省略
timeScope = timescope(%以下省略
specScope = dsp.SpectrumAnalyzer(%以下省略
specScope.MeasurementChannel = 2; % audioDeviceが2chだから
specScope.CursorMeasurements.Enable = true; % カーソルの測定ON
specScope.ChannelMeasurements.Enable = true; % チャネル測定ON
specScope.PeakFinder.Enable = true; % ピークの検出測定ON
specScope.DistortionMeasurements.Enable = true; % 歪みの測定ON
data = [];
for iter = 1:1000
[in,novr] = deviceReader(); % 2ch指定したのでinは1024*2の行列
out = in;
timeScope([in(:,1),out(:,1)]); % 片chのデータを2つ表示(なぜ片chだけ2つ?)
specScope([in(:,1),out(:,1)]); % 片chのデータを2つ周波数解析
if specScope.isNewDataReady
data = [data; getMeasurementsData(specScope)]; % ←ここが測定データを得ている所
end
% Uncomment to process callbacks if you are using parameterTuner:
% drawnow limitrate
end
save data % ←最後にdataをMATファイルに保存
% Clean up
release(deviceReader)
release(timeScope)
release(specScope)
上記dataは下記の様なTableとして取得される様です。(すいません当方動かす事が出来ず確認できません)
1x5 table
SimulationTime PeakFinder CursorMeasurements ChannelMeasurements DistortionMeasurements
______________ __________ __________________ ___________________ _____________________
{[0.9985]} 1x1 struct 1x1 struct 1x1 struct 1x1 struct
【その他詳細】
Audio Test Benchを動かす事が出来ず背景が判りません。プログラムを書かなくてもスペクトラム アナライザーを設定すれば、ファイルメニュー経由で測定データを保存できるような気がしますが、できないのでしょうか?
関数本体の説明は英語版しか閲覧出来ない模様ですが、日本語でも読める下記ドキュメントの「spectrumAnalyzer オブジェクトの測定データをプログラムによって取得」の項目が同じ内容で参考になります。なお、下の新しい方「spectrumAnalyzer MATLAB® オブジェクト」を使うべきですが、元のプログラムが使っていた古い方「dsp.SpectrumAnalyzer オブジェクト」に合わせました。
  3 Comments
一秀 近藤
一秀 近藤 on 26 Jul 2022
返信が遅れました。いろいろと試行錯誤した結果うまく進めそうです!
わざわざありがとうございました!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!