Clear Filters
Clear Filters

音声ファイルに1/f​ゆらぎ(-3db/o​ctローパス)フィル​タをかけて出力したい - フィルタ除去&オーディオ出力の方法

17 views (last 30 days)
tazaki ush
tazaki ush on 2 Jan 2023
Edited: Hernia Baby on 3 Jan 2023
現在:
オーディオデータを読み取り、fft後パワースペクトルの最大値および該当する周波数を格納した。
-3db/octのローパスフィルタを作成した。
ここまで進んでおり、後はオーディオデータに周波数フィルタをかけて出力したいと思っています。(出力はwavデータが必要)
fftしたデータにフィルタをかけて、逆fft後オーディオ出力したい(audiowriteを使う)のですが、当然虚数を含むためエラーとなり、上手くできません。
>filterDesign //フィルタの設計画面を開く(変数名:iir1flowpassfilter)
>>yy=filter(iir1flowpassfilter,y,G); //yは読み取った音声データにfftをかけたもの。 Gは次数??
>>audiowrite(filename2,yy,fs) //filename2='noise.wav', fs:48000(Hz)
ここでエラーとなり、
・・次を使用中: audiowrite
入力は実数にする必要があります。
かといって、fft前のデータを参照すると、
警告: ファイルの書き込みに際しデータが切り捨てられました。
> audiowrite>clipInputData 内
audiowrite 内
となります。
fft後、オーディオ出力する方法は見つかりませんでしたが、もしありましたらご教示くださいますようお願いします。なお、オーディオの取り込みにはaudioread()関数を、fftはfft()関数、逆fftはifft()関数を使用しました。
他必要な情報があれば追記したいと思います。

Answers (1)

Hernia Baby
Hernia Baby on 3 Jan 2023
Edited: Hernia Baby on 3 Jan 2023
誤りでしたらごめんなさい。
1/fの揺らぎということはピンクノイズの生成ですよね?
ホワイトノイズにフィルタをかけ合わせたものを元の信号に足し合わせるような形ですかね。
■ピンクノイズ生成
 ①Audio Toolboxをおもちでしたら pinknoise が使用できます。
 ②DSP System Toolboxをおもちでしたら dsp.ColoredNoise が使用できます。
 ③Signal Processing Toolboxをおもちでしたら File Exchange に良いものがありました。
■虚数をどうにかしたい
 ③の中身を見てみますと ifft 後に real で実数成分のみ取り出していますね。

Categories

Find more on Audio Processing Algorithm Design in Help Center and File Exchange

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!