クーの自由研究

マスターのかえるのクーは、弟子達の召喚術により新たな依り代を得てⅡ世として復活しました。

計算機音楽の自由研究(準備:その5.4)~コレ(自己)ジャナイ符号化器の調整 ~

 

汎用部品として採用です

こんにちは。こんばんわ。かえるのクーです。

f:id:np2LKoo:20170927152421p:plain

ストレートパーマ&癖毛矯正

(c)HOT PEPPER Beauty

 

凝りもせずヘアスタイルアイキャッチ

 コレ自己ジャナイ符号の性能がいいので、実験用の汎用部品とすべく、さらに調整して性能測定します。部品の名称は改めて考えます。
なお、部品にできたらそのうちGitHUBにソースを公開できたらいいなぁ。と考えています。
今回は調整の記録としてのブログで、あまり読みどころはありません。

調整内容

調整は地味な作業で、経過をはってもつまらないので、やり方と結果と最終調整後の性能測定だけを記録します。なお、パラメータの追い込みには自分の耳があてにならないので、ちゃんと測定して判断しました。

やり方

(1)元の波形を48KHzモノラルに変換する(出力と同じフォーマット)
(2)元の波形を符号化器にかけ、復号波形を出力する。
(3)元の波形と符号化器の出力の「差」も出力する。
パワースペクトルが元の波形となるべく同じになるように、全体振幅を一律調整したあと単純な「差」をとり、その波形(波形差)を出力する(最小2乗法相当)
(4)今回の調整では確認にAudacityが適しているので、Audacityに波形をよみとらせ、解析する。(主にスペクトラム分布)
(5)パラメータをかえながら、データを採取して、パラメータを追い込む(データ量がすくなく、かつ特性がほぼ劣化しない点を探す)
(6)数値も、波形も、視聴上もほとんど差がないときは、波形差と波形差のさらに「差」をとり視聴する。(こうすると当たり前ですが、一聴して差がわかる:波形差だけでは違いが分かりにくくても、(パラメータ変更による)「波形差の差」ならわかりやすい。なお、波形差の差が自然な音(周波数特性がフラット)であればまったく問題ない。)

(7)波形差(または波形差の差)に元波形にないノイズが、無視できないくらいあるかかどうか確認し、パラメータをどうするか決める。これは数値と視聴両方で確認する。

なお、今回はほぼどれも、ボクには復号波形が同じ音にしか聞こえないので、音は貼りません。あしからず。(波形差の差は小さい音ですが、わかりやすいです。倍音構成が崩れたり、元の波形にない周波数(歪み)が聞こえます。)

変更・調整点

お題 パラメータ 元のパラメータ
位相バリエーション: 4(90°)とする 16(22.5°)にしていたがそこまでは不要
ウェーブレットの幅:

低域を標準よりこまかくする。(時間(低音のキレ)優先のため)

高域を標準より粗くする。(容量削減のため):

周波数が2倍になれば、ウェーブレットの幅は1/2にする。(これが標準)
ウェーブレット振幅:

周波数の二乗に比例させる

ウエーブレット幅の二乗に比例させる。
ウエーブレットのシフト幅: のままとする 視聴上は3でもよいくらいだが、測定すると微妙なノイズ(元波形とのいや~んな感じの差異)がでる。(5でもさらに改善されるが、改善幅が小さいので4のままとする)
基準音(最低音):

F#0(23.1Hz)とする

48KHzサンプリングに適したレンジになるように調整

ピアノの再低音A#0(27.5Hz)とする。

 

特性測定

聞きなれたサンプル曲で調整しましたが、最終的にホワイトノイズで特性確認します。

元の音(ホワイトノイズ)の特性

元の周波数特性20Hz以下がすこし暴れているように見えますが、フーリエ解析の精度によるものです。ホワイトノイズなので、基本的にフラットです。

Audacityの解析グラフです。音の実験には、AudacityとSoundEngineFreeは必須です。

f:id:np2LKoo:20170927154551p:plain

復号再生音の特性

再生パワーが元の音と少しちがいますが、ほぼフラットです。10KHzまではほぼ±2.0dBに収まっています。

f:id:np2LKoo:20170927154617p:plain

23.1Hz(F#0)以下は合成していないレンジなので、「ない」ので正解です。

10KHz以上は数値的には酷いですが、視聴上はまったく差異がわからない(ボクの耳はばかな耳)ためデータ量がすくない方を採用しています。もうひとつ上のパラメータを選べば本当にきれいにフラットなのですが、実験速度優先=容量優先 にしています。なにせ、高い周波数はデータ量が多い(=計算するポイントが多い:ウェーブレットの幅がせまくシフト幅がせまい:周波数2倍で計算ポイントが2倍となる。)ので、すこしでも削減したいのです。

元の音と復号再生音の差異(歪み)の特性

30Hz~10KHzにおいてほぼフラットなので、素直な再現特性であるといえます。再生特性に偏りがあると右上がりや右下がりのグラフになりますが、いい感じです。

f:id:np2LKoo:20170927154703p:plain

23.1Hz以下はほぼ元の波形の成分です。

少し気になるのはオクターブ毎に発生しているリプル的な乱れです。F#付近での差異増加です。F#は周波数レンジ(ウェーブレットの幅)切り替えの音の周波数なので、この切り替えポイント前後でうまく周波数特性が平滑化されていないような感じです。たしかにプログラムではその点の考慮をしていません。なるほど、F#境界ではウェーブレットの幅をかえるので、余計に重なり振幅が多めにでる区間があります。視聴上は特に問題ないので、今回はそのままスルーします。(追記:と思ったのですが調整しました:追記ここまで)

10KHz以上のくし形の大きな乱れ(差の増加)は「容量削減優先」の大義のもと、目をつむります耳をふさぎます。

(追記:)

結局、重なり部ピークを分散させる感じで調整しました。わずかですが改善しました。

最終調整後の復号波形の特性

f:id:np2LKoo:20170927221202p:plain

最終調整後の波形差の波形(歪み)の特性

f:id:np2LKoo:20170927221251p:plain

30Hzから10KHzの差の最大が、-62dBから-67dBへと改善されており、局所的ピークもある程度解消されたました。まぁ、聞いても全く違いがわからないくらいなのですが。

(:追記ここまで)

そろそろ来月1ヶ月おでかけの準備をしないと

f:id:np2LKoo:20170927175252p:plain

では、ごきげんよう
達者でなァ