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

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

採用された回答

Atsushi Ueno
Atsushi Ueno 2022 年 7 月 19 日
>スペクトルデータを順次保存する方法を教えていただきたい
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 件のコメント
Atsushi Ueno
Atsushi Ueno 2022 年 7 月 20 日
GUIで操作出来る事とAPI経由で操作出来る事は同じはずですが、どうなんでしょうか。
すいませんが、私は spectrumAnalyzer オブジェクトを動かせる環境(ライセンス)を持っていないので動作確認する事が出来ず、お役に立てそうにないです。
一秀 近藤
一秀 近藤 2022 年 7 月 26 日
返信が遅れました。いろいろと試行錯誤した結果うまく進めそうです!
わざわざありがとうございました!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeスコープおよびデータ ログ についてさらに検索

Community Treasure Hunt

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

Start Hunting!