# 調波解析の感度を測る追加5実験

親が保存済み測定値から作成した補足レポート。2026-10-24 JSTに作成し、2026-10-23 UTCの測定を引用する。新しい自然音声品質評価、採用判断、native処理の独立再実行ではない。現ベースはApronのまま。

## 共通の信号と出典

上流は [LLSM2 d18cdf0](https://github.com/Sleepwalking/libllsm2/tree/d18cdf02b31819670e3bc23ead933ad9467da06d) と [ciglet 895ba9b](https://github.com/Sleepwalking/ciglet/tree/895ba9b1c0eabee83d3544208bbc82420efa3206)。Apronの基準は [固定commit](https://github.com/Hiroshiba/check-nonml-saikyo-vocoder/tree/10705bf653c58afc3af311e091cc6a06b5da4955) の `BASELINE.json` と既存HMPP経路である。ここではベースの全エンコーダーを測らず、同じ上流の部品を直接呼んだ。

標本化周波数は24000 Hz、標本数1921、t=n/24000、中心tc=0.04秒、u=t−tc。fcは100/200 Hz、H=floor(8000/fc)、h=1..H。振幅は A_h=S(1+h fc/1000)^−2、S=0.5/Σ(h=1..80)(1+100h/1000)^−2。位相φ_hは0、全π/2、+πh(h−1)/H、−πh(h−1)/Hの4種類。

定常波はΣ A_h cos(φ_h+2πh fc u)。音高が動く波はΣ A_h cos(φ_h+2πh fc[u+r u²/(2T0)])、T0=4/fc。rは4周期区間での相対変化で、80 ms全体の変化率ではない。中心で8 kHz以下の調波を選ぶが、動く信号の全時間で8 kHz以下とは限らない。有限長波形を厳密な帯域制限信号とも扱わない。

float64で生成し、nativeへはfloat32の連続配列を渡す。HMPP/HMCZT直接解析はnfrm=9、hop=.005秒、F0列の最初8要素は0、最後だけ照会値q。先頭の0は測定フレームの選択であり真の無声ではない。maxnhar=Hは今回の呼出し上限で、Apron全体の上限とは区別する。通常の窓は4周期で、中心標本960に完全に収まる。

## 実験別の変更

- B（80呼出し）: 定常波に e(t)=1+a u/T0、a=−.5,−.1,0,.1,.5を掛ける。中心e=1なので中心振幅の真値はA_h。全時間一定振幅ではない。40条件を2方式で測った。
- C（80呼出し）: 定常波全体をg=1,10^−2,10^−4,10^−6,10^−8倍する。真値はg A_h。40条件を2方式で測った。録音数ではなく同じ8基礎信号の40尺度条件である。
- D（80呼出し）: 定常波を固定し、q=fc·2^(c/1200)、c=−20,−5,0,5,20 cent。照会周波数と窓長が同時に変わる。8入力・40照会条件・2方式であり、40独立入力ではない。
- E（72呼出し）: r=−.1,0,.1の24信号に、初期値c=−20,0,20 centを与え、上流 `llsm_refine_f0` を呼ぶ。これは2方式の調波振幅比較ではない。公開APIから採用調波数は得られず、未観測を0としない。native float32で求まる窓長を使うため、fc=100 Hzの正しい初期値でも959標本、fc=200 Hzでは479標本になる。
- F（144呼出し）: r=−.1,0,.1の24信号を固定し、窓長L=2,4,6周期と2方式で測る。音高の物理軌跡のT0は常に4/fcで、Lに合わせて再定義しない。HMPPのFFT長も窓長に応じて変わる。

すべて1スレッド、固定上流、同キーのnative再実行なし。失敗・未実行・未定義はゼロ誤差として補わない。B/C/Dは各4800調波行、Fは8640行。主帯域は真の中心h fcについて500≤h fc≤8000、低域500≤h fc<4000、高域4000≤h fc≤8000。Eは72個のF0出力で、調波行数に混ぜない。

## 集計

符号付き振幅誤差は20 log10(推定/真値)、絶対誤差はその絶対値。非正・非有限はnullと理由にする。今回は振幅4実験で未定義dBは0。表には条件別主帯域の平均と線形補間P95を表示し、同じ条件のHMPP/HMCZTの平均絶対誤差だけで順位を付ける。丸め前の同値は同順位とする。P95順位や総合品質順位は作らない。

Eは1200 log2(推定F0/fc)を使う。表は同じfc・r・初期ずれについて4位相を等重み平均した絶対cent誤差。初期ずれ0の条件は誤差0からの出発であり、再推定後の小さな非ゼロを一般的な失敗率へ変換しない。

study-*-summary.jsonは元の保存集計をbyte単位でコピーした。`display-values.json` は元JSONから表示列を抜き出したもので、新たなnative測定ではない。各条件には相関があり、研究間の同一制御信号も独立音声数に数えない。統計的な優越や自然音声品質の順位は推定しない。

## 独立照合と限界

B/Cは各240群、Dは240群と3840の基準差、Fは432群・5760の窓長差・5760の定常差・3840の交互作用差、Eは72条件と18群を保存値から照合した。B/Cのmanifestは487/441項目、D/E/Fは440/304/667項目を照合。入力式、float32変換、nativeの保存配列と算術を照合したが、同じnative呼出しを独立実行したわけではない。

Cの梱包では、build lockが参照する展開済みソースや静的ライブラリの一部が同じパスで同梱されていない。上流tarの追跡ファイルと独立算術は照合できたが、ZIPだけの新規展開で同梱audit.pyがそのまま成功する状態ではない。Dの保存後集計にはディレクトリ作成の修正があり、原出力を変えず再集計した。

自然音声の音量実験600解析は別研究であり、この5実験の結果に含めない。そちらはCloud報告で598成功だが成果のLibrary転送が401で止まり、親による原値監査が未完了である。

元JSONの位相名quarter/quadratureは全π/2、chirp_plus/poly_plusは正の二次位相、chirp_minus/poly_minusは負の二次位相を表す。表示表とdisplay-values.jsonでは同じ位相名に揃え、原JSONは変更しない。
