Tools + Simulatorsnanase.cc / tools

雑音除去と圧縮

聴き比べ

入力
サンプル音源
ファイル

まだ選んでいません

マイク

まだ録っていません

圧縮後の基底
0.00 / 0.00 s計算しています…

Morlet・1 オクターブ 8 行
雑音入り
除いた後

足す雑音

SN 比 雑音の量

dB

閾値の規則
切り方

雑音の σ

λ 閾値の倍率

ずらして平均

残す 残す係数

%

ウェーブレット

動作原理と式

雑音と閾値

y=x+σz⟹dj,k=θj,k+σzj,k硬い:d·1[|d|>λ],柔らかい:sgn(d)max(|d|−λ,0)σ^=median(|d1|)0.6745
z
標準正規の白色雑音
dj,k
段 j・位置 k の詳細の係数
λ
閾値
  • 正規直交の変換なので、白色雑音は係数でも同じ σ の白色雑音[1]
  • 信号は少数の大きな係数に集まり、雑音は全部の係数に薄く広がる。小さい係数を 0 にして戻す
  • σ は最も細かい段の絶対値の中央値から推定する。0.6745 は標準正規の上側 25 % 点(4.2 節)[1]
  • 柔らかい閾値で戻した信号は元の信号より波打たない[3]
  • 近似(最も粗い段)は処理しない

閾値の決め方

規則閾値段ごと出典
VisuShrinkλ=σ^2lnN全段で 1 つ[1]
SureShrinkSURE が最小の t(0≤t≤2lnn)段ごと[2]
BayesShrinkλ=σ^2σ^X段ごと[4]
SURE(t)=n−2#{i:|xi|≤t}+∑imin(xi2,t2)1n∑i(xi2−1)≤(log2n)3/2n⟹t=2lnnσ^X=max(1n∑kdk2−σ^2,0)
  • VisuShrink: 雑音だけの係数がこの閾値を超える確率は N が大きいと 0 に近づく。雑音を消し切るが、信号も削りやすい[1]
  • SURE は元の信号を知らずに柔らかい閾値の誤差を見積もる式(σ = 1 にそろえた xi=di/σ)(式 (6))[2]
  • 係数がまばらな段では SURE がぶれるので、普遍閾値に切り替える(2.4 節)[2]
  • BayesShrink: 信号の強い段ほど閾値が小さい。信号の分散が雑音より小さい段は全部捨てる(式 (19)・(20))[4]

雑音の大きさを段ごとに

λj=σjtj,σ^j=median(|dj|)0.6745
  • 色のついた雑音(ピンク雑音など)は段ごとに強さが違う。段ごとに σj を測って閾値を変える(式 (4))[5][6]
  • 音楽では信号の係数が多い段で中央値が信号に引っ張られ、σj を大きく見積もる。このページは雑音だけの音から σj を測る

ずらして平均する

x^=1H∑h=0H−1S−hT(Shy)
  • 閾値処理は段差や打音の前後に行き過ぎの揺れ(擬似ギブス現象)を出す。大きさは出来事の位置で変わる[7]
  • ずらす(Sh)→ 除く(T)→ 戻す、を何通りもして平均すると揺れが減る
  • 硬い閾値と組み合わせると誤差が半分近くになる例もある(式 (1)・表 2)[7]

係数を残して符号にする

q=sgn(c)⌊|c|Δ⌋,c^=sgn(q)(|q|+½)ΔR=R0+R1,R0≤NH2(K/N),R1=KH(q≠0)D=∑|c|<Δc2+KΔ212
  • 0 のまわりだけ幅 2Δ の一様な量子化(デッドゾーン)。JPEG 2000 と同じ形(式 (4))[9]。Δ を残す境と同じにすると、大きい順に K 個を残すのと同じになる
  • ビット数は「どこに残したか」R0 と「残した値」R1 の和(式 (9)・(10))[8]
  • 誤差は捨てた係数の 2 乗和と、残した係数の丸め(1 個あたり Δ²/12)の和(式 (11)・(13))[8]
  • JPEG 2000 は双直交の 9/7(非可逆)と 5/3(可逆)を使い、ビットプレーンごとに算術符号で送る[9]

フーリエと比べる

Xk=2M∑n=02M−1wnxncos[πM(n+½+M2)(k+½)]wn=sinπ(n+½)2M,wn2+wn+M2=1
  • MDCT: 2M 点の枠を M 点ずつずらす。窓が上の条件を満たすと、重ねて足したときに時間の折り返しが打ち消し合う[10]
  • MP3・AAC は MDCT を使う
  • 量子化の雑音をその時その周波数で聞こえない大きさ(マスキングしきい値)の下に収めてビットを減らす
  • 長い枠では打音の前に雑音がにじむ(プリエコー)ので短い枠に切り替える[11]
  • DCT・DFT は全体を 1 回で変換する。どの係数も全体に広がる波なので、打音を残すには多くの係数が要る
  • DFT の速い計算は FFT、分解の仕組みは ウェーブレット変換

