自作HNMとWORLD(Harvest)の比較

ベース:自作HNM。誤差は小さいほど原音に近く、差分は自作HNM比です。知覚品質の勝敗ではありません。

入力群方式MR-STFT中央値 dB差分中央値 dB有効/全件比較可能/全件処理・測定失敗/全件
自然音声自作HNM5.6380.0002/22/20/2
自然音声WORLD(Harvest)5.537-0.1012/22/20/2
人工信号自作HNM1.3740.00030/3030/300/30
人工信号WORLD(Harvest)4.5062.13530/3030/300/30

同じ区間の音声を比較

原音は無加工再合成の正解参照です。音量の正規化はしていません。

110 Hzの調波音

harmonic_110_16000

原音

1.2秒・16000 Hz

自作HNM(ベース)

1.2秒・16000 Hz

WORLD(Harvest)

1.2秒・16000 Hz

自然音声の固定先頭区間

librispeech_5142-36586_first6s

原音

2.0秒・16000 Hz

自作HNM(ベース)

2.0秒・16000 Hz

WORLD(Harvest)

2.0秒・16000 Hz

自然音声の固定先頭区間

librispeech_7021-79759_first6s

原音

2.0秒・16000 Hz

自作HNM(ベース)

2.0秒・16000 Hz

WORLD(Harvest)

2.0秒・16000 Hz

比較条件と指標の読み方

ユーザーの方針変更に従い、自作の調波・雑音方式を改善の出発点とする。WORLD(Harvest)は既存比較対象であり、初代採用はWORLDへの品質優越を意味しない。

自然音声は2話者・2区間・計12.0秒です。人工信号は評価対象のデコーダーとは独立に生成しています。

MR-STFTは5・20・80 ms窓のスペクトル誤差です。表はケース中央値、差分は対応するケース同士の差の中央値です。自動時間整列・ゲイン正規化は行いません。—は欠測・未定義であり、ゼロ誤差ではありません。

F0は音高に対応する基本周波数、100 centは1半音、P95は誤差の95パーセンタイルです。有声の欠測と誤有声は別に示します。F0測定には固定2 kHz低域通過処理を含む独立YIN型測定器を使います。自然音声の絶対正解F0はありません。

WORLD(Harvest)はWORLDボコーダーにHarvestによるF0抽出を組み合わせた既存比較です。自作HNMは独自の解析・合成系です。原音は比較の参照であり、手法の順位には含めません。今回の測定だけで自然性、共鳴保持、多話者への一般化を保証しません。

測定仕様 / 音高測定器の校正 / 5人の議論

