otori334 / audio_tools

音・信号処理に関する小ツール群

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

これは何

音・信号処理に関する小ツール群(予定)

  • より優れたツールを見つけたので今はそれを使っている
  • wavの音量を自動で調節するスクリプト
    • 多チャンネル wav 対応
    • プロットを表示するには -p--plot
    • リミッターをかけるには -l--limit
    • コンプレッサーをかけるには -c--comp
    • 音量(デフォルト 60 [db] )を指定するには -d--db
    • 窓関数の幅(デフォルト 64 [sec] )を指定するには -w--window
    • デシベル変換のサンプルサイズ(デフォルト 1024 [sample] )を指定するには -s--sample
  • 音量を一定にするだけでは強弱の情報を失い違和感が生まれるので工夫した
    • 音量の直流バイアスを調節の基準にとる
    • 簡単なコンプレッサーを実装した
      • 唐突な奇声・絶叫によるダメージを軽減できる
      • コンプレッサーをかけても距離の変化を感じられる
        • 音声の真の音量を知るには残響などその他の音量を測る必要がある?
          • 音源分離が必要そう
    • ? wlev とコンプレッサーまたはリミッターを総合した物をマキシマイザーと呼ぶ?
  • "AUTO LEVEL"という TASCAM の録音機に付いている入力レベルを調節する機能を気に入ったのでバッチ処理で再現した
    • リアルタイム処理専用のツールばかりだからバッチ処理用ツールは作り甲斐がある
  • 名前は "wav auto level" から
  • 歩きまわる人間のボリュームを調節し続ける作業から解放するこれはかなり便利でとても役に立つ
  • 48 kHz, 16 bit, 95分のステレオ音声の処理にかかる時間は1分程度(窓関数の幅は256秒,変化の見やすさのため) ↓ wlev_50
  • SciPyが読み込めないwavファイルをSciPyが読み込めるように変換するツール
  • wavファイルの周波数信号をプロットさせるプログラムでエラーが消えない のエラー WavFileWarning: Chunk (non-data) not understood, skipping it. を解決する
  • SciPyの実装を見てないからわからないが一応解決する
  • このエラーはおそらくBWFフォーマットが原因
    • BWFフォーマットに記録された時間情報と実際のデータの長さのズレによる(多分)
    • このツールによりBWFのメタデータは失われる
  • wavファイルをモノラルにするツール
    • 抽出するチャンネルを指定するには -c--ch
      • デフォルトチャンネルは 1
  • wavファイルを切り出すツール
  • オプション引数で切り出し方を指定できる
  • ヒルベルト変換で得た包絡線に基づいて簡単にwavを切り出すやつ
  • 閾値より大きい音か小さい音を抽出する
    • オプション引数--noEnergyで切り替える
  • 背景ノイズ除去に使うノイズプロファイルを作るのに便利
  • 入力サイズに注意が必要
    • 入力ファイルが1分程度の場合は一瞬で終わる
    • 入力ファイルが1時間程度の場合は10分経っても終わらず,実用に耐えない
      • メモリを割と消費する
      • 1分で終わらない
      • 深層学習の方が速い(正確に比べたわけではない)
  • 音量・時間を表示できるようにしたい
  • ステレオファイルに対する挙動は未確認
  • wav音声の先頭に無音を挿入するツール
  • オプション引数とかで後尾に挿入できるようにしたい

About

音・信号処理に関する小ツール群


Languages

Language:Python 90.9%Language:Shell 9.1%