音声ファイルに1/fゆらぎ(-3db/octローパス)フィルタをかけて出力したい - フィルタ除去&オーディオ出力の方法
13 views (last 30 days)
Show older comments
現在:
オーディオデータを読み取り、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()関数を使用しました。
他必要な情報があれば追記したいと思います。
0 Comments
Answers (1)
Hernia Baby
on 3 Jan 2023
Edited: Hernia Baby
on 3 Jan 2023
誤りでしたらごめんなさい。
1/fの揺らぎということはピンクノイズの生成ですよね?
ホワイトノイズにフィルタをかけ合わせたものを元の信号に足し合わせるような形ですかね。
■ピンクノイズ生成
■虚数をどうにかしたい
0 Comments
See Also
Categories
Find more on Audio I/O and Waveform Generation 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!