再合成の全ケースとF0欠測
入力方式処理測定MR-STFT dB差分 dB帯域差 dBRMS差 dB真値F0 P95 cent測定できた/真値の有声フレーム有声の欠測誤有声長さ差 サンプル再実行最大差
正弦波(sine_120_16000)自作HNM処理完了測定完了1.2370.0000.248-0.2430.964113/1130000.000000000
正弦波(sine_120_16000)WORLD(Harvest)処理完了測定完了9.0317.7949.179-1.601—0/113113000.000000000
調波音(harmonic_110_16000)自作HNM処理完了測定完了0.6590.0000.026-0.0050.069113/1130000.000000000
調波音(harmonic_110_16000)WORLD(Harvest)処理完了測定完了7.3376.6780.2210.5170.059113/1130000.000000000
調波音(harmonic_220_16000)自作HNM処理完了測定完了1.8720.0000.031-0.0100.085113/1130000.000000000
調波音(harmonic_220_16000)WORLD(Harvest)処理完了測定完了7.5335.6610.7400.5090.152113/1130000.000000000
基本波を除いた調波音(missing_fundamental_150_16000)自作HNM処理完了測定完了3.7780.0000.037-0.0700.129113/1130000.000000000
基本波を除いた調波音(missing_fundamental_150_16000)WORLD(Harvest)処理完了測定完了13.3229.5441.3060.645—0/113113000.000000000
音高が連続的に変わる調波音(harmonic_sweep_90_240_16000)自作HNM処理完了測定完了1.6200.0000.035-0.0483.109143/1430000.000000000
音高が連続的に変わる調波音(harmonic_sweep_90_240_16000)WORLD(Harvest)処理完了測定完了3.4121.7920.6260.6113.907143/1430000.000000000
パルス列と共鳴器による母音様音(pulse_iir_vowel_90_16000)自作HNM処理完了測定完了1.3810.0000.128-0.0850.273113/1130000.000000000
パルス列と共鳴器による母音様音(pulse_iir_vowel_90_16000)WORLD(Harvest)処理完了測定完了2.3450.9640.4990.5590.282113/1130000.000000000
音量が周期的に変わる雑音(am_noise_6hz_16000)自作HNM処理完了測定完了6.1420.0001.327-0.047—0/00000.000000000
音量が周期的に変わる雑音(am_noise_6hz_16000)WORLD(Harvest)処理完了測定完了6.6570.5162.6730.319—0/00000.000000000
有声・無声の切替(voiced_unvoiced_boundaries_16000)自作HNM処理完了測定完了3.3130.0000.136-0.0170.25396/960000.000000000
有声・無声の切替(voiced_unvoiced_boundaries_16000)WORLD(Harvest)処理完了測定完了4.9091.5950.2780.4510.43996/960000.000000000
無音(silence_16000)自作HNM処理完了測定完了0.0000.000———0/00000.000000000
無音(silence_16000)WORLD(Harvest)処理完了測定完了14.74714.747———0/00000.000000000
瞬間的なパルス(impulse_16000)自作HNM処理完了測定完了3.7170.0001.1980.066—0/00000.000000000
瞬間的なパルス(impulse_16000)WORLD(Harvest)処理完了測定完了1.926-1.7913.3013.477—0/00000.000000000
正弦波(sine_120_24000)自作HNM処理完了測定完了0.8620.0000.178-0.1711.190113/1130000.000000000
正弦波(sine_120_24000)WORLD(Harvest)処理完了測定完了6.3295.4679.624-1.557—0/113113000.000000000
調波音(harmonic_110_24000)自作HNM処理完了測定完了0.5160.0000.103-0.1090.039113/1130000.000000000
調波音(harmonic_110_24000)WORLD(Harvest)処理完了測定完了5.0724.5570.2440.5460.095113/1130000.000000000
調波音(harmonic_220_24000)自作HNM処理完了測定完了1.0550.0000.177-0.0730.128113/1130000.000000000
調波音(harmonic_220_24000)WORLD(Harvest)処理完了測定完了4.3503.2950.5660.5300.161113/1130000.000000000
基本波を除いた調波音(missing_fundamental_150_24000)自作HNM処理完了測定完了2.0100.0000.056-0.1050.036113/1130000.000000000
基本波を除いた調波音(missing_fundamental_150_24000)WORLD(Harvest)処理完了測定完了9.0477.0371.3460.566—0/113113000.000000000
音高が連続的に変わる調波音(harmonic_sweep_90_240_24000)自作HNM処理完了測定完了1.4160.0000.062-0.0713.236143/1430000.000000000
音高が連続的に変わる調波音(harmonic_sweep_90_240_24000)WORLD(Harvest)処理完了測定完了3.4622.0460.6210.6213.789143/1430000.000000000
パルス列と共鳴器による母音様音(pulse_iir_vowel_90_24000)自作HNM処理完了測定完了1.0100.0000.141-0.0420.096113/1130000.000000000
パルス列と共鳴器による母音様音(pulse_iir_vowel_90_24000)WORLD(Harvest)処理完了測定完了3.2342.2240.4750.5480.202113/1130000.000000000
音量が周期的に変わる雑音(am_noise_6hz_24000)自作HNM処理完了測定完了5.7790.0002.0280.091—0/00000.000000000
音量が周期的に変わる雑音(am_noise_6hz_24000)WORLD(Harvest)処理完了測定完了5.8510.0722.3360.117—0/00000.000000000
有声・無声の切替(voiced_unvoiced_boundaries_24000)自作HNM処理完了測定完了2.8210.0000.226-0.0750.16296/960000.000000000
有声・無声の切替(voiced_unvoiced_boundaries_24000)WORLD(Harvest)処理完了測定完了4.5091.6880.2950.4810.27696/960000.000000000
無音(silence_24000)自作HNM処理完了測定完了0.0000.000———0/00000.000000000
無音(silence_24000)WORLD(Harvest)処理完了測定完了13.23013.230———0/00000.000000000
瞬間的なパルス(impulse_24000)自作HNM処理完了測定完了3.0520.0001.0740.298—0/00000.000000000
瞬間的なパルス(impulse_24000)WORLD(Harvest)処理完了測定完了1.917-1.1362.8052.959—0/00000.000000000
正弦波(sine_120_48000)自作HNM処理完了測定完了0.6590.0000.879-0.8691.751113/1130000.000000000
正弦波(sine_120_48000)WORLD(Harvest)処理完了測定完了3.2352.5769.407-1.387—0/113113000.000000000
調波音(harmonic_110_48000)自作HNM処理完了測定完了0.4140.0000.200-0.2600.026113/1130000.000000000
調波音(harmonic_110_48000)WORLD(Harvest)処理完了測定完了2.6852.2700.2400.5460.088113/1130000.000000000
調波音(harmonic_220_48000)自作HNM処理完了測定完了0.8190.0000.372-0.1120.042113/1130000.000000000
調波音(harmonic_220_48000)WORLD(Harvest)処理完了測定完了2.2871.4680.5670.5310.095113/1130000.000000000
基本波を除いた調波音(missing_fundamental_150_48000)自作HNM処理完了測定完了1.3660.0000.156-0.3180.031113/1130000.000000000
基本波を除いた調波音(missing_fundamental_150_48000)WORLD(Harvest)処理完了測定完了4.5023.1371.3640.905—0/113113000.000000000
音高が連続的に変わる調波音(harmonic_sweep_90_240_48000)自作HNM処理完了測定完了0.8580.0000.088-0.1133.103143/1430000.000000000
音高が連続的に変わる調波音(harmonic_sweep_90_240_48000)WORLD(Harvest)処理完了測定完了2.0071.1490.6130.6213.813143/1430000.000000000
パルス列と共鳴器による母音様音(pulse_iir_vowel_90_48000)自作HNM処理完了測定完了0.9480.0000.244-0.2670.053113/1130000.000000000
パルス列と共鳴器による母音様音(pulse_iir_vowel_90_48000)WORLD(Harvest)処理完了測定完了2.1961.2480.4760.5470.151113/1130000.000000000
音量が周期的に変わる雑音(am_noise_6hz_48000)自作HNM処理完了測定完了5.2840.0002.522-0.027—0/00000.000000000
音量が周期的に変わる雑音(am_noise_6hz_48000)WORLD(Harvest)処理完了測定完了5.088-0.1952.1940.186—0/00000.000000000
有声・無声の切替(voiced_unvoiced_boundaries_48000)自作HNM処理完了測定完了2.4880.0000.297-0.1790.16196/960000.000000000
有声・無声の切替(voiced_unvoiced_boundaries_48000)WORLD(Harvest)処理完了測定完了3.1220.6340.2400.4920.41896/960000.000000000
無音(silence_48000)自作HNM処理完了測定完了0.0000.000———0/00000.000000000
無音(silence_48000)WORLD(Harvest)処理完了測定完了10.53610.536———0/00000.000000000
瞬間的なパルス(impulse_48000)自作HNM処理完了測定完了3.0530.0001.013-0.047—0/00000.000000000
瞬間的なパルス(impulse_48000)WORLD(Harvest)処理完了測定完了1.898-1.1563.9203.550—0/00000.000000000
LibriSpeechの自然音声(librispeech_5142-36586_first6s)自作HNM処理完了測定完了5.9660.0000.163-0.120——/———00.000000000
LibriSpeechの自然音声(librispeech_5142-36586_first6s)WORLD(Harvest)処理完了測定完了5.681-0.2860.6630.773——/———00.000000000
LibriSpeechの自然音声(librispeech_7021-79759_first6s)自作HNM処理完了測定完了5.3100.0000.227-0.014——/———00.000000000
LibriSpeechの自然音声(librispeech_7021-79759_first6s)WORLD(Harvest)処理完了測定完了5.3930.0830.8450.778——/———00.000000000
操作の追従と欠測