このツールで決めたこと

  • ウェーブレットは Haar・db2・db4、8 段、端は周期的につなぐ。長さは 28 の倍数まで 0 で埋める
  • 雑音は実効値の比で SN 比を決めて足す。白色は正規乱数、ピンクは Kellet の近似のフィルタ
  • 雑音だけの音は、雑音を足したときは足した雑音そのもの、足さないときは音の中で最も静かな 0.4 秒
  • 区間の係数はフィルタの長さの分だけ両端を削って使う
  • サンプル音源は 4 秒。打楽器は 120 BPM の 2 小節、撥弦は 8 音で、繰り返してもテンポが崩れない
  • ずらして平均するのは 8 回(0〜7 点)
  • 圧縮は信号の長さ N の割合で残す数 K を決め、どの基底でも同じ K を残す。Δ は K 番目に大きい係数の絶対値
  • ビット数は量子化した番号の 0 次のエントロピー。前後の係数の関係(文脈)を使わないので、実際の符号化より多め
  • DCT・DFT は全体を 2 の累乗の長さまで 0 で埋めて 1 回で変換する。DCT は Makhoul の並べ替えで FFT 1 回[12]。DFT は余弦と正弦の係数を別に数える
  • MDCT は 2048 点の枠(M = 1024)で、窓は正弦。聴覚の模型は使わない(どの基底も同じ規則で比べる)
  • サンプル音源の撥弦は Karplus・Strong のアルゴリズム[13]
  • ファイルは先頭 10 秒をモノラルにして使う。マイクはブラウザの雑音を消す・音量をそろえる処理を切り、最大 10 秒を録る
  • 聴き比べの音はどれも同じ時刻から繰り返して鳴らし、音量だけを 10 ms ほどで切り替える
  • スカログラムは Morlet(ω0=6)で 50 Hz〜12 kHz を 1 オクターブ 8 行、10 ms ごと。振幅 1 の正弦波が 0 dBFS
  • 音はこの端末の中だけで処理し、送らない

出典

  1. 雑音の模型、硬い・柔らかい閾値、普遍閾値(VisuShrink)、σ̂ の推定(4.2 節)D. L. Donoho and I. M. Johnstone, “Ideal spatial adaptation by wavelet shrinkage,” Biometrika, vol. 81, no. 3, pp. 425–455, 1994, doi:10.1093/biomet/81.3.425
  2. SURE(式 (6))、疎な段での切り替え(2.4 節)、SureShrinkD. L. Donoho and I. M. Johnstone, “Adapting to unknown smoothness via wavelet shrinkage,” Journal of the American Statistical Association, vol. 90, no. 432, pp. 1200–1224, 1995, doi:10.1080/01621459.1995.10476626
  3. 柔らかい閾値の滑らかさD. L. Donoho, “De-noising by soft-thresholding,” IEEE Transactions on Information Theory, vol. 41, no. 3, pp. 613–627, 1995, doi:10.1109/18.382009
  4. BayesShrink(式 (12)・(19)・(20))S. G. Chang, B. Yu, and M. Vetterli, “Adaptive wavelet thresholding for image denoising and compression,” IEEE Transactions on Image Processing, vol. 9, no. 9, pp. 1532–1546, 2000, doi:10.1109/83.862633
  5. 段ごとの σ の推定(式 (4))I. M. Johnstone, “Wavelet shrinkage for correlated data and inverse problems: adaptivity results,” Statistica Sinica, vol. 9, pp. 51–83, 1999
  6. 相関のある雑音での段ごとの閾値I. M. Johnstone and B. W. Silverman, “Wavelet threshold estimators for data with correlated noise,” Journal of the Royal Statistical Society: Series B, vol. 59, no. 2, pp. 319–351, 1997, doi:10.1111/1467-9868.00071
  7. ずらして平均(式 (1)・表 2)、擬似ギブス現象R. R. Coifman and D. L. Donoho, “Translation-invariant de-noising,” in Wavelets and Statistics, Lecture Notes in Statistics, vol. 103, Springer, 1995, pp. 125–150, doi:10.1007/978-1-4612-2544-7_9
  8. 位置と値のビット数(式 (9)・(10))、誤差の分解(式 (11)・(13))S. Mallat and F. Falzon, “Analysis of low bit rate image transform coding,” IEEE Transactions on Signal Processing, vol. 46, no. 4, pp. 1027–1042, 1998, doi:10.1109/78.668554
  9. JPEG 2000 の量子化(式 (4))、9/7 と 5/3、ビットプレーンの符号化A. Skodras, C. Christopoulos, and T. Ebrahimi, “The JPEG 2000 still image compression standard,” IEEE Signal Processing Magazine, vol. 18, no. 5, pp. 36–58, 2001, doi:10.1109/79.952804
  10. 時間の折り返しの打ち消し(TDAC)、MDCTJ. P. Princen and A. B. Bradley, “Analysis/synthesis filter bank design based on time domain aliasing cancellation,” IEEE Transactions on Acoustics, Speech, and Signal Processing, vol. 34, no. 5, pp. 1153–1161, 1986, doi:10.1109/TASSP.1986.1164954
  11. MP3・AAC のフィルタバンク、マスキングしきい値、プリエコーK. Brandenburg, “MP3 and AAC explained,” in Proc. AES 17th International Conference on High-Quality Audio Coding, Florence, 1999, paper 17-009
  12. N 点の FFT による DCTJ. Makhoul, “A fast cosine transform in one and two dimensions,” IEEE Transactions on Acoustics, Speech, and Signal Processing, vol. 28, no. 1, pp. 27–34, 1980, doi:10.1109/TASSP.1980.1163351
  13. 撥弦の音(遅延の線で平均をとって返す)K. Karplus and A. Strong, “Digital synthesis of plucked-string and drum timbres,” Computer Music Journal, vol. 7, no. 2, pp. 43–55, 1983, doi:10.2307/3680062

関連ツール