音を消す方法

11 visualizzazioni (ultimi 30 giorni)
Kaede
Kaede il 27 Ago 2020
Commentato: Kaede il 1 Set 2020
このようなグラフの場合青のグラフの1k,2k辺りの音というか周波数帯域を消す方法はありますか。
  2 Commenti
Kaede
Kaede il 27 Ago 2020
clear;
[p1,fs]=audioread('40kph_RN.wav');
[p2,fs]=audioread('2000rpm_Knock.wav');
fs=44100;
p2(448512,[1 2]) = [0,0];
%smix=10*p1+p2/10;
%soundsc(smix,fs)
%filename='mix.wav';
%audiowrite(filename,smix,fs);
Lch_p1=p1(:,1);
Rch_p1=p1(:,2);
Lch_p2=p2(:,1);
Rch_p2=p2(:,2);
smix_Lch=10*Lch_p1+Lch_p2/10;
%soundsc(smix_Lch,fs)
filename='mix_Lch.wav';
audiowrite(filename,smix_Lch,fs);
smix_Rch=10*Rch_p1+Rch_p2/10;
%soundsc(smix_Rch,fs)
filename='mix_Rch.wav';
audiowrite(filename,smix_Rch,fs);
fft_p1L=fft(10*Lch_p1);
dB_p1L=mag2db(abs(fft_p1L));
fft_p1R=fft(10*Rch_p1);
dB_p1R=mag2db(abs(fft_p1R));
fft_p2L=fft(Lch_p2/10);
dB_p2L=mag2db(abs(fft_p2L));
fft_p2R=fft(Rch_p2/10);
dB_p2R=mag2db(abs(fft_p2R));
f = (0:length(fft_p1L)-1)*fs/length(fft_p1L);
figure(1)
semilogx(f,dB_p2L)
xlim([0 fs/2])
ylim([-100,100])
xlabel('frequency[Hz]')
ylabel('Magnitude[dB]')
hold on
semilogx(f,dB_p1L)
grid on, hold off
legend('2000rpm.knock','roadnoise');
figure(2)
semilogx(f,dB_p2R)
xlim([0 fs/2])
ylim([-100,100])
xlabel('frequency[Hz]')
ylabel('Magnitude[dB]')
hold on
semilogx(f,dB_p1R)
grid on, hold off
legend('2000rpm.knock','roadnoise');
使用しているプログラムはこちらです。
Kaede
Kaede il 28 Ago 2020
バンドストップフィルターを使うのが良いと思うのですが,1k,2k辺りであればフィルター仕様はどのように設定するのが良いですか?
帯域を広くしてやってみたのですが1,2kを削減するのにこれぐらいでもありでしょうか?
個人差があるような質問で申し訳ございません.

Accedi per commentare.

Risposta accettata

Naoya
Naoya il 31 Ago 2020
シンプルな方法としては、Signal Processing Toolbox で提供される bandstop関数を利用できると思います。
サンプリング周波数 44.1KHz の信号において 1KHz ~ 2KHz の区間をカットするとう点では、下記の様な書式でフィルタ出力信号 y を得ることができます。
% バンドストップフィルタリング
[y,Hd] = bandstop(x, [1000, 2000], 44100);
% フィルタの周波数応答確認
freqz(aa, 8192, 44100)
周波数応答を確認しますと 設定した 1000, 2000Hz は 通過帯域端の周波数扱い (ほぼ0dB) となりますので、 1000Hz, 2000Hz もある程度減衰させる場合は、bandstop 関数で指定する幅をもう少し広げるのがよいかもしれません。
  3 Commenti
Mikio Muramatsu
Mikio Muramatsu il 1 Set 2020
> 周波数上では1,2kHzの音が消えているように見えるのですが,オレンジのロードノイズが大きいため,あまり元の音との違いがありません.
> 私がやりたいこととしては元の音との差をつけたいのですがなかなか難しいと感じております.
具体的にどのような差をつけたいか教えていただけますでしょうか?
例:聴感上、音声を聞こえやすくしたい / ロードノイズに埋もれている○○の音が聞こえるようにしたい、など。
1-2kHzを消す理由なども合わせてお聞かせいただけると幸いです。
Kaede
Kaede il 1 Set 2020
私がやりたいこととしては青のグラフの1,2kだけを大きくするためにBPFをかけることを検討していました.しかしあまりBPFでは持ち上げれなさそうなのでまず1,2kHz以外に阻止域10dB減衰のバンドパスを通して,全体をそのあと10dBあげれば1,2kHzが持ち上がるのではないかと検討しています.
質問としてはBPFで1,2kHzだけ10、20dB上げることは可能か.
1,2kHz以外を10dBさげるBPFをかけることは可能か
です.
画像は1,2kHz以外を10dBさげるBPFのつもりですがフィルターデザイナーの使い方が良くわかってないので自信がないです.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Audio Processing Algorithm Design in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!