ゲイン・音高・時間長の変更を測定します。真値F0との誤差と、未操作出力からの相対変化推定は別の値です。全長一致は局所タイミングの保持を保証しません。帯域変化は未操作出力との差で、音高変更に伴う正常な変化も含む診断値です。

入力方式操作状態ゲイン追従誤差 dB音高編集後の帯域変化 dB真値F0 P95 cent測定できた/真値の有声フレーム有声の欠測誤有声相対F0誤差 P95 cent相対比較可能/全フレーム長さ誤差 サンプルイベント誤差 ms
調波音(harmonic_110_16000)自作HNM音高 +3半音処理完了—0.7980.079113/113000.085113/1130—
調波音(harmonic_110_16000)自作HNM音高 −3半音処理完了—1.0720.053113/113000.093113/1130—
調波音(harmonic_110_16000)自作HNM音量 +6 dB処理完了0.000000—0.069113/113000.000113/1130—
調波音(harmonic_110_16000)自作HNM音量 −6 dB処理完了0.000000—0.069113/113000.000113/1130—
調波音(harmonic_110_16000)自作HNM時間長 1.25倍処理完了————/—————/—0—
調波音(harmonic_110_16000)WORLD(Harvest)音高 +3半音処理完了—0.5610.117113/113000.116113/1130—
調波音(harmonic_110_16000)WORLD(Harvest)音高 −3半音処理完了—0.7990.075113/113000.079113/1130—
調波音(harmonic_110_16000)WORLD(Harvest)音量 +6 dB処理完了0.000009—0.072113/113000.020113/1130—
調波音(harmonic_110_16000)WORLD(Harvest)音量 −6 dB処理完了-0.000012—0.053113/113000.011113/1130—
調波音(harmonic_110_16000)WORLD(Harvest)時間長 1.25倍処理完了————/—————/—0—
有声・無声の切替(voiced_unvoiced_boundaries_16000)自作HNM音高 +3半音処理完了—3.5930.19996/96000.623100/1530—
有声・無声の切替(voiced_unvoiced_boundaries_16000)自作HNM音高 −3半音処理完了—0.8040.24896/96001.172101/1530—
有声・無声の切替(voiced_unvoiced_boundaries_16000)自作HNM音量 +6 dB処理完了0.000000—0.25396/96000.000101/1530—
有声・無声の切替(voiced_unvoiced_boundaries_16000)自作HNM音量 −6 dB処理完了-0.000000—0.25396/96000.000101/1530—
有声・無声の切替(voiced_unvoiced_boundaries_16000)自作HNM時間長 1.25倍処理完了————/—————/—0—
有声・無声の切替(voiced_unvoiced_boundaries_16000)WORLD(Harvest)音高 +3半音処理完了—3.9890.38396/96000.25898/1530—
有声・無声の切替(voiced_unvoiced_boundaries_16000)WORLD(Harvest)音高 −3半音処理完了—0.8210.30696/96000.23997/1530—
有声・無声の切替(voiced_unvoiced_boundaries_16000)WORLD(Harvest)音量 +6 dB処理完了-0.000052—0.47296/96000.09598/1530—
有声・無声の切替(voiced_unvoiced_boundaries_16000)WORLD(Harvest)音量 −6 dB処理完了0.000046—0.43696/96000.08198/1530—
有声・無声の切替(voiced_unvoiced_boundaries_16000)WORLD(Harvest)時間長 1.25倍処理完了————/—————/—0—
瞬間的なパルス(impulse_16000)自作HNM音高 +3半音処理完了—0.000—0/000—0/7302.000
瞬間的なパルス(impulse_16000)自作HNM音高 −3半音処理完了—0.000—0/000—0/7302.000
瞬間的なパルス(impulse_16000)自作HNM音量 +6 dB処理完了0.000000——0/000—0/7302.000
瞬間的なパルス(impulse_16000)自作HNM音量 −6 dB処理完了-0.000000——0/000—0/7302.000
瞬間的なパルス(impulse_16000)自作HNM時間長 1.25倍処理完了————/—————/—0-0.125
瞬間的なパルス(impulse_16000)WORLD(Harvest)音高 +3半音処理完了—0.000—0/000—0/7301.688
瞬間的なパルス(impulse_16000)WORLD(Harvest)音高 −3半音処理完了—0.000—0/000—0/7301.688
瞬間的なパルス(impulse_16000)WORLD(Harvest)音量 +6 dB処理完了-0.000000——0/000—0/7301.688
瞬間的なパルス(impulse_16000)WORLD(Harvest)音量 −6 dB処理完了0.000000——0/000—0/7301.688
瞬間的なパルス(impulse_16000)WORLD(Harvest)時間長 1.25倍処理完了————/—————/—01.500
LibriSpeechの自然音声(librispeech_5142-36586_first6s)自作HNM音高 +3半音処理完了—1.340——/———7.534146/5930—
LibriSpeechの自然音声(librispeech_5142-36586_first6s)自作HNM音高 −3半音処理完了—0.484——/———12.565122/5930—
LibriSpeechの自然音声(librispeech_5142-36586_first6s)自作HNM音量 +6 dB処理完了-0.000000———/———0.000157/5930—
LibriSpeechの自然音声(librispeech_5142-36586_first6s)自作HNM音量 −6 dB処理完了-0.000000———/———0.000157/5930—
LibriSpeechの自然音声(librispeech_5142-36586_first6s)自作HNM時間長 1.25倍処理完了————/—————/—0—
LibriSpeechの自然音声(librispeech_5142-36586_first6s)WORLD(Harvest)音高 +3半音処理完了—1.135——/———7.099144/5930—
LibriSpeechの自然音声(librispeech_5142-36586_first6s)WORLD(Harvest)音高 −3半音処理完了—0.537——/———6.717112/5930—
LibriSpeechの自然音声(librispeech_5142-36586_first6s)WORLD(Harvest)音量 +6 dB処理完了0.000005———/———0.002152/5930—
LibriSpeechの自然音声(librispeech_5142-36586_first6s)WORLD(Harvest)音量 −6 dB処理完了-0.000015———/———0.008152/5930—
LibriSpeechの自然音声(librispeech_5142-36586_first6s)WORLD(Harvest)時間長 1.25倍処理完了————/—————/—0—
LibriSpeechの自然音声(librispeech_7021-79759_first6s)自作HNM音高 +3半音処理完了—0.836——/———18.53693/5930—
LibriSpeechの自然音声(librispeech_7021-79759_first6s)自作HNM音高 −3半音処理完了—0.310——/———16.88775/5930—
LibriSpeechの自然音声(librispeech_7021-79759_first6s)自作HNM音量 +6 dB処理完了0.000000———/———0.00098/5930—
LibriSpeechの自然音声(librispeech_7021-79759_first6s)自作HNM音量 −6 dB処理完了-0.000000———/———0.00098/5930—
LibriSpeechの自然音声(librispeech_7021-79759_first6s)自作HNM時間長 1.25倍処理完了————/—————/—0—
LibriSpeechの自然音声(librispeech_7021-79759_first6s)WORLD(Harvest)音高 +3半音処理完了—0.758——/———16.124119/5930—
LibriSpeechの自然音声(librispeech_7021-79759_first6s)WORLD(Harvest)音高 −3半音処理完了—0.528——/———10.27596/5930—
LibriSpeechの自然音声(librispeech_7021-79759_first6s)WORLD(Harvest)音量 +6 dB処理完了0.000001———/———0.003119/5930—
LibriSpeechの自然音声(librispeech_7021-79759_first6s)WORLD(Harvest)音量 −6 dB処理完了-0.000001———/———0.008119/5930—
LibriSpeechの自然音声(librispeech_7021-79759_first6s)WORLD(Harvest)時間長 1.25倍処理完了————/—————/—0—
エンコーダーを通さない合成

