リアルタイムで取り込んだ音声信号をFFT化を行い保存する方法を教えてほしいです。
31 ビュー (過去 30 日間)
古いコメントを表示
リアルタイムにて音声を入力を行い、timescopeを用いて波形を表示させ、SpectrumAnalyzerを使いスペクトルを表示させるプログラムをAudio Test Bench をもちいて作成しました。しかしスペクトルのデータを保存することができませんでした。ここまでのプログラミングを載せておきます。
スペクトルデータをもとに今後の処理を行おうと考えております。
スペクトルデータを順次保存する方法を教えていただきたいです。簡単な内容で申し訳ありませんがよろしくお願いします。
0 件のコメント
採用された回答
Atsushi Ueno
2022 年 7 月 19 日
>スペクトルデータを順次保存する方法を教えていただきたい
(削除予定) 時間領域信号の周波数スペクトルの表示 - 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 件のコメント
Atsushi Ueno
2022 年 7 月 20 日
GUIで操作出来る事とAPI経由で操作出来る事は同じはずですが、どうなんでしょうか。
すいませんが、私は spectrumAnalyzer オブジェクトを動かせる環境(ライセンス)を持っていないので動作確認する事が出来ず、お役に立てそうにないです。
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で スコープおよびデータ ログ についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!