なにごとにも微調整は必要ですので
3番にフリーズでいぃよねーぇ。右から抜けてカムアラウンドありかもぉ。いぃね~。カーリングはおしゃべり(作戦会議)がとても楽しいと思う、かえるのクーの助手の「井戸中 聖」(いとなか セイ)でございます。
実家にまだあるはず。。。 | ||
(なぜカーブをコントロールできる? ) |
(きゅいーん、ほわんほわん...とファインチューニング) |
ウェーブレット・デコードには誤差がつきものなのですが、思いっきり寄せてみます。
ウェーブレット・エンコード/デコードの復習
音をウェーブレットを使ってエンコードするときは、多くの場合、基底となるウェーブレットを倍・倍に伸張(もしくは縮小)してから、元波形とその区間の内積をとる方法を使います。同じ窓幅と信号振幅であれば、周波数が低い方が検出性能が高い傾向があります。(実は数学的に本当にそうなのかは、まだ理解できてないです)
ウェーブレット変換/復元におけるゲイン差歪について
同じ窓幅でも検出周波数(基底ウェーブレットの周波数)が異なれば、エンコード・デコードにより誤差が発生してしまいます。これはウェーブレット変換の宿命といってもいいでしょう。(必ずそうなるので。。。)4月以降にウェーブレット関連の書籍購入の予定なので、数学的理解はおいおいと。。。
音でいえば、1オクターブ内では同じ幅の窓幅を使うことと、(オクターブによる)スケールの切り替え周波数付近では、スケールの異なるウェーブレットエンコード・デコードの重ね合わせとなるため、かなり周波数によるゲイン差が発生してしまいます。下記実例をみていただければよくわかると思います。
※ウェーブレット変換はおおむね↓と同じものを使いました。
同じようなソースを複数貼るのもどうかと思いますので、ちゃんとした改良版ができた時点であたらめて貼ろうと思います。
ホワイトノイズの場合
入力:20KHzまでのホワイトノイズのスペクトル
ウェーブレット変換/復元後スペクトル
歪:=入力と復元波形の差異
プログラムではA音 440Hzを基準に窓枠スケール幅を変えているので、440Hzのオクターブ倍の周波数付近が最もゲインがあり、440Hzと880Hzの中間(もしくはそのオクターブ倍)あたりが出力ゲインが落ちています。
前回作成したキャリブレーション用波形の場合
20Hz@0.0 Sec~24KHz:120.0Sec(2min)~20Hz@240.0Sec(4min)のsin波形です
入力:キャリブレーション用波形スペクトル
入力波形(エンベロープ)
わかりやすいので、エンベロープ(振幅の時間変化)も貼ります。
ウェーブレット変換/復元後スペクトル
復元後波形(エンベロープ)
オクターブ周期でかなりゲインが変動していることがわかります。(視聴上はそれほど変動を感じません)
歪:=入力と復元波形の差異
ホワイトノイズと同じようになりますが、単一周波数を変換/復元しているので、スペクトル値はきれいに測定(計算)できます。
歪波形(エンベロープ)
「入力と出力のdB(音圧)」をあわせてから差分波形を歪として検出しています。
7.0KHz以上の周波数で、それ以下の周波数と若干傾向が異なるのが気になります。理由/原因はあるのでしょうが、それを含めて補正していきますので、深追いしません。
余談ですが、サンプリング周波数が48KHzであれば、「ナイキスト周波数である24KHzまでのsin波はそのまま再現できる」というのは正しくありません。22KHz程度以上になってくると特性が徐々に極端な「くし形」になってくるので、ナイキスト周波数に近づくにつれ、まともに録音/再生できなくなくなります。(これはやってみればすぐわかります)24KHz近くの音は位相と振幅が原音と異なってきます。
人類の可聴周波数上限とよくいわれるのが20KHzですが、CDのサンプリング周波数が44.1KHzであることは、20KHz程度までであれば特性上全く問題なく再現できることから大変理に適っています。
音声の場合
ノイズやキャリブレーション音を貼っても耳が痛いだけなので、音声での例を貼っていきます。波形は「つくよみちゃんコパースの007」*1を使用します。スペクトルではなく、音をそのまま貼ります。
入力音声
出力音声(ウェーブレット変換/復元後)
聞いた感じ、原音とそんなに違わないと思います。(末尾がちょっと切れました)
歪:=入力と復元波形の差異
周波数によりゲインが異なるのが、歪の主な原因ですが、聴覚上問題となることの多い非整数倍音ノイズは残念ながらゼロではありません。(とはいえ少ないですが)
このように、ウェーブレット変換を効率的に行うために設けている窓枠のスケール操作(スケールが変わる部分)と、周波数による波形内積自体の検出ゲイン差の複合により、計算で補正するにはかなり複雑な状況になっています。
現状ではウェーブレットデコードあとの(簡易的な)S/N比は、上記測定より30dB程度です。視聴上はFM放送程度(実用感度で30dB~40dB)くらいはありそうな「感じ」をもっています。
ウェーブレット変換/復元に補正(キャリブレーション)は必須です!
(これであなたも黒江雫たんになれる!かも)
上記のようにウェーブレット変換/復元は元信号にないアーティファクトノイズを比較的発生させにくいしくみなので、音声処理には非常に向いている感想を持っています。
それでもしくみ上、ゲイン差による歪は無視できないものがあります。
そこで、キャリブレーション用波形を用いて、ウェーブレットのデコード補正をして元波形にビッタビタに寄せようと試みるシリーズです。(今回ネタ小出しです)
技術的に難しい点はあまりないので、ゲイン差はそこそこ補正できると思いますが、「どの程度まで改善することが可能なのか?」が今回のテーマとなります。ウェーブレットはまだまだ理解半ばなので、あくまで「エンジニアリング的」にどう補正できるかの観点ですすめていきますので、あしからずです。
(つづく)
ウェーブレット解析の補正(correction) :実験中。。。
*1:謝辞:つよみちゃん、いつも素敵な声を有難うございます。
※この実験にはフリー素材キャラクター「つくよみちゃん」が無料公開している音声データを使用しています。