LoginSignup
0
2

More than 5 years have passed since last update.

音を周波数帯ごとに分けるプログラム

Last updated at Posted at 2018-09-23

初投稿になります.

音を低周波数帯,高周波数帯,その間に分けるプログラムを作ったので需要があるかどうかはわかりませんが上げておきます.

soxでhighpass,lowpass処理はできるにはできるのですが,sox(link)の説明を読む限り設定した周波数から音の大きさを減少させていく感じになっているとになっていました.

なので,1つのwavファイルに対して一回STFTでスペクトログラムにしたあと,特定の周波数帯以外を0にしてISTFTして完全に他の周波数帯が入らないようにしました.

configの説明


codeでのconfigに対する説明になります.
* N_FFTとHOP_LENは短時間フーリエ変換,短時間逆フーリエ変換を行う際のパラメータなのでここはいじらなくても大丈夫だと思われます.
* LOWCUT_HZ:ここは実際の周波数帯を打ち込むのではありません.(すいません紛らわしくて)現状では10でだいたい300Hzぐらいです.
* HIGHCUT_HZ:ここも実際の周波数ではありません(30でだいたい1000Hzぐらいです

requirement


  • librosa
  • tqdm
  • numpy
  • matplotlib

おまけ

それぞれカットされたものがどのようなスペクトログラムになっているのかを表すコードもつけておきました.使うときには'''を外してください

fig,axes = plt.subplots(ncols=3,nrows=1,figsize=(12,9))
plt.subplot(3,1,1)
display.specshow(spec_high,hop_length=HOP_LEN,x_axis='time',y_axis='hz')
plt.subplot(3,1,2)
display.specshow(spec,hop_length=HOP_LEN,x_axis='time',y_axis='hz')
plt.subplot(3,1,3)
display.specshow(spec_low,hop_length=HOP_LEN,x_axis='time',y_axis='hz')
plt.show()

Codeの場所

ここ(link)にあります.

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2