リアルタイムで取り込んだ音声信号をFFT化を行い保存する方法を教えてほしいです。
27 views (last 30 days)
Show older comments
リアルタイムにて音声を入力を行い、timescopeを用いて波形を表示させ、SpectrumAnalyzerを使いスペクトルを表示させるプログラムをAudio Test Bench をもちいて作成しました。しかしスペクトルのデータを保存することができませんでした。ここまでのプログラミングを載せておきます。
スペクトルデータをもとに今後の処理を行おうと考えております。
スペクトルデータを順次保存する方法を教えていただきたいです。簡単な内容で申し訳ありませんがよろしくお願いします。
0 Comments
Accepted Answer
Atsushi Ueno
on 19 Jul 2022
>スペクトルデータを順次保存する方法を教えていただきたい
(削除予定) 時間領域信号の周波数スペクトルの表示 - MATLAB - MathWorks 日本 ← 古い方(R2012bで導入)
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を動かす事が出来ず背景が判りません。プログラムを書かなくてもスペクトラム アナライザーを設定すれば、ファイルメニュー経由で測定データを保存できるような気がしますが、できないのでしょうか?
(削除予定) 時間領域信号の周波数スペクトルの表示 - MATLAB - MathWorks 日本 ← 古い方(R2012bで導入)
時間領域信号の周波数スペクトルの表示 - MATLAB - MathWorks 日本 ←新しい方(R2022a で導入)
関数本体の説明は英語版しか閲覧出来ない模様ですが、日本語でも読める下記ドキュメントの「spectrumAnalyzer オブジェクトの測定データをプログラムによって取得」の項目が同じ内容で参考になります。なお、下の新しい方「spectrumAnalyzer MATLAB® オブジェクト」を使うべきですが、元のプログラムが使っていた古い方「dsp.SpectrumAnalyzer オブジェクト」に合わせました。
3 Comments
Atsushi Ueno
on 20 Jul 2022
GUIで操作出来る事とAPI経由で操作出来る事は同じはずですが、どうなんでしょうか。
すいませんが、私は spectrumAnalyzer オブジェクトを動かせる環境(ライセンス)を持っていないので動作確認する事が出来ず、お役に立てそうにないです。
More Answers (0)
See Also
Categories
Find more on スコープおよびデータ ログ in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!