手作り特徴からの合成です。全値が有限でも、聴感品質の合格を示すものではありません。

方式指定F0 Hz状態出力サンプル数全値が有限真値F0 P95 cent測定できた/真値の有声フレーム有声の欠測誤有声
自作HNM0.0処理完了8000はい—0/000
自作HNM140.0処理完了8000はい0.09243/4300
WORLD(Harvest)0.0処理完了8000はい—0/000
WORLD(Harvest)140.0処理完了8000はい0.19843/4300
細部表現などの診断
入力方式条件状態真値F0 P95 cent測定できた/真値の有声フレーム有声の欠測誤有声
調波音(harmonic_110_16000)自作HNM保存・読込処理完了——/———
調波音(harmonic_110_16000)自作HNM位相細部あり・音高-3半音処理完了0.053113/11300
調波音(harmonic_110_16000)自作HNM位相細部あり・音高+3半音処理完了0.079113/11300
調波音(harmonic_110_16000)自作HNM位相細部なし・音高-3半音処理完了0.173113/11300
調波音(harmonic_110_16000)自作HNM位相細部なし・音高+3半音処理完了0.116113/11300
調波音(harmonic_110_16000)自作HNM雑音成分だけの周期性処理完了—0/000
調波音(harmonic_220_16000)自作HNM保存・読込処理完了——/———
調波音(harmonic_220_16000)自作HNM位相細部あり・音高-3半音処理完了0.095113/11300
調波音(harmonic_220_16000)自作HNM位相細部あり・音高+3半音処理完了0.240113/11300
調波音(harmonic_220_16000)自作HNM位相細部なし・音高-3半音処理完了0.155113/11300
調波音(harmonic_220_16000)自作HNM位相細部なし・音高+3半音処理完了0.108113/11300
調波音(harmonic_220_16000)自作HNM雑音成分だけの周期性処理完了—0/000
診断の全値
[
  {
    "case": "harmonic_110_16000",
    "diagnostic": "save_load",
    "label": "保存・読込",
    "status": "measured",
    "max_abs_waveform_difference": 0.0,
    "compressed_parameter_bytes": 1994215
  },
  {
    "case": "harmonic_110_16000",
    "diagnostic": "phase_detail_pitch",
    "status": "measured",
    "details": true,
    "pitch_semitones": -3,
    "label": "位相細部あり・音高-3半音",
    "pitch": {
      "estimator": "independent-yin-difference-v2-prefiltered",
      "frame_ms": 80.0,
      "hop_ms": 10.0,
      "prefilter": {
        "kind": "butterworth-forward-backward",
        "order_per_pass": 6,
        "cutoff_hz": 2000.0,
        "pad_type": "even",
        "max_pad_samples": 1280
      },
      "validated_scope": "independent synthetic calibration; requires sufficient periodic energy below 2 kHz; not validated for natural speech",
      "fmin_hz": 65.0,
      "fmax_hz": 700.0,
      "total_frames": 113,
      "expected_voiced_frames": 113,
      "expected_unvoiced_frames": 0,
      "boundary_frames": 0,
      "boundary_policy": "mixed-truth windows counted but excluded from cent and UV summaries",
      "valid_voiced_frames": 113,
      "missing_voiced_frames": 0,
      "false_voiced_frames": 0,
      "gross_pitch_error_frames": 0,
      "abs_error_cents_median": 0.01666288069039127,
      "abs_error_cents_p95": 0.05288558340036764,
      "voiced_detection_rate": 1.0,
      "unvoiced_false_positive_rate": null,
      "score_status": "ok",
      "uncovered_tail_samples": 0
    }
  },
  {
    "case": "harmonic_110_16000",
    "diagnostic": "phase_detail_pitch",
    "status": "measured",
    "details": true,
    "pitch_semitones": 3,
    "label": "位相細部あり・音高+3半音",
    "pitch": {
      "estimator": "independent-yin-difference-v2-prefiltered",
      "frame_ms": 80.0,
      "hop_ms": 10.0,
      "prefilter": {
        "kind": "butterworth-forward-backward",
        "order_per_pass": 6,
        "cutoff_hz": 2000.0,
        "pad_type": "even",
        "max_pad_samples": 1280
      },
      "validated_scope": "independent synthetic calibration; requires sufficient periodic energy below 2 kHz; not validated for natural speech",
      "fmin_hz": 65.0,
      "fmax_hz": 700.0,
      "total_frames": 113,
      "expected_voiced_frames": 113,
      "expected_unvoiced_frames": 0,
      "boundary_frames": 0,
      "boundary_policy": "mixed-truth windows counted but excluded from cent and UV summaries",
      "valid_voiced_frames": 113,
      "missing_voiced_frames": 0,
      "false_voiced_frames": 0,
      "gross_pitch_error_frames": 0,
      "abs_error_cents_median": 0.06895333819393065,
      "abs_error_cents_p95": 0.07903017642258851,
      "voiced_detection_rate": 1.0,
      "unvoiced_false_positive_rate": null,
      "score_status": "ok",
      "uncovered_tail_samples": 0
    }
  },
  {
    "case": "harmonic_110_16000",
    "diagnostic": "phase_detail_pitch",
    "status": "measured",
    "details": false,
    "pitch_semitones": -3,
    "label": "位相細部なし・音高-3半音",
    "pitch": {
      "estimator": "independent-yin-difference-v2-prefiltered",
      "frame_ms": 80.0,
      "hop_ms": 10.0,
      "prefilter": {
        "kind": "butterworth-forward-backward",
        "order_per_pass": 6,
        "cutoff_hz": 2000.0,
        "pad_type": "even",
        "max_pad_samples": 1280
      },
      "validated_scope": "independent synthetic calibration; requires sufficient periodic energy below 2 kHz; not validated for natural speech",
      "fmin_hz": 65.0,
      "fmax_hz": 700.0,
      "total_frames": 113,
      "expected_voiced_frames": 113,
      "expected_unvoiced_frames": 0,
      "boundary_frames": 0,
      "boundary_policy": "mixed-truth windows counted but excluded from cent and UV summaries",
      "valid_voiced_frames": 113,
      "missing_voiced_frames": 0,
      "false_voiced_frames": 0,
      "gross_pitch_error_frames": 0,
      "abs_error_cents_median": 0.0572510897087474,
      "abs_error_cents_p95": 0.1733296071556432,
      "voiced_detection_rate": 1.0,
      "unvoiced_false_positive_rate": null,
      "score_status": "ok",
      "uncovered_tail_samples": 0
    }
  },
  {
    "case": "harmonic_110_16000",
    "diagnostic": "phase_detail_pitch",
    "status": "measured",
    "details": false,
    "pitch_semitones": 3,
    "label": "位相細部なし・音高+3半音",
    "pitch": {
      "estimator": "independent-yin-difference-v2-prefiltered",
      "frame_ms": 80.0,
      "hop_ms": 10.0,
      "prefilter": {
        "kind": "butterworth-forward-backward",
        "order_per_pass": 6,
        "cutoff_hz": 2000.0,
        "pad_type": "even",
        "max_pad_samples": 1280
      },
      "validated_scope": "independent synthetic calibration; requires sufficient periodic energy below 2 kHz; not validated for natural speech",
      "fmin_hz": 65.0,
      "fmax_hz": 700.0,
      "total_frames": 113,
      "expected_voiced_frames": 113,
      "expected_unvoiced_frames": 0,
      "boundary_frames": 0,
      "boundary_policy": "mixed-truth windows counted but excluded from cent and UV summaries",
      "valid_voiced_frames": 113,
      "missing_voiced_frames": 0,
      "false_voiced_frames": 0,
      "gross_pitch_error_frames": 0,
      "abs_error_cents_median": 0.0981959185644729,
      "abs_error_cents_p95": 0.115935763250896,
      "voiced_detection_rate": 1.0,
      "unvoiced_false_positive_rate": null,
      "score_status": "ok",
      "uncovered_tail_samples": 0
    }
  },
  {
    "case": "harmonic_110_16000",
    "diagnostic": "noise_only_periodicity",
    "label": "雑音成分だけの周期性",
    "status": "measured",
    "pitch": {
      "estimator": "independent-yin-difference-v2-prefiltered",
      "frame_ms": 80.0,
      "hop_ms": 10.0,
      "prefilter": {
        "kind": "butterworth-forward-backward",
        "order_per_pass": 6,
        "cutoff_hz": 2000.0,
        "pad_type": "even",
        "max_pad_samples": 1280
      },
      "validated_scope": "independent synthetic calibration; requires sufficient periodic energy below 2 kHz; not validated for natural speech",
      "fmin_hz": 65.0,
      "fmax_hz": 700.0,
      "total_frames": 113,
      "expected_voiced_frames": 0,
      "expected_unvoiced_frames": 113,
      "boundary_frames": 0,
      "boundary_policy": "mixed-truth windows counted but excluded from cent and UV summaries",
      "valid_voiced_frames": 0,
      "missing_voiced_frames": 0,
      "false_voiced_frames": 0,
      "gross_pitch_error_frames": 0,
      "abs_error_cents_median": null,
      "abs_error_cents_p95": null,
      "voiced_detection_rate": null,
      "unvoiced_false_positive_rate": 0.0,
      "score_status": "no_valid_voiced_frames",
      "uncovered_tail_samples": 0
    },
    "rms": 0.00779256730275366
  },
  {
    "case": "harmonic_220_16000",
    "diagnostic": "save_load",
    "label": "保存・読込",
    "status": "measured",
    "max_abs_waveform_difference": 0.0,
    "compressed_parameter_bytes": 1962438
  },
  {
    "case": "harmonic_220_16000",
    "diagnostic": "phase_detail_pitch",
    "status": "measured",
    "details": true,
    "pitch_semitones": -3,
    "label": "位相細部あり・音高-3半音",
    "pitch": {
      "estimator": "independent-yin-difference-v2-prefiltered",
      "frame_ms": 80.0,
      "hop_ms": 10.0,
      "prefilter": {
        "kind": "butterworth-forward-backward",
        "order_per_pass": 6,
        "cutoff_hz": 2000.0,
        "pad_type": "even",
        "max_pad_samples": 1280
      },
      "validated_scope": "independent synthetic calibration; requires sufficient periodic energy below 2 kHz; not validated for natural speech",
      "fmin_hz": 65.0,
      "fmax_hz": 700.0,
      "total_frames": 113,
      "expected_voiced_frames": 113,
      "expected_unvoiced_frames": 0,
      "boundary_frames": 0,
      "boundary_policy": "mixed-truth windows counted but excluded from cent and UV summaries",
      "valid_voiced_frames": 113,
      "missing_voiced_frames": 0,
      "false_voiced_frames": 0,
      "gross_pitch_error_frames": 0,
      "abs_error_cents_median": 0.07110957671636121,
      "abs_error_cents_p95": 0.09523517359699768,
      "voiced_detection_rate": 1.0,
      "unvoiced_false_positive_rate": null,
      "score_status": "ok",
      "uncovered_tail_samples": 0
    }
  },
  {
    "case": "harmonic_220_16000",
    "diagnostic": "phase_detail_pitch",
    "status": "measured",
    "details": true,
    "pitch_semitones": 3,
    "label": "位相細部あり・音高+3半音",
    "pitch": {
      "estimator": "independent-yin-difference-v2-prefiltered",
      "frame_ms": 80.0,
      "hop_ms": 10.0,
      "prefilter": {
        "kind": "butterworth-forward-backward",
        "order_per_pass": 6,
        "cutoff_hz": 2000.0,
        "pad_type": "even",
        "max_pad_samples": 1280
      },
      "validated_scope": "independent synthetic calibration; requires sufficient periodic energy below 2 kHz; not validated for natural speech",
      "fmin_hz": 65.0,
      "fmax_hz": 700.0,
      "total_frames": 113,
      "expected_voiced_frames": 113,
      "expected_unvoiced_frames": 0,
      "boundary_frames": 0,
      "boundary_policy": "mixed-truth windows counted but excluded from cent and UV summaries",
      "valid_voiced_frames": 113,
      "missing_voiced_frames": 0,
      "false_voiced_frames": 0,
      "gross_pitch_error_frames": 0,
      "abs_error_cents_median": 0.22482079169244507,
      "abs_error_cents_p95": 0.2399662185777849,
      "voiced_detection_rate": 1.0,
      "unvoiced_false_positive_rate": null,
      "score_status": "ok",
      "uncovered_tail_samples": 0
    }
  },
  {
    "case": "harmonic_220_16000",
    "diagnostic": "phase_detail_pitch",
    "status": "measured",
    "details": false,
    "pitch_semitones": -3,
    "label": "位相細部なし・音高-3半音",
    "pitch": {
      "estimator": "independent-yin-difference-v2-prefiltered",
      "frame_ms": 80.0,
      "hop_ms": 10.0,
      "prefilter": {
        "kind": "butterworth-forward-backward",
        "order_per_pass": 6,
        "cutoff_hz": 2000.0,
        "pad_type": "even",
        "max_pad_samples": 1280
      },
      "validated_scope": "independent synthetic calibration; requires sufficient periodic energy below 2 kHz; not validated for natural speech",
      "fmin_hz": 65.0,
      "fmax_hz": 700.0,
      "total_frames": 113,
      "expected_voiced_frames": 113,
      "expected_unvoiced_frames": 0,
      "boundary_frames": 0,
      "boundary_policy": "mixed-truth windows counted but excluded from cent and UV summaries",
      "valid_voiced_frames": 113,
      "missing_voiced_frames": 0,
      "false_voiced_frames": 0,
      "gross_pitch_error_frames": 0,
      "abs_error_cents_median": 0.1400995733925185,
      "abs_error_cents_p95": 0.1545252023813578,
      "voiced_detection_rate": 1.0,
      "unvoiced_false_positive_rate": null,
      "score_status": "ok",
      "uncovered_tail_samples": 0
    }
  },
  {
    "case": "harmonic_220_16000",
    "diagnostic": "phase_detail_pitch",
    "status": "measured",
    "details": false,
    "pitch_semitones": 3,
    "label": "位相細部なし・音高+3半音",
    "pitch": {
      "estimator": "independent-yin-difference-v2-prefiltered",
      "frame_ms": 80.0,
      "hop_ms": 10.0,
      "prefilter": {
        "kind": "butterworth-forward-backward",
        "order_per_pass": 6,
        "cutoff_hz": 2000.0,
        "pad_type": "even",
        "max_pad_samples": 1280
      },
      "validated_scope": "independent synthetic calibration; requires sufficient periodic energy below 2 kHz; not validated for natural speech",
      "fmin_hz": 65.0,
      "fmax_hz": 700.0,
      "total_frames": 113,
      "expected_voiced_frames": 113,
      "expected_unvoiced_frames": 0,
      "boundary_frames": 0,
      "boundary_policy": "mixed-truth windows counted but excluded from cent and UV summaries",
      "valid_voiced_frames": 113,
      "missing_voiced_frames": 0,
      "false_voiced_frames": 0,
      "gross_pitch_error_frames": 0,
      "abs_error_cents_median": 0.08063336993469461,
      "abs_error_cents_p95": 0.10815680595953618,
      "voiced_detection_rate": 1.0,
      "unvoiced_false_positive_rate": null,
      "score_status": "ok",
      "uncovered_tail_samples": 0
    }
  },
  {
    "case": "harmonic_220_16000",
    "diagnostic": "noise_only_periodicity",
    "label": "雑音成分だけの周期性",
    "status": "measured",
    "pitch": {
      "estimator": "independent-yin-difference-v2-prefiltered",
      "frame_ms": 80.0,
      "hop_ms": 10.0,
      "prefilter": {
        "kind": "butterworth-forward-backward",
        "order_per_pass": 6,
        "cutoff_hz": 2000.0,
        "pad_type": "even",
        "max_pad_samples": 1280
      },
      "validated_scope": "independent synthetic calibration; requires sufficient periodic energy below 2 kHz; not validated for natural speech",
      "fmin_hz": 65.0,
      "fmax_hz": 700.0,
      "total_frames": 113,
      "expected_voiced_frames": 0,
      "expected_unvoiced_frames": 113,
      "boundary_frames": 0,
      "boundary_policy": "mixed-truth windows counted but excluded from cent and UV summaries",
      "valid_voiced_frames": 0,
      "missing_voiced_frames": 0,
      "false_voiced_frames": 0,
      "gross_pitch_error_frames": 0,
      "abs_error_cents_median": null,
      "abs_error_cents_p95": null,
      "voiced_detection_rate": null,
      "unvoiced_false_positive_rate": 0.0,
      "score_status": "no_valid_voiced_frames",
      "uncovered_tail_samples": 0
    },
    "rms": 0.0067878718989261445
  }
]
原音に対する音高測定器の校正
入力真値F0 P95 cent測定できた/真値の有声フレーム有声の欠測誤有声
正弦波(sine_120_16000)0.032113/11300
調波音(harmonic_110_16000)0.025113/11300
調波音(harmonic_220_16000)0.074113/11300
基本波を除いた調波音(missing_fundamental_150_16000)0.109113/11300
音高が連続的に変わる調波音(harmonic_sweep_90_240_16000)3.117143/14300
パルス列と共鳴器による母音様音(pulse_iir_vowel_90_16000)0.272113/11300
音量が周期的に変わる雑音(am_noise_6hz_16000)—0/000
有声・無声の切替(voiced_unvoiced_boundaries_16000)0.11796/9600
無音(silence_16000)—0/000
瞬間的なパルス(impulse_16000)—0/000
正弦波(sine_120_24000)0.021113/11300
調波音(harmonic_110_24000)0.022113/11300
調波音(harmonic_220_24000)0.078113/11300
基本波を除いた調波音(missing_fundamental_150_24000)0.033113/11300
音高が連続的に変わる調波音(harmonic_sweep_90_240_24000)3.078143/14300
パルス列と共鳴器による母音様音(pulse_iir_vowel_90_24000)0.088113/11300
音量が周期的に変わる雑音(am_noise_6hz_24000)—0/000
有声・無声の切替(voiced_unvoiced_boundaries_24000)0.04896/9600
無音(silence_24000)—0/000
瞬間的なパルス(impulse_24000)—0/000
正弦波(sine_120_48000)0.005113/11300
調波音(harmonic_110_48000)0.004113/11300
調波音(harmonic_220_48000)0.018113/11300
基本波を除いた調波音(missing_fundamental_150_48000)0.008113/11300
音高が連続的に変わる調波音(harmonic_sweep_90_240_48000)3.066143/14300
パルス列と共鳴器による母音様音(pulse_iir_vowel_90_48000)0.054113/11300
音量が周期的に変わる雑音(am_noise_6hz_48000)—0/000
有声・無声の切替(voiced_unvoiced_boundaries_48000)0.00896/9600
無音(silence_48000)—0/000
瞬間的なパルス(impulse_48000)—0/000
LibriSpeechの自然音声(librispeech_5142-36586_first6s)——/———
LibriSpeechの自然音声(librispeech_7021-79759_first6s)——/———
処理・測定の失敗記録(0件)

