# 保存したpYIN系列をApronに渡した固定120録音の比較

今回の候補は、保存済みの `librosa.pyin` Viterbi F0系列をApronの解析入口に渡し、音声全体をLayer1まで再解析したものです。元Apron、LLSM2 Layer0、候補を同じ120録音・40話者、同じ編集条件と指標の範囲で比べました。9群すべてで、候補よりApronの平均が指標の望ましい方向でした。この結果に基づく開発上の判断として候補は採用せず、作業ベースはApronのままです。計測前に合否の数値閾値を置いたわけではありません。

[結果HTML](https://hiroshiba.github.io/check-nonml-saikyo-vocoder/research/apron-pyin-viterbi-fixed120-2026-10-22/index.html)の冒頭には順位と実際の短い音声を載せました。元の[Apron固定120評価](../apron-fixed120-evaluation-2026-10-22/)の数値・HTML・音声は変更していません。固定120録音は開発にも使ったLibriSpeech test-cleanで、未知の最終検証集合ではありません。候補の不採用から、pYIN一般の性能やF0精度の低さは導けません。

## 保存値と採点区間

- [quality-aggregate.json](quality-aggregate.json)：9群の3方式の値・対応差、4編集群の「編集−無編集」と差の差。元保存JSONと同じbytesです。
- [quality-paired-values.json](quality-paired-values.json)：全120録音×9群の3方式対応値。先頭の `cases` と `groups` が、各行の録音・条件・採点区間を特定します。元保存JSONと同じbytesです。
- [f0-descriptive-summary.json](f0-descriptive-summary.json)：保存F0の2対比、全120録音の要約。元保存JSONと同じbytesです。
- [f0-recordings.json](f0-recordings.json)：保存された120個票の録音別の状態数と、双方正値だけのHz・セント差。完全なフレーム別台帳は含めません。
- [provenance.json](provenance.json)：入力・ソース・旧対照・資産の固定識別子と、監査の範囲。

候補は0、−3、＋3半音の360波形を保存し、新たに1080品質値を測りました。旧ApronとLayer0の2160個票は、公開済みの元評価・後発の補助対照から引用しました。無編集はUTMOSv2の24 kHz全長、ECAPA・SCOREQ・eSTOIの固定16 kHz先頭区間、編集差用のECAPA全長を分けています。編集はUTMOSv2全長とECAPA全長だけです。ECAPAの先頭値を全長の編集差に混ぜていません。

事前固定の集計規則に従い、同じ録音の値を対応させ、録音ごとの差を等重みで平均しました。旧対照の入力・波形・採点区間・source・model資産の保存契約を照合しています。ただし、採点直前PCMの記録済みSHAを原本記録と比べたもので、PCMや採点値を独立に再生成した監査ではありません。別担当のコードによる同一環境の保存値算術監査では、9群と4編集群の不一致は0でした。別環境で音声や採点を再現した結果ではありません。

UTMOSv2の3回の採点では、PyTorchが作った同じ一時ファイル1件ずつが処理終了後に見つからず、元の保存ファイル一覧を完全には再照合できません。各件の欠落を特定した別の終了後監査で、残った個票・モデル資産・ログと計360値を照合しました。原因が実際に終了時削除だったかは、システムコールを記録していないため推定です。警告の見出し行は計1,116行で、独立した原因が1,116件あったことを意味しません。品質値の欠測は0です。

## 保存F0の補助診断

品質採点とは別に、元Apron Layer1→候補Layer1、保存pYIN→候補Layer1の2対比を、同じ名目時点のフレームで読みました。各対比は123,307時点、評価不能0件です。0は保存上の状態で、生理的な無声の正解ではありません。差は「先−元」で、双方正値の時点だけHzとセントに換算しました。全フレーム平均と録音等重み平均を分けています。

固定した2録音の[図の来歴](figure-provenance.json)には、元のフレーム別台帳の容量・SHAと表示の縦軸を記録しました。図は全長6秒、音声プレビューは先頭5秒です。図の値を補間・平滑化していません。候補のC呼出し前後の全float32系列は保存されていないため、保存pYIN→候補Layer1の差をC内部だけの調整量とは呼びません。F0の正解率や品質差の原因は、この2対比からは分かりません。

## 音声と再現の範囲

[audio-manifest.json](audio-manifest.json)に示す新しい音声は、事前に固定した公開IDの2録音×候補3条件、計6本です。保存済み24 kHz float32波形から先頭120,000標本を取り、`round(x × 32767)` でPCM16 WAVにしました。音量補正・クリップ・位置合わせ・再標本化は行っていません。採点には元の全長波形を使っており、プレビューWAVから指標を計算していません。一覧用には、既公開の録音0008の原音・Apron無編集・Layer0無編集をバイト列そのままで3本再利用しました。詳細HTMLは元レポートのWAVを参照します。[出典と改変](audio-credits.html)にLibriSpeechの帰属と再利用元を示します。

候補の全長360波形、巨大なLayer1保存状態、フレーム別F0台帳、モデルの重みはこの公開束に含めません。不採用候補の実装はGit管理外で保管しています。候補を一から再合成するには、その実装が必要です。保存結果の識別と解釈に必要な条件・ハッシュを残し、再現可能な範囲を明示します。