処理失敗がなくても、F0欠測などの品質上の問題がないとは限りません。

[]
初代作成中の改善記録
{
  "summary": "雑音量を入力パワーと調波定常パワーの差から求める案を見直し、短時間波形上で調波振幅を1係数で合わせた後の差のPSDを有限帯域で保存。残差波形は保存しない。",
  "scope": "初代作成中の探索。16 kHz人工10例と自然2例。正式ベース置換の比較ではない。旧候補コードはGit管理しない。",
  "provenance_limit": "同一入力・同一測定器。前後の全記録を保存。元候補のソースハッシュは未保存のため、前案の厳密再現性には限界がある。",
  "rows": [
    {
      "case": "sine_120_16000",
      "before_mr_stft_db": 2.0072622909568136,
      "after_mr_stft_db": 1.2372473671919642
    },
    {
      "case": "harmonic_110_16000",
      "before_mr_stft_db": 6.272704556914732,
      "after_mr_stft_db": 0.6589666730378956
    },
    {
      "case": "harmonic_220_16000",
      "before_mr_stft_db": 6.706061247359607,
      "after_mr_stft_db": 1.8724263719713932
    },
    {
      "case": "missing_fundamental_150_16000",
      "before_mr_stft_db": 6.458556801571387,
      "after_mr_stft_db": 3.7778347002419586
    },
    {
      "case": "harmonic_sweep_90_240_16000",
      "before_mr_stft_db": 3.663746373748331,
      "after_mr_stft_db": 1.619659042668707
    },
    {
      "case": "pulse_iir_vowel_90_16000",
      "before_mr_stft_db": 4.58408202331175,
      "after_mr_stft_db": 1.3814192419288815
    },
    {
      "case": "am_noise_6hz_16000",
      "before_mr_stft_db": 6.1415462933855585,
      "after_mr_stft_db": 6.1415462933855585
    },
    {
      "case": "voiced_unvoiced_boundaries_16000",
      "before_mr_stft_db": 4.851221567865161,
      "after_mr_stft_db": 3.3134957392333564
    },
    {
      "case": "silence_16000",
      "before_mr_stft_db": 0.0,
      "after_mr_stft_db": 0.0
    },
    {
      "case": "impulse_16000",
      "before_mr_stft_db": 3.717188241413522,
      "after_mr_stft_db": 3.717188241413522
    },
    {
      "case": "librispeech_5142-36586_first6s",
      "before_mr_stft_db": 6.123762831532566,
      "after_mr_stft_db": 5.96647826799144
    },
    {
      "case": "librispeech_7021-79759_first6s",
      "before_mr_stft_db": 5.710229465872717,
      "after_mr_stft_db": 5.309757379085367
    }
  ]
}
実行環境と再現情報
{
  "environment": {
    "python": "3.12.14",
    "numpy": "2.3.5",
    "scipy": "1.17.0",
    "platform": "Linux-6.18.44-x86_64-with-glibc2.39"
  },
  "parent_commit": "0628e42275c53e1773a463422cc34264c3697458",
  "data_status": [
    {
      "status": "loaded",
      "speakers": 2,
      "excerpts": 2,
      "seconds_per_excerpt": 6
    }
  ],
  "formal_base": {
    "status": "selected",
    "method": "hnm",
    "version": "hnm-v1",
    "reason": "ユーザーの方針変更に従い、自作の調波・雑音方式を改善の出発点とする。WORLD(Harvest)は既存比較対象であり、初代採用はWORLDへの品質優越を意味しない。",
    "comparison_reference": "hnm",
    "comparison_reference_meaning": "この実験時点の自作ベース。初代の自己比較差は0。既存比較対象はWORLD(Harvest)の1方式。"
  },
  "native_builds": {
    "world": {
      "revision": "c794856b537758a3d300757db2e5e31685a822c2",
      "lock_sha256": "44b8bc3adb62802ed060834d9e06ed7f5f3cc4d28583b8a44066c5959a42462b",
      "compiler": "g++",
      "compiler_version": "g++ (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0",
      "flags": [
        "-std=c++11",
        "-O2",
        "-fPIC",
        "-shared"
      ],
      "library_sha256": "01aa04d0c3fec82c2bf4a00e3417e00d77caff8ac8078a4b8ec5b611b081b86d",
      "source_sha256": {
        "src/world/cheaptrick.h": "90acc1f7cbb692cccee2467ebe1c9d5499d92deaad7fd3c04416edf29f6c261d",
        "src/world/codec.h": "529736e308dd168ed60bd1dd76059ea8e04697de9d36c019dd9abccac22283a0",
        "src/world/common.h": "7a761e7d92a3dff74141f73a0bb36ea7af543f314638e4d53be21dfd3d6924d1",
        "src/world/constantnumbers.h": "ed3d3aec8d0e019db68b3845198bb2c87eedd1cd26a694a830bd57f4d26ba323",
        "src/world/d4c.h": "c736bb57d4b07ed74d8a56fb8302b6de0d5b21d4b5845fe115293aff9b71b55f",
        "src/world/dio.h": "e5a433f4454250f9e3a9c60dc40de65caea0cb26ad4073b87c739773a22d1ddd",
        "src/world/fft.h": "ac321b81dea5e8118933ecc66d2d9cbfb7721da52892a64d8a4f2e18a65829d6",
        "src/world/harvest.h": "1ab55206a28236b96e8bdd0f18ddd0ec45ad874217b876ab4a9a2699619e3de2",
        "src/world/macrodefinitions.h": "6d5417f864a4a4d95b470e72e3cb0114e8c96ba33cc189341e83a9f345e664f0",
        "src/world/matlabfunctions.h": "192a6be8cf749c147a7b5119b14ad50c5ddbddba9d6c810fbdf64f0dd7dc2af4",
        "src/world/stonemask.h": "e98a951d7443b81ed0062434a6656efd812011beb57a94c0492c13471698a7fc",
        "src/world/synthesis.h": "3905ef8d0f77a4d3081a3ec11cc81f61e0c0b8db42ce37db1d6a76d5a5096e44",
        "src/world/synthesisrealtime.h": "a0f21ec940cc6e692ef6e4cdce6e920c79ae3faff605bb5816ef19686dc60739",
        "src/cheaptrick.cpp": "6481ea68ebc3a90151852cea8a2efbf1bf6683e823b737847ce57a69f7cbe00b",
        "src/codec.cpp": "acbd6c22763d036ac338fee82c061e8526fdd2d68006fb4e73d4c58c9842b9e2",
        "src/common.cpp": "ef4a982d103bfd4c0efe6f1e6fa1192809e07ac39289f29951f3d95f1af8ca51",
        "src/d4c.cpp": "a988f6154b5c3332a17f2153a1e32afb04e798d57fa99ed08670c6a64e0ad28a",
        "src/dio.cpp": "38449de8a16c6ac6405b7289ed2e8adac9400885d53d181639ebd063366756da",
        "src/fft.cpp": "7a580cc02a0b040bf39de9a841f18b527a711093309ef408c08271abed6eec62",
        "src/harvest.cpp": "e9e80047a9d9ed3ff8521b966985c0b912ac09415565da1cc821319dc454975e",
        "src/matlabfunctions.cpp": "250d4cdc31b64cb3bda3a0c988d3853a09e66dd85f15f167161948d938662a4c",
        "src/stonemask.cpp": "de68ab826ff94176bfa89b5caf7ba46a6a0497eaaf1957e2e942245b7b663e76",
        "src/synthesis.cpp": "9888973e28f2194a0eb9807e18e36680f3d912bef3ddf174dc640fedc4e08b4c",
        "src/synthesisrealtime.cpp": "01403f641a1dce3de564335859b82815162bdee2ae7e25b5fa2288930539f5f2",
        "LICENSE.txt": "6921ef0a65a931509b4055075fd847d7257c4094609075dd0615e8e997215f7e"
      }
    }
  }
}

全数値JSON / 保存音声と切り出し情報 / 進め方