diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/blur-light/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/blur-light/post-warp.wav new file mode 100644 index 0000000..cdfad2a Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/blur-light/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/blur-light/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/blur-light/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/blur-light/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/blur-light/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/blur-light/reconstructed-from-detections.wav new file mode 100644 index 0000000..d791060 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/blur-light/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/blur-light/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/blur-light/summary.json new file mode 100644 index 0000000..8561524 --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/blur-light/summary.json @@ -0,0 +1,97 @@ +{ + "ResultId": "bioacoustic-20260524-150729:baseline-mfcc-index:blur-light", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "baseline-mfcc-index", + "HypothesisNotes": "Current smoke baseline: four projection tables, 14-bit hashes, light degradation augmentation.", + "DegradationName": "blur-light", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 4, + "CorrectAnchors": 4, + "Precision": 1, + "Recall": 0.8, + "Confidence": 0.9836788342508233, + "TimingMeanAbsoluteErrorSamples": 960.0000000000009, + "DecodeMilliseconds": 132.7467, + "RealtimeFactor": 5.649857962570821, + "IdentityScore": 0.9083678834250823, + "TimingScore": 0.727585336048426, + "SpeedScore": 0.11299715925141643, + "TotalScore": 0.7167528800625509, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 0.0011363025982355157, + "ClockHypothesis": { + "AnchorCount": 2, + "SourceOffsetSamples": -3.637978807091713E-12, + "EffectiveSampleRate": 48000, + "MeanAbsoluteErrorSamples": 5.462159233862034E-12, + "Confidence": 0.727585336048426, + "Score": 1.0275853360484146 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 256, + "MelBins": 40, + "CepstralCoefficients": 14, + "TableCount": 4, + "HashBits": 14, + "NearHashRadius": 4, + "DenseStepSeconds": 0.04, + "ProposalBudgetMultiplier": 8, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-light", + "template-warp-blur" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "baseline-mfcc-index/blur-light/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "baseline-mfcc-index/blur-light/post-warp.wav", + "ContentHash": "f36a51bdd08f1bd617e1109615168f334017f067fd94224422b9fe3d3d310e01" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "baseline-mfcc-index/blur-light/reconstructed-from-detections.wav", + "ContentHash": "fb0c97c66b719413fbeefd5f8fcbddb1d528393d106837167ddead9d811db4b3" + }, + { + "Kind": "summary-json", + "Uri": "baseline-mfcc-index/blur-light/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 1920, + "Confidence": 0.98428245173112 + }, + { + "EventIndex": 1, + "SampleOffset": 9600, + "Confidence": 0.9745795247875152 + }, + { + "EventIndex": 2, + "SampleOffset": 19200, + "Confidence": 0.9851073398265959 + }, + { + "EventIndex": 3, + "SampleOffset": 26880, + "Confidence": 0.9907460206580619 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/clean-roundtrip/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/clean-roundtrip/post-warp.wav new file mode 100644 index 0000000..e1fc0c2 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/clean-roundtrip/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/clean-roundtrip/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/clean-roundtrip/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/clean-roundtrip/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/clean-roundtrip/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/clean-roundtrip/reconstructed-from-detections.wav new file mode 100644 index 0000000..5cb224d Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/clean-roundtrip/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/clean-roundtrip/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/clean-roundtrip/summary.json new file mode 100644 index 0000000..0c387aa --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/clean-roundtrip/summary.json @@ -0,0 +1,97 @@ +{ + "ResultId": "bioacoustic-20260524-150729:baseline-mfcc-index:clean-roundtrip", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "baseline-mfcc-index", + "HypothesisNotes": "Current smoke baseline: four projection tables, 14-bit hashes, light degradation augmentation.", + "DegradationName": "clean-roundtrip", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 4, + "CorrectAnchors": 4, + "Precision": 1, + "Recall": 0.8, + "Confidence": 0.9748347918229967, + "TimingMeanAbsoluteErrorSamples": 9.094947017729282E-13, + "DecodeMilliseconds": 132.1422, + "RealtimeFactor": 5.675703900797777, + "IdentityScore": 0.9074834791822998, + "TimingScore": 0.9049669583645835, + "SpeedScore": 0.11351407801595555, + "TotalScore": 0.748236625201842, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 0.014436986876321297, + "ClockHypothesis": { + "AnchorCount": 4, + "SourceOffsetSamples": 3.637978807091713E-12, + "EffectiveSampleRate": 47999.99999999999, + "MeanAbsoluteErrorSamples": 2.1582792898597273E-12, + "Confidence": 0.9049669583645835, + "Score": 1.504966958364579 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 256, + "MelBins": 40, + "CepstralCoefficients": 14, + "TableCount": 4, + "HashBits": 14, + "NearHashRadius": 4, + "DenseStepSeconds": 0.04, + "ProposalBudgetMultiplier": 8, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-light", + "template-warp-blur" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "baseline-mfcc-index/clean-roundtrip/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "baseline-mfcc-index/clean-roundtrip/post-warp.wav", + "ContentHash": "3b9ca18e7ae4841d0673baa1b6468fc1f37bb1f7f309a3b6e3ce4356f1ba3612" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "baseline-mfcc-index/clean-roundtrip/reconstructed-from-detections.wav", + "ContentHash": "d9ba73e1ec3cc5004b4396b655cc92891cd9afa9a4580c89555acbecb9c022ee" + }, + { + "Kind": "summary-json", + "Uri": "baseline-mfcc-index/clean-roundtrip/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 3840, + "Confidence": 0.970562952519866 + }, + { + "EventIndex": 1, + "SampleOffset": 11520, + "Confidence": 0.9765021294619582 + }, + { + "EventIndex": 2, + "SampleOffset": 19200, + "Confidence": 0.9764329354758533 + }, + { + "EventIndex": 3, + "SampleOffset": 26880, + "Confidence": 0.9758411498343091 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-heavy-blur/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-heavy-blur/post-warp.wav new file mode 100644 index 0000000..8722aa1 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-heavy-blur/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-heavy-blur/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-heavy-blur/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-heavy-blur/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-heavy-blur/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-heavy-blur/reconstructed-from-detections.wav new file mode 100644 index 0000000..05f91b3 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-heavy-blur/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-heavy-blur/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-heavy-blur/summary.json new file mode 100644 index 0000000..c0d9081 --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-heavy-blur/summary.json @@ -0,0 +1,92 @@ +{ + "ResultId": "bioacoustic-20260524-150729:baseline-mfcc-index:warp-heavy-blur", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "baseline-mfcc-index", + "HypothesisNotes": "Current smoke baseline: four projection tables, 14-bit hashes, light degradation augmentation.", + "DegradationName": "warp-heavy-blur", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 3, + "CorrectAnchors": 3, + "Precision": 1, + "Recall": 0.6, + "Confidence": 0.9523460368723567, + "TimingMeanAbsoluteErrorSamples": 1919.9999999999989, + "DecodeMilliseconds": 124.2868, + "RealtimeFactor": 6.034430044059385, + "IdentityScore": 0.8152346036872357, + "TimingScore": 0.19483163982978208, + "SpeedScore": 0.1206886008811877, + "TotalScore": 0.5646528696316844, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 0.0004699618910325598, + "ClockHypothesis": { + "AnchorCount": 1, + "SourceOffsetSamples": 0, + "EffectiveSampleRate": 48000, + "MeanAbsoluteErrorSamples": 0, + "Confidence": 0.19483163982978208, + "Score": 0.19483163982978208 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 256, + "MelBins": 40, + "CepstralCoefficients": 14, + "TableCount": 4, + "HashBits": 14, + "NearHashRadius": 4, + "DenseStepSeconds": 0.04, + "ProposalBudgetMultiplier": 8, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-light", + "template-warp-blur" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "baseline-mfcc-index/warp-heavy-blur/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "baseline-mfcc-index/warp-heavy-blur/post-warp.wav", + "ContentHash": "3ca3e9bbaa0ae0fc00ebe085f968f53d45e1a2b71511e851c1aa0bbf6cd34410" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "baseline-mfcc-index/warp-heavy-blur/reconstructed-from-detections.wav", + "ContentHash": "c405855826e48e11434e54343d8f3ddb71e57573e659ce0096795b762071e512" + }, + { + "Kind": "summary-json", + "Uri": "baseline-mfcc-index/warp-heavy-blur/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 0, + "Confidence": 0.950131203846557 + }, + { + "EventIndex": 2, + "SampleOffset": 19200, + "Confidence": 0.9741581991489103 + }, + { + "EventIndex": 3, + "SampleOffset": 24960, + "Confidence": 0.9327487076216032 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light-blur/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light-blur/post-warp.wav new file mode 100644 index 0000000..1261ecc Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light-blur/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light-blur/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light-blur/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light-blur/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light-blur/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light-blur/reconstructed-from-detections.wav new file mode 100644 index 0000000..4138414 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light-blur/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light-blur/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light-blur/summary.json new file mode 100644 index 0000000..d7342dc --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light-blur/summary.json @@ -0,0 +1,102 @@ +{ + "ResultId": "bioacoustic-20260524-150729:baseline-mfcc-index:warp-light-blur", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "baseline-mfcc-index", + "HypothesisNotes": "Current smoke baseline: four projection tables, 14-bit hashes, light degradation augmentation.", + "DegradationName": "warp-light-blur", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 5, + "CorrectAnchors": 4, + "Precision": 0.8, + "Recall": 0.8, + "Confidence": 0.9121532731255396, + "TimingMeanAbsoluteErrorSamples": 12672, + "DecodeMilliseconds": 129.1681, + "RealtimeFactor": 5.8063871807358005, + "IdentityScore": 0.8112153273125541, + "TimingScore": 0.8066634007245423, + "SpeedScore": 0.116127743614716, + "TotalScore": 0.6713784637871444, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 0.00014185500315276218, + "ClockHypothesis": { + "AnchorCount": 3, + "SourceOffsetSamples": -1920.0000000000018, + "EffectiveSampleRate": 48000.000000000015, + "MeanAbsoluteErrorSamples": 7.414220374413076E-13, + "Confidence": 0.8066634007245423, + "Score": 1.2566634007245407 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 256, + "MelBins": 40, + "CepstralCoefficients": 14, + "TableCount": 4, + "HashBits": 14, + "NearHashRadius": 4, + "DenseStepSeconds": 0.04, + "ProposalBudgetMultiplier": 8, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-light", + "template-warp-blur" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "baseline-mfcc-index/warp-light-blur/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "baseline-mfcc-index/warp-light-blur/post-warp.wav", + "ContentHash": "c3bb1eb61dd15004724160816be15f8462944106a1a3f2077c5f97c7901342b9" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "baseline-mfcc-index/warp-light-blur/reconstructed-from-detections.wav", + "ContentHash": "bfe489671957fea685d911037927160c71abd4d1a3a2dfa7fc7b2c2e6a9040ee" + }, + { + "Kind": "summary-json", + "Uri": "baseline-mfcc-index/warp-light-blur/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 1920, + "Confidence": 0.9573043883272961 + }, + { + "EventIndex": 8, + "SampleOffset": 7680, + "Confidence": 0.780325467055781 + }, + { + "EventIndex": 1, + "SampleOffset": 9600, + "Confidence": 0.9019369466538933 + }, + { + "EventIndex": 2, + "SampleOffset": 19200, + "Confidence": 0.980489887703701 + }, + { + "EventIndex": 3, + "SampleOffset": 24960, + "Confidence": 0.9407096758870259 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light/post-warp.wav new file mode 100644 index 0000000..d338b01 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light/reconstructed-from-detections.wav new file mode 100644 index 0000000..87cc8cd Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light/summary.json new file mode 100644 index 0000000..0d9b99c --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/baseline-mfcc-index/warp-light/summary.json @@ -0,0 +1,102 @@ +{ + "ResultId": "bioacoustic-20260524-150729:baseline-mfcc-index:warp-light", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "baseline-mfcc-index", + "HypothesisNotes": "Current smoke baseline: four projection tables, 14-bit hashes, light degradation augmentation.", + "DegradationName": "warp-light", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 5, + "CorrectAnchors": 5, + "Precision": 1, + "Recall": 1, + "Confidence": 0.9237956807548804, + "TimingMeanAbsoluteErrorSamples": 6038.400000000001, + "DecodeMilliseconds": 123.9108, + "RealtimeFactor": 6.052741165418995, + "IdentityScore": 0.9923795680754881, + "TimingScore": 0.18618374635424131, + "SpeedScore": 0.1210548233083799, + "TotalScore": 0.672999371212242, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 1.062162293139017E-06, + "ClockHypothesis": { + "AnchorCount": 1, + "SourceOffsetSamples": 0, + "EffectiveSampleRate": 48000, + "MeanAbsoluteErrorSamples": 0, + "Confidence": 0.18618374635424131, + "Score": 0.18618374635424131 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 256, + "MelBins": 40, + "CepstralCoefficients": 14, + "TableCount": 4, + "HashBits": 14, + "NearHashRadius": 4, + "DenseStepSeconds": 0.04, + "ProposalBudgetMultiplier": 8, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-light", + "template-warp-blur" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "baseline-mfcc-index/warp-light/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "baseline-mfcc-index/warp-light/post-warp.wav", + "ContentHash": "64a7e1a53b5529fa38a039055838449e4f4d7da9c96ea47c72e8e159006d6549" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "baseline-mfcc-index/warp-light/reconstructed-from-detections.wav", + "ContentHash": "f705b66e19de7c4c2aa5d4a461778527f090b56d61617ca3f775b36043e6b749" + }, + { + "Kind": "summary-json", + "Uri": "baseline-mfcc-index/warp-light/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 3840, + "Confidence": 0.9309187317712065 + }, + { + "EventIndex": 1, + "SampleOffset": 5760, + "Confidence": 0.8930832714627722 + }, + { + "EventIndex": 4, + "SampleOffset": 17280, + "Confidence": 0.8946619501123622 + }, + { + "EventIndex": 2, + "SampleOffset": 23040, + "Confidence": 0.9523837911929987 + }, + { + "EventIndex": 3, + "SampleOffset": 30192, + "Confidence": 0.9479306592350625 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/bioacoustic-training.cc b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/bioacoustic-training.cc new file mode 100644 index 0000000..5ac3b7a Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/bioacoustic-training.cc differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/blur-light/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/blur-light/post-warp.wav new file mode 100644 index 0000000..cdfad2a Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/blur-light/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/blur-light/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/blur-light/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/blur-light/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/blur-light/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/blur-light/reconstructed-from-detections.wav new file mode 100644 index 0000000..33dffb1 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/blur-light/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/blur-light/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/blur-light/summary.json new file mode 100644 index 0000000..4b9882d --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/blur-light/summary.json @@ -0,0 +1,96 @@ +{ + "ResultId": "bioacoustic-20260524-150729:compact-fast-index:blur-light", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "compact-fast-index", + "HypothesisNotes": "Smaller feature and table shape. It should run faster if identity survives; otherwise it dies with a receipt.", + "DegradationName": "blur-light", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 4, + "CorrectAnchors": 4, + "Precision": 1, + "Recall": 0.8, + "Confidence": 0.984348775069297, + "TimingMeanAbsoluteErrorSamples": 960.0000000000009, + "DecodeMilliseconds": 174.3146, + "RealtimeFactor": 4.302565591178249, + "IdentityScore": 0.9084348775069297, + "TimingScore": 0.7277010398918269, + "SpeedScore": 0.08605131182356499, + "TotalScore": 0.7114260735995384, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 0.0011363025982355157, + "ClockHypothesis": { + "AnchorCount": 2, + "SourceOffsetSamples": 0, + "EffectiveSampleRate": 48000, + "MeanAbsoluteErrorSamples": 1.8236284626527456E-12, + "Confidence": 0.7277010398918269, + "Score": 1.0277010398918232 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 256, + "MelBins": 32, + "CepstralCoefficients": 10, + "TableCount": 3, + "HashBits": 12, + "NearHashRadius": 3, + "DenseStepSeconds": 0.04, + "ProposalBudgetMultiplier": 6, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-blur" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "compact-fast-index/blur-light/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "compact-fast-index/blur-light/post-warp.wav", + "ContentHash": "f36a51bdd08f1bd617e1109615168f334017f067fd94224422b9fe3d3d310e01" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "compact-fast-index/blur-light/reconstructed-from-detections.wav", + "ContentHash": "7bb6731d2b7db07693b7fe7c31de6a7fccca5a867b47e9d6cd64fe6a1fe65a39" + }, + { + "Kind": "summary-json", + "Uri": "compact-fast-index/blur-light/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 1920, + "Confidence": 0.9850700939602861 + }, + { + "EventIndex": 1, + "SampleOffset": 9600, + "Confidence": 0.9753146073985 + }, + { + "EventIndex": 2, + "SampleOffset": 19200, + "Confidence": 0.9859841655055015 + }, + { + "EventIndex": 3, + "SampleOffset": 26880, + "Confidence": 0.9910262334129001 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/clean-roundtrip/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/clean-roundtrip/post-warp.wav new file mode 100644 index 0000000..e1fc0c2 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/clean-roundtrip/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/clean-roundtrip/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/clean-roundtrip/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/clean-roundtrip/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/clean-roundtrip/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/clean-roundtrip/reconstructed-from-detections.wav new file mode 100644 index 0000000..df76195 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/clean-roundtrip/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/clean-roundtrip/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/clean-roundtrip/summary.json new file mode 100644 index 0000000..92dd32c --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/clean-roundtrip/summary.json @@ -0,0 +1,96 @@ +{ + "ResultId": "bioacoustic-20260524-150729:compact-fast-index:clean-roundtrip", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "compact-fast-index", + "HypothesisNotes": "Smaller feature and table shape. It should run faster if identity survives; otherwise it dies with a receipt.", + "DegradationName": "clean-roundtrip", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 4, + "CorrectAnchors": 4, + "Precision": 1, + "Recall": 0.8, + "Confidence": 0.9768049196341044, + "TimingMeanAbsoluteErrorSamples": 9.094947017729282E-13, + "DecodeMilliseconds": 113.407, + "RealtimeFactor": 6.613348382374986, + "IdentityScore": 0.9076804919634105, + "TimingScore": 0.905360983926792, + "SpeedScore": 0.13226696764749973, + "TotalScore": 0.752180275653637, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 0.014436986876321297, + "ClockHypothesis": { + "AnchorCount": 4, + "SourceOffsetSamples": -5.4569682106375694E-12, + "EffectiveSampleRate": 48000.00000000001, + "MeanAbsoluteErrorSamples": 3.978120228478332E-12, + "Confidence": 0.905360983926792, + "Score": 1.5053609839267839 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 256, + "MelBins": 32, + "CepstralCoefficients": 10, + "TableCount": 3, + "HashBits": 12, + "NearHashRadius": 3, + "DenseStepSeconds": 0.04, + "ProposalBudgetMultiplier": 6, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-blur" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "compact-fast-index/clean-roundtrip/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "compact-fast-index/clean-roundtrip/post-warp.wav", + "ContentHash": "3b9ca18e7ae4841d0673baa1b6468fc1f37bb1f7f309a3b6e3ce4356f1ba3612" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "compact-fast-index/clean-roundtrip/reconstructed-from-detections.wav", + "ContentHash": "58c47f1100c9a4037f6404077a6a0cd0aed5b32c125238d9837f5a5a6fb6a215" + }, + { + "Kind": "summary-json", + "Uri": "compact-fast-index/clean-roundtrip/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 3840, + "Confidence": 0.9718269855357083 + }, + { + "EventIndex": 1, + "SampleOffset": 11520, + "Confidence": 0.9788285888684045 + }, + { + "EventIndex": 2, + "SampleOffset": 19200, + "Confidence": 0.9778422455527276 + }, + { + "EventIndex": 3, + "SampleOffset": 26880, + "Confidence": 0.9787218585795772 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-heavy-blur/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-heavy-blur/post-warp.wav new file mode 100644 index 0000000..8722aa1 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-heavy-blur/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-heavy-blur/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-heavy-blur/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-heavy-blur/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-heavy-blur/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-heavy-blur/reconstructed-from-detections.wav new file mode 100644 index 0000000..75a1899 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-heavy-blur/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-heavy-blur/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-heavy-blur/summary.json new file mode 100644 index 0000000..6a456e3 --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-heavy-blur/summary.json @@ -0,0 +1,111 @@ +{ + "ResultId": "bioacoustic-20260524-150729:compact-fast-index:warp-heavy-blur", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "compact-fast-index", + "HypothesisNotes": "Smaller feature and table shape. It should run faster if identity survives; otherwise it dies with a receipt.", + "DegradationName": "warp-heavy-blur", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 7, + "CorrectAnchors": 3, + "Precision": 0.42857142857142855, + "Recall": 0.6, + "Confidence": 0.6888231610686016, + "TimingMeanAbsoluteErrorSamples": 198582.85714285713, + "DecodeMilliseconds": 119.248, + "RealtimeFactor": 6.28941365892929, + "IdentityScore": 0.531739458964003, + "TimingScore": 0.19504350232533124, + "SpeedScore": 0.12578827317858582, + "TotalScore": 0.38994394961195866, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 0.0004699618910325598, + "ClockHypothesis": { + "AnchorCount": 1, + "SourceOffsetSamples": 0, + "EffectiveSampleRate": 48000, + "MeanAbsoluteErrorSamples": 0, + "Confidence": 0.19504350232533124, + "Score": 0.19504350232533124 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 256, + "MelBins": 32, + "CepstralCoefficients": 10, + "TableCount": 3, + "HashBits": 12, + "NearHashRadius": 3, + "DenseStepSeconds": 0.04, + "ProposalBudgetMultiplier": 6, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-blur" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "compact-fast-index/warp-heavy-blur/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "compact-fast-index/warp-heavy-blur/post-warp.wav", + "ContentHash": "3ca3e9bbaa0ae0fc00ebe085f968f53d45e1a2b71511e851c1aa0bbf6cd34410" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "compact-fast-index/warp-heavy-blur/reconstructed-from-detections.wav", + "ContentHash": "2e26cd394faf43bffb7024457e90b619183cf019d17c2c9318cb967e8db06c5a" + }, + { + "Kind": "summary-json", + "Uri": "compact-fast-index/warp-heavy-blur/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 0, + "Confidence": 0.9550447439633769 + }, + { + "EventIndex": 13, + "SampleOffset": 7680, + "Confidence": 0.6951335327983058 + }, + { + "EventIndex": 31, + "SampleOffset": 9600, + "Confidence": 0.5363250218998903 + }, + { + "EventIndex": 55, + "SampleOffset": 11520, + "Confidence": 0.3995579482592479 + }, + { + "EventIndex": 85, + "SampleOffset": 15360, + "Confidence": 0.31691266051126143 + }, + { + "EventIndex": 2, + "SampleOffset": 19200, + "Confidence": 0.9752175116266562 + }, + { + "EventIndex": 3, + "SampleOffset": 24960, + "Confidence": 0.9435707084214735 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light-blur/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light-blur/post-warp.wav new file mode 100644 index 0000000..1261ecc Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light-blur/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light-blur/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light-blur/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light-blur/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light-blur/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light-blur/reconstructed-from-detections.wav new file mode 100644 index 0000000..9f9330d Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light-blur/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light-blur/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light-blur/summary.json new file mode 100644 index 0000000..89115c0 --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light-blur/summary.json @@ -0,0 +1,111 @@ +{ + "ResultId": "bioacoustic-20260524-150729:compact-fast-index:warp-light-blur", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "compact-fast-index", + "HypothesisNotes": "Smaller feature and table shape. It should run faster if identity survives; otherwise it dies with a receipt.", + "DegradationName": "warp-light-blur", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 7, + "CorrectAnchors": 4, + "Precision": 0.5714285714285714, + "Recall": 0.8, + "Confidence": 0.8129263643415109, + "TimingMeanAbsoluteErrorSamples": 66377.14285714286, + "DecodeMilliseconds": 127.6446, + "RealtimeFactor": 5.875689218345312, + "IdentityScore": 0.6984354935770083, + "TimingScore": 0.7217464317178384, + "SpeedScore": 0.11751378436690624, + "TotalScore": 0.5864471206003372, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 0.00014185500315276218, + "ClockHypothesis": { + "AnchorCount": 2, + "SourceOffsetSamples": -1919.9999999999982, + "EffectiveSampleRate": 48000, + "MeanAbsoluteErrorSamples": 9.160269247376375E-13, + "Confidence": 0.7217464317178384, + "Score": 1.0217464317178364 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 256, + "MelBins": 32, + "CepstralCoefficients": 10, + "TableCount": 3, + "HashBits": 12, + "NearHashRadius": 3, + "DenseStepSeconds": 0.04, + "ProposalBudgetMultiplier": 6, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-blur" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "compact-fast-index/warp-light-blur/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "compact-fast-index/warp-light-blur/post-warp.wav", + "ContentHash": "c3bb1eb61dd15004724160816be15f8462944106a1a3f2077c5f97c7901342b9" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "compact-fast-index/warp-light-blur/reconstructed-from-detections.wav", + "ContentHash": "9413021dd6fb7f6ecc5507daa0d8e2582f60c199113b145f4b825741fa5ea9c3" + }, + { + "Kind": "summary-json", + "Uri": "compact-fast-index/warp-light-blur/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 31, + "SampleOffset": 0, + "Confidence": 0.5454031634847253 + }, + { + "EventIndex": 0, + "SampleOffset": 1920, + "Confidence": 0.9656180175295067 + }, + { + "EventIndex": 13, + "SampleOffset": 9600, + "Confidence": 0.7188366577311006 + }, + { + "EventIndex": 17, + "SampleOffset": 13440, + "Confidence": 0.6406011439308475 + }, + { + "EventIndex": 1, + "SampleOffset": 15360, + "Confidence": 0.8834554945662992 + }, + { + "EventIndex": 2, + "SampleOffset": 19200, + "Confidence": 0.9847237734991533 + }, + { + "EventIndex": 3, + "SampleOffset": 24960, + "Confidence": 0.9518462996489437 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light/post-warp.wav new file mode 100644 index 0000000..d338b01 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light/reconstructed-from-detections.wav new file mode 100644 index 0000000..420ae5c Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light/summary.json new file mode 100644 index 0000000..a256009 --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/compact-fast-index/warp-light/summary.json @@ -0,0 +1,116 @@ +{ + "ResultId": "bioacoustic-20260524-150729:compact-fast-index:warp-light", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "compact-fast-index", + "HypothesisNotes": "Smaller feature and table shape. It should run faster if identity survives; otherwise it dies with a receipt.", + "DegradationName": "warp-light", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 8, + "CorrectAnchors": 4, + "Precision": 0.5, + "Recall": 0.8, + "Confidence": 0.669268198512264, + "TimingMeanAbsoluteErrorSamples": 232974, + "DecodeMilliseconds": 119.0569, + "RealtimeFactor": 6.299508890286913, + "IdentityScore": 0.6519268198512265, + "TimingScore": 0.18699439801317996, + "SpeedScore": 0.12599017780573826, + "TotalScore": 0.46305165551128047, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 1.062162293139017E-06, + "ClockHypothesis": { + "AnchorCount": 1, + "SourceOffsetSamples": 0, + "EffectiveSampleRate": 48000, + "MeanAbsoluteErrorSamples": 0, + "Confidence": 0.18699439801317996, + "Score": 0.18699439801317996 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 256, + "MelBins": 32, + "CepstralCoefficients": 10, + "TableCount": 3, + "HashBits": 12, + "NearHashRadius": 3, + "DenseStepSeconds": 0.04, + "ProposalBudgetMultiplier": 6, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-blur" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "compact-fast-index/warp-light/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "compact-fast-index/warp-light/post-warp.wav", + "ContentHash": "64a7e1a53b5529fa38a039055838449e4f4d7da9c96ea47c72e8e159006d6549" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "compact-fast-index/warp-light/reconstructed-from-detections.wav", + "ContentHash": "c5073d88ba06d85e25ed60e49b098be45aefd18b07edeed4810e145c54ec70f3" + }, + { + "Kind": "summary-json", + "Uri": "compact-fast-index/warp-light/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 3840, + "Confidence": 0.9349719900658997 + }, + { + "EventIndex": 47, + "SampleOffset": 9600, + "Confidence": 0.4445755765976692 + }, + { + "EventIndex": 63, + "SampleOffset": 11520, + "Confidence": 0.36877939655868713 + }, + { + "EventIndex": 105, + "SampleOffset": 13440, + "Confidence": 0.2693162070994128 + }, + { + "EventIndex": 29, + "SampleOffset": 15360, + "Confidence": 0.5527002997632532 + }, + { + "EventIndex": 4, + "SampleOffset": 17280, + "Confidence": 0.867731480111482 + }, + { + "EventIndex": 2, + "SampleOffset": 23040, + "Confidence": 0.9589661051533191 + }, + { + "EventIndex": 3, + "SampleOffset": 30192, + "Confidence": 0.9571045327483895 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/blur-light/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/blur-light/post-warp.wav new file mode 100644 index 0000000..cdfad2a Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/blur-light/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/blur-light/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/blur-light/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/blur-light/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/blur-light/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/blur-light/reconstructed-from-detections.wav new file mode 100644 index 0000000..fc24be2 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/blur-light/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/blur-light/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/blur-light/summary.json new file mode 100644 index 0000000..0dcabdf --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/blur-light/summary.json @@ -0,0 +1,102 @@ +{ + "ResultId": "bioacoustic-20260524-150729:highband-room-index:blur-light", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "highband-room-index", + "HypothesisNotes": "Bias toward the measured useful upper speech/birdcall band and away from low room junk.", + "DegradationName": "blur-light", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 5, + "CorrectAnchors": 5, + "Precision": 1, + "Recall": 1, + "Confidence": 0.9767347350365185, + "TimingMeanAbsoluteErrorSamples": 2160.000000000001, + "DecodeMilliseconds": 151.8894, + "RealtimeFactor": 4.937803428020652, + "IdentityScore": 0.9976734735036519, + "TimingScore": 0.47663254500963104, + "SpeedScore": 0.09875606856041305, + "TotalScore": 0.7241026253860804, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 0.0011363025982355157, + "ClockHypothesis": { + "AnchorCount": 2, + "SourceOffsetSamples": 119.37115076386908, + "EffectiveSampleRate": 48000, + "MeanAbsoluteErrorSamples": 119.99670457198329, + "Confidence": 0.47663254500963104, + "Score": 0.5266394104846658 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 256, + "MelBins": 40, + "CepstralCoefficients": 14, + "TableCount": 4, + "HashBits": 14, + "NearHashRadius": 4, + "DenseStepSeconds": 0.035, + "ProposalBudgetMultiplier": 8, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-light", + "template-warp-blur" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "highband-room-index/blur-light/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "highband-room-index/blur-light/post-warp.wav", + "ContentHash": "f36a51bdd08f1bd617e1109615168f334017f067fd94224422b9fe3d3d310e01" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "highband-room-index/blur-light/reconstructed-from-detections.wav", + "ContentHash": "678fd3a1370c2066776c33d474e43a1eaaaa06a2b37fb7d1a8010ce55913a479" + }, + { + "Kind": "summary-json", + "Uri": "highband-room-index/blur-light/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 3360, + "Confidence": 0.9804186362856496 + }, + { + "EventIndex": 1, + "SampleOffset": 11760, + "Confidence": 0.9780007923602838 + }, + { + "EventIndex": 2, + "SampleOffset": 18480, + "Confidence": 0.9812782020145265 + }, + { + "EventIndex": 4, + "SampleOffset": 25200, + "Confidence": 0.9556710028138445 + }, + { + "EventIndex": 3, + "SampleOffset": 26880, + "Confidence": 0.9883050417082883 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/clean-roundtrip/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/clean-roundtrip/post-warp.wav new file mode 100644 index 0000000..e1fc0c2 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/clean-roundtrip/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/clean-roundtrip/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/clean-roundtrip/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/clean-roundtrip/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/clean-roundtrip/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/clean-roundtrip/reconstructed-from-detections.wav new file mode 100644 index 0000000..26f618e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/clean-roundtrip/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/clean-roundtrip/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/clean-roundtrip/summary.json new file mode 100644 index 0000000..51390e6 --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/clean-roundtrip/summary.json @@ -0,0 +1,97 @@ +{ + "ResultId": "bioacoustic-20260524-150729:highband-room-index:clean-roundtrip", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "highband-room-index", + "HypothesisNotes": "Bias toward the measured useful upper speech/birdcall band and away from low room junk.", + "DegradationName": "clean-roundtrip", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 4, + "CorrectAnchors": 4, + "Precision": 1, + "Recall": 0.8, + "Confidence": 0.9767861387794289, + "TimingMeanAbsoluteErrorSamples": 780.0000000000009, + "DecodeMilliseconds": 141.1094, + "RealtimeFactor": 5.315025079831677, + "IdentityScore": 0.9076786138779429, + "TimingScore": 0.47510733005073624, + "SpeedScore": 0.10630050159663354, + "TotalScore": 0.6695401603327837, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 0.014436986876321297, + "ClockHypothesis": { + "AnchorCount": 2, + "SourceOffsetSamples": -600.5843704955751, + "EffectiveSampleRate": 48000, + "MeanAbsoluteErrorSamples": 119.99715425936493, + "Confidence": 0.47510733005073624, + "Score": 0.5251132586770594 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 256, + "MelBins": 40, + "CepstralCoefficients": 14, + "TableCount": 4, + "HashBits": 14, + "NearHashRadius": 4, + "DenseStepSeconds": 0.035, + "ProposalBudgetMultiplier": 8, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-light", + "template-warp-blur" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "highband-room-index/clean-roundtrip/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "highband-room-index/clean-roundtrip/post-warp.wav", + "ContentHash": "3b9ca18e7ae4841d0673baa1b6468fc1f37bb1f7f309a3b6e3ce4356f1ba3612" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "highband-room-index/clean-roundtrip/reconstructed-from-detections.wav", + "ContentHash": "0e21aa647097f4137ec939cc9ffa3c64994024a43f3c841c945168a5552fd509" + }, + { + "Kind": "summary-json", + "Uri": "highband-room-index/clean-roundtrip/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 3360, + "Confidence": 0.9707775982576307 + }, + { + "EventIndex": 1, + "SampleOffset": 11760, + "Confidence": 0.9779443579846969 + }, + { + "EventIndex": 2, + "SampleOffset": 18480, + "Confidence": 0.9802787630304474 + }, + { + "EventIndex": 3, + "SampleOffset": 28560, + "Confidence": 0.9781438358449407 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-heavy-blur/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-heavy-blur/post-warp.wav new file mode 100644 index 0000000..8722aa1 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-heavy-blur/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-heavy-blur/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-heavy-blur/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-heavy-blur/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-heavy-blur/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-heavy-blur/reconstructed-from-detections.wav new file mode 100644 index 0000000..ed2aa5c Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-heavy-blur/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-heavy-blur/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-heavy-blur/summary.json new file mode 100644 index 0000000..e34084e --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-heavy-blur/summary.json @@ -0,0 +1,102 @@ +{ + "ResultId": "bioacoustic-20260524-150729:highband-room-index:warp-heavy-blur", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "highband-room-index", + "HypothesisNotes": "Bias toward the measured useful upper speech/birdcall band and away from low room junk.", + "DegradationName": "warp-heavy-blur", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 5, + "CorrectAnchors": 4, + "Precision": 0.8, + "Recall": 0.8, + "Confidence": 0.8591045607204133, + "TimingMeanAbsoluteErrorSamples": 49008, + "DecodeMilliseconds": 120.5688, + "RealtimeFactor": 6.220514760037423, + "IdentityScore": 0.8059104560720414, + "TimingScore": 0.19419083633265083, + "SpeedScore": 0.12441029520074846, + "TotalScore": 0.5595008923446925, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 0.0004699618910325598, + "ClockHypothesis": { + "AnchorCount": 1, + "SourceOffsetSamples": -720, + "EffectiveSampleRate": 48000, + "MeanAbsoluteErrorSamples": 0, + "Confidence": 0.19419083633265083, + "Score": 0.19419083633265083 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 256, + "MelBins": 40, + "CepstralCoefficients": 14, + "TableCount": 4, + "HashBits": 14, + "NearHashRadius": 4, + "DenseStepSeconds": 0.035, + "ProposalBudgetMultiplier": 8, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-light", + "template-warp-blur" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "highband-room-index/warp-heavy-blur/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "highband-room-index/warp-heavy-blur/post-warp.wav", + "ContentHash": "3ca3e9bbaa0ae0fc00ebe085f968f53d45e1a2b71511e851c1aa0bbf6cd34410" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "highband-room-index/warp-heavy-blur/reconstructed-from-detections.wav", + "ContentHash": "163ebf88b1afe45431cdc2ce9856e2e03038dca6f5085ce783591d2bda0b2004" + }, + { + "Kind": "summary-json", + "Uri": "highband-room-index/warp-heavy-blur/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 1680, + "Confidence": 0.9538095447968339 + }, + { + "EventIndex": 31, + "SampleOffset": 6720, + "Confidence": 0.5194886074568715 + }, + { + "EventIndex": 1, + "SampleOffset": 15120, + "Confidence": 0.9036467344252803 + }, + { + "EventIndex": 2, + "SampleOffset": 18480, + "Confidence": 0.9709541816632541 + }, + { + "EventIndex": 3, + "SampleOffset": 23520, + "Confidence": 0.9476237352598268 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light-blur/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light-blur/post-warp.wav new file mode 100644 index 0000000..1261ecc Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light-blur/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light-blur/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light-blur/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light-blur/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light-blur/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light-blur/reconstructed-from-detections.wav new file mode 100644 index 0000000..387ac8c Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light-blur/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light-blur/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light-blur/summary.json new file mode 100644 index 0000000..16f3d88 --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light-blur/summary.json @@ -0,0 +1,97 @@ +{ + "ResultId": "bioacoustic-20260524-150729:highband-room-index:warp-light-blur", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "highband-room-index", + "HypothesisNotes": "Bias toward the measured useful upper speech/birdcall band and away from low room junk.", + "DegradationName": "warp-light-blur", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 4, + "CorrectAnchors": 4, + "Precision": 1, + "Recall": 0.8, + "Confidence": 0.955577364360123, + "TimingMeanAbsoluteErrorSamples": 2519.999999999999, + "DecodeMilliseconds": 126.3966, + "RealtimeFactor": 5.933703912921708, + "IdentityScore": 0.9055577364360123, + "TimingScore": 0.19533536690526754, + "SpeedScore": 0.11867407825843417, + "TotalScore": 0.6203409782849627, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 0.00014185500315276218, + "ClockHypothesis": { + "AnchorCount": 1, + "SourceOffsetSamples": 960, + "EffectiveSampleRate": 48000, + "MeanAbsoluteErrorSamples": 0, + "Confidence": 0.19533536690526754, + "Score": 0.19533536690526754 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 256, + "MelBins": 40, + "CepstralCoefficients": 14, + "TableCount": 4, + "HashBits": 14, + "NearHashRadius": 4, + "DenseStepSeconds": 0.035, + "ProposalBudgetMultiplier": 8, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-light", + "template-warp-blur" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "highband-room-index/warp-light-blur/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "highband-room-index/warp-light-blur/post-warp.wav", + "ContentHash": "c3bb1eb61dd15004724160816be15f8462944106a1a3f2077c5f97c7901342b9" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "highband-room-index/warp-light-blur/reconstructed-from-detections.wav", + "ContentHash": "667389c0a15519c9efa30dad5881ee77bd0a562f5ef1f7a7c0f8e69ea1f52181" + }, + { + "Kind": "summary-json", + "Uri": "highband-room-index/warp-light-blur/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 1680, + "Confidence": 0.9603744762545714 + }, + { + "EventIndex": 1, + "SampleOffset": 15120, + "Confidence": 0.93464422622285 + }, + { + "EventIndex": 2, + "SampleOffset": 20160, + "Confidence": 0.9766768345263376 + }, + { + "EventIndex": 3, + "SampleOffset": 23520, + "Confidence": 0.9506139204367329 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light/post-warp.wav new file mode 100644 index 0000000..d338b01 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light/reconstructed-from-detections.wav new file mode 100644 index 0000000..1a68d9c Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light/summary.json new file mode 100644 index 0000000..99431ce --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/highband-room-index/warp-light/summary.json @@ -0,0 +1,107 @@ +{ + "ResultId": "bioacoustic-20260524-150729:highband-room-index:warp-light", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "highband-room-index", + "HypothesisNotes": "Bias toward the measured useful upper speech/birdcall band and away from low room junk.", + "DegradationName": "warp-light", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 6, + "CorrectAnchors": 5, + "Precision": 0.8333333333333334, + "Recall": 1, + "Confidence": 0.8647739333272076, + "TimingMeanAbsoluteErrorSamples": 45808, + "DecodeMilliseconds": 141.448, + "RealtimeFactor": 5.302301906000792, + "IdentityScore": 0.9114773933327207, + "TimingScore": 0.465446031369141, + "SpeedScore": 0.10604603812001584, + "TotalScore": 0.6701054771367353, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 1.062162293139017E-06, + "ClockHypothesis": { + "AnchorCount": 2, + "SourceOffsetSamples": -3242.296930469185, + "EffectiveSampleRate": 48000, + "MeanAbsoluteErrorSamples": 119.9560342534968, + "Confidence": 0.465446031369141, + "Score": 0.5155376266743559 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 256, + "MelBins": 40, + "CepstralCoefficients": 14, + "TableCount": 4, + "HashBits": 14, + "NearHashRadius": 4, + "DenseStepSeconds": 0.035, + "ProposalBudgetMultiplier": 8, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-light", + "template-warp-blur" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "highband-room-index/warp-light/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "highband-room-index/warp-light/post-warp.wav", + "ContentHash": "64a7e1a53b5529fa38a039055838449e4f4d7da9c96ea47c72e8e159006d6549" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "highband-room-index/warp-light/reconstructed-from-detections.wav", + "ContentHash": "4ade7e00bc207b7d36ddcaf0072a0dde71df63876b2d528ae5f5ab3f48c0b802" + }, + { + "Kind": "summary-json", + "Uri": "highband-room-index/warp-light/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 0, + "Confidence": 0.9245597876660968 + }, + { + "EventIndex": 1, + "SampleOffset": 8400, + "Confidence": 0.9093535841055699 + }, + { + "EventIndex": 35, + "SampleOffset": 15120, + "Confidence": 0.5165926936010917 + }, + { + "EventIndex": 2, + "SampleOffset": 21840, + "Confidence": 0.9556672239379088 + }, + { + "EventIndex": 3, + "SampleOffset": 23520, + "Confidence": 0.9448449602085223 + }, + { + "EventIndex": 4, + "SampleOffset": 30192, + "Confidence": 0.9376253504440569 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/blur-light/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/blur-light/post-warp.wav new file mode 100644 index 0000000..cdfad2a Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/blur-light/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/blur-light/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/blur-light/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/blur-light/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/blur-light/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/blur-light/reconstructed-from-detections.wav new file mode 100644 index 0000000..2a6da9f Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/blur-light/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/blur-light/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/blur-light/summary.json new file mode 100644 index 0000000..7b2ea04 --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/blur-light/summary.json @@ -0,0 +1,98 @@ +{ + "ResultId": "bioacoustic-20260524-150729:robust-wide-index:blur-light", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "robust-wide-index", + "HypothesisNotes": "More cepstra and a wider augmentation bank. It pays more CPU for warped-room survival.", + "DegradationName": "blur-light", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 4, + "CorrectAnchors": 4, + "Precision": 1, + "Recall": 0.8, + "Confidence": 0.9847020912578779, + "TimingMeanAbsoluteErrorSamples": 1079.999999999999, + "DecodeMilliseconds": 263.8216, + "RealtimeFactor": 2.842830154922872, + "IdentityScore": 0.9084702091257879, + "TimingScore": 0.5332666824033109, + "SpeedScore": 0.05685660309845744, + "TotalScore": 0.6706108531102759, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 0.0011363025982355157, + "ClockHypothesis": { + "AnchorCount": 3, + "SourceOffsetSamples": -1181.8986331291107, + "EffectiveSampleRate": 48214.77096170677, + "MeanAbsoluteErrorSamples": 204.79233215195967, + "Confidence": 0.5332666824033109, + "Score": 0.5566159904200616 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 192, + "MelBins": 48, + "CepstralCoefficients": 18, + "TableCount": 5, + "HashBits": 15, + "NearHashRadius": 4, + "DenseStepSeconds": 0.03, + "ProposalBudgetMultiplier": 9, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-light", + "template-warp-blur", + "template-warp-heavy" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "robust-wide-index/blur-light/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "robust-wide-index/blur-light/post-warp.wav", + "ContentHash": "f36a51bdd08f1bd617e1109615168f334017f067fd94224422b9fe3d3d310e01" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "robust-wide-index/blur-light/reconstructed-from-detections.wav", + "ContentHash": "cf0fb32ebdc6e8d707cc0decd77fcf464c1130308a39920b2a36d16f6b5043dc" + }, + { + "Kind": "summary-json", + "Uri": "robust-wide-index/blur-light/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 2880, + "Confidence": 0.9844071734887759 + }, + { + "EventIndex": 1, + "SampleOffset": 10080, + "Confidence": 0.9762337381622903 + }, + { + "EventIndex": 2, + "SampleOffset": 20160, + "Confidence": 0.9866738086280044 + }, + { + "EventIndex": 3, + "SampleOffset": 25920, + "Confidence": 0.9914936447524411 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/clean-roundtrip/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/clean-roundtrip/post-warp.wav new file mode 100644 index 0000000..e1fc0c2 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/clean-roundtrip/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/clean-roundtrip/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/clean-roundtrip/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/clean-roundtrip/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/clean-roundtrip/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/clean-roundtrip/reconstructed-from-detections.wav new file mode 100644 index 0000000..1caa2ae Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/clean-roundtrip/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/clean-roundtrip/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/clean-roundtrip/summary.json new file mode 100644 index 0000000..75b608e --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/clean-roundtrip/summary.json @@ -0,0 +1,98 @@ +{ + "ResultId": "bioacoustic-20260524-150729:robust-wide-index:clean-roundtrip", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "robust-wide-index", + "HypothesisNotes": "More cepstra and a wider augmentation bank. It pays more CPU for warped-room survival.", + "DegradationName": "clean-roundtrip", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 4, + "CorrectAnchors": 4, + "Precision": 1, + "Recall": 0.8, + "Confidence": 0.9734754168919428, + "TimingMeanAbsoluteErrorSamples": 360.0000000000009, + "DecodeMilliseconds": 227.5334, + "RealtimeFactor": 3.296219368233411, + "IdentityScore": 0.9073475416891943, + "TimingScore": 0.530687958219793, + "SpeedScore": 0.06592438736466823, + "TotalScore": 0.6712641857997969, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 0.014436986876321297, + "ClockHypothesis": { + "AnchorCount": 3, + "SourceOffsetSamples": 256.32714656469216, + "EffectiveSampleRate": 48215.69514839496, + "MeanAbsoluteErrorSamples": 205.85925862588226, + "Confidence": 0.530687958219793, + "Score": 0.551814502749205 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 192, + "MelBins": 48, + "CepstralCoefficients": 18, + "TableCount": 5, + "HashBits": 15, + "NearHashRadius": 4, + "DenseStepSeconds": 0.03, + "ProposalBudgetMultiplier": 9, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-light", + "template-warp-blur", + "template-warp-heavy" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "robust-wide-index/clean-roundtrip/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "robust-wide-index/clean-roundtrip/post-warp.wav", + "ContentHash": "3b9ca18e7ae4841d0673baa1b6468fc1f37bb1f7f309a3b6e3ce4356f1ba3612" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "robust-wide-index/clean-roundtrip/reconstructed-from-detections.wav", + "ContentHash": "9ce83aade2bfd782cce9ffe60ea8ceca7558b9202fa89c0521f9c1ba9097619d" + }, + { + "Kind": "summary-json", + "Uri": "robust-wide-index/clean-roundtrip/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 4320, + "Confidence": 0.9699188108387837 + }, + { + "EventIndex": 1, + "SampleOffset": 11520, + "Confidence": 0.9747413632902306 + }, + { + "EventIndex": 2, + "SampleOffset": 18720, + "Confidence": 0.9762583202076656 + }, + { + "EventIndex": 3, + "SampleOffset": 27360, + "Confidence": 0.9729831732310916 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-heavy-blur/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-heavy-blur/post-warp.wav new file mode 100644 index 0000000..8722aa1 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-heavy-blur/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-heavy-blur/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-heavy-blur/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-heavy-blur/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-heavy-blur/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-heavy-blur/reconstructed-from-detections.wav new file mode 100644 index 0000000..f967b35 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-heavy-blur/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-heavy-blur/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-heavy-blur/summary.json new file mode 100644 index 0000000..46b12e7 --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-heavy-blur/summary.json @@ -0,0 +1,103 @@ +{ + "ResultId": "bioacoustic-20260524-150729:robust-wide-index:warp-heavy-blur", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "robust-wide-index", + "HypothesisNotes": "More cepstra and a wider augmentation bank. It pays more CPU for warped-room survival.", + "DegradationName": "warp-heavy-blur", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 5, + "CorrectAnchors": 4, + "Precision": 0.8, + "Recall": 0.8, + "Confidence": 0.8572875750018513, + "TimingMeanAbsoluteErrorSamples": 46176, + "DecodeMilliseconds": 265.865, + "RealtimeFactor": 2.820980572847122, + "IdentityScore": 0.8057287575001852, + "TimingScore": 0.19413521186402094, + "SpeedScore": 0.05641961145694244, + "TotalScore": 0.5457800900770271, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 0.0004699618910325598, + "ClockHypothesis": { + "AnchorCount": 1, + "SourceOffsetSamples": -480, + "EffectiveSampleRate": 48000, + "MeanAbsoluteErrorSamples": 0, + "Confidence": 0.19413521186402094, + "Score": 0.19413521186402094 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 192, + "MelBins": 48, + "CepstralCoefficients": 18, + "TableCount": 5, + "HashBits": 15, + "NearHashRadius": 4, + "DenseStepSeconds": 0.03, + "ProposalBudgetMultiplier": 9, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-light", + "template-warp-blur", + "template-warp-heavy" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "robust-wide-index/warp-heavy-blur/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "robust-wide-index/warp-heavy-blur/post-warp.wav", + "ContentHash": "3ca3e9bbaa0ae0fc00ebe085f968f53d45e1a2b71511e851c1aa0bbf6cd34410" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "robust-wide-index/warp-heavy-blur/reconstructed-from-detections.wav", + "ContentHash": "22ef7a9bcc0718435942a3c66af3174a24c196bd8b36c5bdfa467507ea59bed4" + }, + { + "Kind": "summary-json", + "Uri": "robust-wide-index/warp-heavy-blur/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 0, + "Confidence": 0.9527487074713425 + }, + { + "EventIndex": 1, + "SampleOffset": 10080, + "Confidence": 0.886024872438331 + }, + { + "EventIndex": 30, + "SampleOffset": 11520, + "Confidence": 0.539710964976235 + }, + { + "EventIndex": 2, + "SampleOffset": 18720, + "Confidence": 0.9706760593201047 + }, + { + "EventIndex": 3, + "SampleOffset": 24480, + "Confidence": 0.9372772708032441 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light-blur/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light-blur/post-warp.wav new file mode 100644 index 0000000..1261ecc Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light-blur/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light-blur/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light-blur/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light-blur/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light-blur/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light-blur/reconstructed-from-detections.wav new file mode 100644 index 0000000..9238aff Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light-blur/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light-blur/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light-blur/summary.json new file mode 100644 index 0000000..c033466 --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light-blur/summary.json @@ -0,0 +1,103 @@ +{ + "ResultId": "bioacoustic-20260524-150729:robust-wide-index:warp-light-blur", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "robust-wide-index", + "HypothesisNotes": "More cepstra and a wider augmentation bank. It pays more CPU for warped-room survival.", + "DegradationName": "warp-light-blur", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 5, + "CorrectAnchors": 4, + "Precision": 0.8, + "Recall": 0.8, + "Confidence": 0.9141968184634031, + "TimingMeanAbsoluteErrorSamples": 13920, + "DecodeMilliseconds": 224.6397, + "RealtimeFactor": 3.338679672382041, + "IdentityScore": 0.8114196818463404, + "TimingScore": 0.525243980114753, + "SpeedScore": 0.06677359344764082, + "TotalScore": 0.6109788378549148, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 0.00014185500315276218, + "ClockHypothesis": { + "AnchorCount": 3, + "SourceOffsetSamples": -2618.3634428642745, + "EffectiveSampleRate": 48207.36165285075, + "MeanAbsoluteErrorSamples": 204.5918436878574, + "Confidence": 0.525243980114753, + "Score": 0.5490109724317167 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 192, + "MelBins": 48, + "CepstralCoefficients": 18, + "TableCount": 5, + "HashBits": 15, + "NearHashRadius": 4, + "DenseStepSeconds": 0.03, + "ProposalBudgetMultiplier": 9, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-light", + "template-warp-blur", + "template-warp-heavy" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "robust-wide-index/warp-light-blur/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "robust-wide-index/warp-light-blur/post-warp.wav", + "ContentHash": "c3bb1eb61dd15004724160816be15f8462944106a1a3f2077c5f97c7901342b9" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "robust-wide-index/warp-light-blur/reconstructed-from-detections.wav", + "ContentHash": "a6c2e9146b6d201492c12275700726d4cb489d3030ba605cc1c190bad871e84e" + }, + { + "Kind": "summary-json", + "Uri": "robust-wide-index/warp-light-blur/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 1440, + "Confidence": 0.9568438177382963 + }, + { + "EventIndex": 1, + "SampleOffset": 8640, + "Confidence": 0.9299836885720597 + }, + { + "EventIndex": 9, + "SampleOffset": 11520, + "Confidence": 0.7589848046963656 + }, + { + "EventIndex": 2, + "SampleOffset": 18720, + "Confidence": 0.9809965027688126 + }, + { + "EventIndex": 3, + "SampleOffset": 24480, + "Confidence": 0.9441752785414812 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light/post-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light/post-warp.wav new file mode 100644 index 0000000..d338b01 Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light/post-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light/pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light/pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light/pre-warp.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light/reconstructed-from-detections.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light/reconstructed-from-detections.wav new file mode 100644 index 0000000..0f6c39d Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light/reconstructed-from-detections.wav differ diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light/summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light/summary.json new file mode 100644 index 0000000..93ebd9d --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/robust-wide-index/warp-light/summary.json @@ -0,0 +1,113 @@ +{ + "ResultId": "bioacoustic-20260524-150729:robust-wide-index:warp-light", + "RunId": "bioacoustic-20260524-150729", + "StartedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "Toolchain": "Mimir.BufferSmoke --bioacoustic-train", + "HypothesisId": "robust-wide-index", + "HypothesisNotes": "More cepstra and a wider augmentation bank. It pays more CPU for warped-room survival.", + "DegradationName": "warp-light", + "SampleRate": 48000, + "Seconds": 0.75, + "ExpectedEvents": 5, + "ObservationCount": 7, + "CorrectAnchors": 4, + "Precision": 0.5714285714285714, + "Recall": 0.8, + "Confidence": 0.6973654063470601, + "TimingMeanAbsoluteErrorSamples": 240610.2857142857, + "DecodeMilliseconds": 228.0981, + "RealtimeFactor": 3.2880589535818143, + "IdentityScore": 0.6868793977775632, + "TimingScore": 0.18675545569962676, + "SpeedScore": 0.06576117907163628, + "TotalScore": 0.47263344446234923, + "RoundTripMelBins": 48, + "RoundTripCepstralCoefficients": 20, + "RoundTripFrameCount": 67, + "RoundTripRmsRatio": 1.062162293139017E-06, + "ClockHypothesis": { + "AnchorCount": 1, + "SourceOffsetSamples": -960, + "EffectiveSampleRate": 48000, + "MeanAbsoluteErrorSamples": 0, + "Confidence": 0.18675545569962676, + "Score": 0.18675545569962676 + }, + "Decoder": { + "FftSize": 1024, + "HopSize": 192, + "MelBins": 48, + "CepstralCoefficients": 18, + "TableCount": 5, + "HashBits": 15, + "NearHashRadius": 4, + "DenseStepSeconds": 0.03, + "ProposalBudgetMultiplier": 9, + "TemplateAugmentations": [ + "template-clean", + "template-blur", + "template-warp-light", + "template-warp-blur", + "template-warp-heavy" + ] + }, + "Artifacts": [ + { + "Kind": "pre-warp-audio", + "Uri": "robust-wide-index/warp-light/pre-warp.wav", + "ContentHash": "4862d46ea00c1d387387028f90147b98bd6e36fe594eefdcfa1b6360f7348f29" + }, + { + "Kind": "post-warp-audio", + "Uri": "robust-wide-index/warp-light/post-warp.wav", + "ContentHash": "64a7e1a53b5529fa38a039055838449e4f4d7da9c96ea47c72e8e159006d6549" + }, + { + "Kind": "reconstructed-from-detections", + "Uri": "robust-wide-index/warp-light/reconstructed-from-detections.wav", + "ContentHash": "caf69797d6f43f5f5a3eee41515923dcd3b25563a54692427c8227df0233b2f1" + }, + { + "Kind": "summary-json", + "Uri": "robust-wide-index/warp-light/summary.json", + "ContentHash": "" + } + ], + "Observations": [ + { + "EventIndex": 0, + "SampleOffset": 2880, + "Confidence": 0.9337772784981337 + }, + { + "EventIndex": 1, + "SampleOffset": 8640, + "Confidence": 0.9175578116476332 + }, + { + "EventIndex": 73, + "SampleOffset": 12960, + "Confidence": 0.3417469526010798 + }, + { + "EventIndex": 30, + "SampleOffset": 14400, + "Confidence": 0.5427608991372147 + }, + { + "EventIndex": 119, + "SampleOffset": 15840, + "Confidence": 0.24756166742074842 + }, + { + "EventIndex": 2, + "SampleOffset": 23040, + "Confidence": 0.9512111997475022 + }, + { + "EventIndex": 3, + "SampleOffset": 30192, + "Confidence": 0.946942035377108 + } + ] +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/run-summary.json b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/run-summary.json new file mode 100644 index 0000000..6b8a2a1 --- /dev/null +++ b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/run-summary.json @@ -0,0 +1,19 @@ +{ + "runId": "bioacoustic-20260524-150729", + "startedAtUtc": "2026-05-24T15:07:29.1407348\u002B00:00", + "sampleRate": 48000, + "seconds": 0.75, + "resultCount": 20, + "cache": "bioacoustic-training.cc", + "best": { + "ResultId": "bioacoustic-20260524-150729:compact-fast-index:clean-roundtrip", + "HypothesisId": "compact-fast-index", + "DegradationName": "clean-roundtrip", + "TotalScore": 0.752180275653637, + "IdentityScore": 0.9076804919634105, + "TimingScore": 0.905360983926792, + "SpeedScore": 0.13226696764749973, + "DecodeMilliseconds": 113.407, + "RealtimeFactor": 6.613348382374986 + } +} \ No newline at end of file diff --git a/artifacts/bioacoustic-training/bioacoustic-20260524-150729/source-pre-warp.wav b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/source-pre-warp.wav new file mode 100644 index 0000000..e66bd4e Binary files /dev/null and b/artifacts/bioacoustic-training/bioacoustic-20260524-150729/source-pre-warp.wav differ diff --git a/docs/bioacoustic-timeline-watermark.md b/docs/bioacoustic-timeline-watermark.md index c1e3d4f..ce5ac4b 100644 --- a/docs/bioacoustic-timeline-watermark.md +++ b/docs/bioacoustic-timeline-watermark.md @@ -135,3 +135,11 @@ The latest training receipt says identity can survive the current mel-cepstral degradation panel, but timing collapses under warped domains. That points the next cut at a global delay/clock/path hypothesis over detected words, not a larger brute-force dictionary. + +That cut has started in the harness. `--bioacoustic-train` now persists a +global clock hypothesis per result and scores timing through its confidence +rather than raw absolute word offset. The latest corrected receipt is +`artifacts/bioacoustic-training/bioacoustic-20260524-150729/`; it shows compact +indexing still wins clean throughput, baseline indexing remains steadier under +degradation, highband indexing has real warped-path value, and anchor density +must become its own benchmark metric. diff --git a/docs/bioacoustic-training-harness.md b/docs/bioacoustic-training-harness.md index 09d5774..81d44fb 100644 --- a/docs/bioacoustic-training-harness.md +++ b/docs/bioacoustic-training-harness.md @@ -51,6 +51,42 @@ Speed tells whether the receiver shape can plausibly become a streaming machine. Run: +```text +artifacts/bioacoustic-training/bioacoustic-20260524-150729/ +``` + +This run adds global clock hypothesis scoring. Timing is no longer raw +per-word absolute error; it is the confidence of a coherent clock/path fit over +detected words. Single-anchor fits are deliberately weak, and sample-rate slope +is only allowed when enough anchors exist. + +Best aggregate result: + +```text +compact-fast-index / clean-roundtrip +total=0.752 identity=0.908 timing=0.905 speed=0.132 realtime=6.6x +``` + +Useful observations: + +- `compact-fast-index` is still the clean-throughput winner when enough anchors + survive. +- `baseline-mfcc-index` is still the steadier degraded-path receiver. +- `highband-room-index` shows real value under warp, but needs more anchor + density before it can own timing. +- `compact-fast-index` remains faster, but its warped-path identity and timing + confidence are weaker. +- `robust-wide-index` still costs too much for the current panel, but it gives + useful pressure under heavier degradation. +- The global clock hypothesis is the right scoring authority, but short windows + and weak degradations can still starve it. Future training runs should score + time-to-lock separately from identity. Anchor coverage is now persisted in the + CultCache clock snapshot so optimization can target lock density directly. + +Previous receipt: + +Run: + ```text artifacts/bioacoustic-training/bioacoustic-20260524-103438/ ``` diff --git a/docs/implementation-plan.md b/docs/implementation-plan.md index c7e1947..77320c8 100644 --- a/docs/implementation-plan.md +++ b/docs/implementation-plan.md @@ -91,6 +91,9 @@ a named invariant that the native runtime cannot protect yet. - `MimirAudioSynchronizationStateTracker` owns the first smoothed per-source sync state: latest fractional delay, smoothed delay, confidence, per-band response evidence, and delay-slope/SRO estimate in ppm. +- `faust/mimir_alignment_actuator.dsp` is the first Faust-owned sample movement + surface: six channels of bounded fractional delay and gain controls. Mimir + estimates delay/SRO; Faust/native DSP applies correction. - `MimirRuntime` updates audio sync analysis online as a bounded rotating service and can emit live sync telemetry with `MIMIR_SYNC_TELEMETRY_SECONDS`. UI and telemetry read cached reports/states; @@ -153,7 +156,9 @@ a named invariant that the native runtime cannot protect yet. sync report. The active bioacoustic standalone receiver test recovers a delayed audio stream to below printed microsecond precision using only the motif codebook - and schedule state. + and schedule state. `--bioacoustic-actuator-self-test` estimates a synthetic + 317.375-sample bioacoustic delay, applies the fractional correction, and + remeasures the residual below printed microsecond precision. - `MimirVideoFrameDescriptor` for dimensions, pixel format, stride, device timestamp, and native/GPU handle metadata. - `IMimirVideoCaptureDriver` and `MimirVideoCaptureDriverSource` as the live diff --git a/faust/mimir_alignment_actuator.dsp b/faust/mimir_alignment_actuator.dsp new file mode 100644 index 0000000..ce70545 --- /dev/null +++ b/faust/mimir_alignment_actuator.dsp @@ -0,0 +1,37 @@ +declare name "Mimir Alignment Actuator"; +declare version "0.1"; +declare author "Mimir"; +declare license "MIT"; + +import("stdfaust.lib"); + +// Faust/native DSP owns sample movement. Mimir.Runtime estimates delay/SRO and +// writes control values; this graph applies bounded fractional delay per source. +// Positive delay controls hold a source back. Upstream runtime policy should +// choose which sources are reference and which need correction. + +maxDelay = 4096; + +delay0 = hslider("source0/delay_samples", 0.0, 0.0, maxDelay, 0.001); +delay1 = hslider("source1/delay_samples", 0.0, 0.0, maxDelay, 0.001); +delay2 = hslider("source2/delay_samples", 0.0, 0.0, maxDelay, 0.001); +delay3 = hslider("source3/delay_samples", 0.0, 0.0, maxDelay, 0.001); +delay4 = hslider("source4/delay_samples", 0.0, 0.0, maxDelay, 0.001); +delay5 = hslider("source5/delay_samples", 0.0, 0.0, maxDelay, 0.001); + +gain0 = hslider("source0/gain", 1.0, 0.0, 2.0, 0.001); +gain1 = hslider("source1/gain", 1.0, 0.0, 2.0, 0.001); +gain2 = hslider("source2/gain", 1.0, 0.0, 2.0, 0.001); +gain3 = hslider("source3/gain", 1.0, 0.0, 2.0, 0.001); +gain4 = hslider("source4/gain", 1.0, 0.0, 2.0, 0.001); +gain5 = hslider("source5/gain", 1.0, 0.0, 2.0, 0.001); + +align(delay, gain, input) = input : de.fdelay(maxDelay, delay) : *(gain); + +process = + align(delay0, gain0), + align(delay1, gain1), + align(delay2, gain2), + align(delay3, gain3), + align(delay4, gain4), + align(delay5, gain5); diff --git a/notes/current-system-map.md b/notes/current-system-map.md index ec2edf8..8be26c1 100644 --- a/notes/current-system-map.md +++ b/notes/current-system-map.md @@ -191,6 +191,12 @@ artifact, but it leaves a concrete response profile: 14 frames, 12 anchors, 0.865 clock confidence, and strongest bins around 4525, 4075, and 7225 Hz. Acoustic robustness is now the open problem, not clean loopback timing, standalone decoder shape, or basic response evidence. +The first actuator proof now exists: `faust/mimir_alignment_actuator.dsp` owns +six channels of bounded fractional delay/gain controls for Faust/native DSP, +and `Mimir.BufferSmoke --bioacoustic-actuator-self-test --sample-rate 48000 +--delay-samples 317.375` proves the control loop shape by estimating a +bioacoustic delay, applying fractional correction, and remeasuring residual +below printed microsecond precision. ## Visual Fusion diff --git a/src/Mimir.BufferSmoke/Program.cs b/src/Mimir.BufferSmoke/Program.cs index 03c669e..07102c5 100644 --- a/src/Mimir.BufferSmoke/Program.cs +++ b/src/Mimir.BufferSmoke/Program.cs @@ -44,6 +44,13 @@ if (args.Any(arg => string.Equals(arg, "--bioacoustic-train", StringComparison.O ParseStringOption(args, "--output", "artifacts/bioacoustic-training")).ConfigureAwait(false); } +if (args.Any(arg => string.Equals(arg, "--bioacoustic-actuator-self-test", StringComparison.OrdinalIgnoreCase))) +{ + return RunBioacousticActuatorSelfTest( + ParseIntOption(args, "--sample-rate", MimirBioacousticTimeline.SampleRate), + ParseDoubleOption(args, "--delay-samples", 317.375)); +} + if (args.Any(arg => string.Equals(arg, "--standalone-chirp-bin-self-test", StringComparison.OrdinalIgnoreCase))) { return RunStandaloneChirpBinSelfTest( @@ -470,6 +477,7 @@ static int RunBioacousticCepstralSmoke(int sampleRate, double seconds) var recall = expectedEvents.Count == 0 ? 0.0 : correctAnchors / (double)expectedEvents.Count; var confidence = observations.Count == 0 ? 0.0 : observations.Average(observation => observation.Confidence); var mae = MeanCepstralTimingError(observations, timeline, sampleRate); + var clock = FitBioacousticClockHypothesis(observations, timeline, sampleRate); var passed = correctAnchors >= Math.Min(3, expectedEvents.Count) && precision >= 0.50 && recall >= 0.35 && @@ -477,6 +485,7 @@ static int RunBioacousticCepstralSmoke(int sampleRate, double seconds) Console.WriteLine( $"bioacoustic-cepstral-smoke decoder=indexed-mfcc-word setting={setting.Name} observations={observations.Count} correct={correctAnchors}/{expectedEvents.Count} " + $"precision={precision:0.000} recall={recall:0.000} confidence={confidence:0.000} mae={mae:0.000} " + + $"globalAnchors={clock?.AnchorCount ?? 0} globalMae={clock?.MeanAbsoluteErrorSamples ?? double.PositiveInfinity:0.000} globalOffset={clock?.SourceOffsetSamples ?? double.NaN:0.000} globalRate={clock?.EffectiveSampleRate ?? double.NaN:0.000} " + $"melBins={analysis.MelBins} cepstra={analysis.CepstralCoefficients} stftFrames={analysis.FrameCount} rmsRatio={analysis.RmsRatio:0.000} pass={passed}"); if (!passed) { @@ -557,11 +566,12 @@ static async Task RunBioacousticTrainingAsync(int sampleRate, double second var recall = expectedEvents.Count == 0 ? 0.0 : correctAnchors / (double)expectedEvents.Count; var confidence = observations.Count == 0 ? 0.0 : observations.Average(observation => observation.Confidence); var timingMae = MeanCepstralTimingError(observations, timeline, sampleRate); + var clock = FitBioacousticClockHypothesis(observations, timeline, sampleRate); + var globalTimingMae = clock?.MeanAbsoluteErrorSamples ?? double.PositiveInfinity; + var anchorCoverage = expectedEvents.Count == 0 || clock == null ? 0.0 : clock.AnchorCount / (double)expectedEvents.Count; var realtime = decodeMilliseconds <= 0.0 ? double.PositiveInfinity : seconds * 1000.0 / decodeMilliseconds; var identityScore = precision * 0.45 + recall * 0.45 + confidence * 0.10; - var timingScore = double.IsFinite(timingMae) - ? 1.0 / (1.0 + timingMae / Math.Max(1.0, sampleRate * 0.005)) - : 0.0; + var timingScore = clock?.Confidence ?? 0.0; var speedScore = Math.Clamp(realtime / 50.0, 0.0, 1.0); var totalScore = identityScore * 0.62 + timingScore * 0.18 + speedScore * 0.20; var reconstructed = ReconstructDetectedBioacousticSong(observations, source.Length, sampleRate); @@ -595,6 +605,16 @@ static async Task RunBioacousticTrainingAsync(int sampleRate, double second analysis.CepstralCoefficients, analysis.FrameCount, analysis.RmsRatio, + clock == null + ? new BioacousticClockHypothesisSnapshot(0, 0, 0, 0, 0, 0, 0) + : new BioacousticClockHypothesisSnapshot( + clock.AnchorCount, + clock.SourceOffsetSamples, + clock.EffectiveSampleRate, + clock.MeanAbsoluteErrorSamples, + clock.Confidence, + clock.Score, + anchorCoverage), new BioacousticTrainingDecoderSnapshot( hypothesis.Decoder.FftSize, hypothesis.Decoder.HopSize, @@ -633,7 +653,7 @@ static async Task RunBioacousticTrainingAsync(int sampleRate, double second results.Add(result); Console.WriteLine( $"bioacoustic-train hypothesis={hypothesis.Id} degradation={degradation.Name} total={totalScore:0.000} identity={identityScore:0.000} timing={timingScore:0.000} speed={speedScore:0.000} " + - $"precision={precision:0.000} recall={recall:0.000} confidence={confidence:0.000} mae={timingMae:0.000} decodeMs={decodeMilliseconds:0.000} realtime={realtime:0.0}x artifacts={RelativePath(Directory.GetCurrentDirectory(), settingDirectory)}"); + $"precision={precision:0.000} recall={recall:0.000} confidence={confidence:0.000} mae={timingMae:0.000} globalMae={globalTimingMae:0.000} globalAnchors={clock?.AnchorCount ?? 0} anchorCoverage={anchorCoverage:0.000} decodeMs={decodeMilliseconds:0.000} realtime={realtime:0.0}x artifacts={RelativePath(Directory.GetCurrentDirectory(), settingDirectory)}"); } } @@ -784,6 +804,66 @@ static int RunActiveSyncSelfTest(int sampleRate, MimirAudioSyncMode mode) : 1; } +static int RunBioacousticActuatorSelfTest(int sampleRate, double delaySamples) +{ + var segments = Enumerable.Range(0, 4) + .Select(segment => MimirBioacousticTimeline.Default.RenderSegmentMonoFloat((ulong)segment, sampleRate)) + .ToArray(); + var reference = new float[segments.Sum(segment => segment.Length)]; + var writeOffset = 0; + foreach (var segment in segments) + { + Array.Copy(segment, 0, reference, writeOffset, segment.Length); + writeOffset += segment.Length; + } + + var delayed = ApplyFractionalDelay(reference, delaySamples); + var before = EstimateBioacousticDelay(reference, delayed, sampleRate); + if (before == null) + { + Console.Error.WriteLine("bioacoustic actuator self-test failed: analyzer could not estimate the delayed candidate"); + return 1; + } + + var corrected = ApplyFractionalDelay(delayed, -before.FractionalDelaySamples); + var after = EstimateBioacousticDelay(reference, corrected, sampleRate); + if (after == null) + { + Console.Error.WriteLine("bioacoustic actuator self-test failed: analyzer could not estimate the corrected candidate"); + return 1; + } + + var beforeError = Math.Abs(before.FractionalDelaySamples - delaySamples); + var afterResidual = Math.Abs(after.FractionalDelaySamples); + Console.WriteLine( + $"bioacoustic-actuator-self-test estimatedDelay={before.FractionalDelaySamples:0.000000} expected={delaySamples:0.000000} beforeErrorSamples={beforeError:0.000000} " + + $"correctedResidualSamples={afterResidual:0.000000} correctedResidualUs={afterResidual * 1_000_000.0 / sampleRate:0.000} beforeConfidence={before.Confidence:0.000} afterConfidence={after.Confidence:0.000}"); + return beforeError < 0.05 && + afterResidual * 1_000_000.0 / sampleRate < 1.0 && + after.Confidence > 0.70 + ? 0 + : 1; +} + +static MimirAudioSynchronizationReport? EstimateBioacousticDelay(float[] reference, float[] candidate, int sampleRate) +{ + const string referenceSourceId = "actuator-reference"; + const string candidateSourceId = "actuator-candidate"; + var referenceBuffer = new MimirRollingStreamBuffer( + new MimirStreamDescriptor(referenceSourceId, MimirStreamKind.Audio, MimirStreamOrigin.LocalDevice), + TimeSpan.FromSeconds(5)); + var candidateBuffer = new MimirRollingStreamBuffer( + new MimirStreamDescriptor(candidateSourceId, MimirStreamKind.Audio, MimirStreamOrigin.LocalDevice), + TimeSpan.FromSeconds(5)); + AppendFloatBlock(referenceBuffer, referenceSourceId, reference, sampleRate); + AppendFloatBlock(candidateBuffer, candidateSourceId, candidate, sampleRate); + + var analyzer = new MimirAudioSynchronizationAnalyzer(); + return analyzer + .Analyze([referenceBuffer, candidateBuffer], referenceSourceId, MimirAudioSyncMode.ChirpOnly) + .SingleOrDefault(); +} + static string SyncModeLabel(MimirAudioSyncMode mode) { return mode == MimirAudioSyncMode.ChirpOnly ? "chirp-only" : "hybrid"; @@ -1543,6 +1623,151 @@ static double MeanCepstralTimingError( Math.Abs(observation.SampleOffset - timeline.EventForIndex(observation.EventIndex).StartSeconds * sampleRate)); } +static BioacousticClockHypothesis? FitBioacousticClockHypothesis( + IReadOnlyList observations, + MimirBioacousticTimeline timeline, + int sampleRate) +{ + var anchors = observations + .Select(observation => new BioacousticClockAnchor( + observation.EventIndex, + timeline.EventForIndex(observation.EventIndex).StartSeconds, + observation.SampleOffset, + Math.Clamp(observation.Confidence, 0.001, 1.0))) + .OrderByDescending(anchor => anchor.Confidence) + .Take(24) + .ToArray(); + if (anchors.Length == 0) + { + return null; + } + + var candidates = new List(); + foreach (var anchor in anchors) + { + var offset = anchor.SampleOffset - anchor.TimelineSeconds * sampleRate; + AddClockCandidate(candidates, anchors, sampleRate, offset, sampleRate); + } + + if (anchors.Length >= 3) + { + for (var first = 0; first < anchors.Length; first++) + { + for (var second = first + 1; second < anchors.Length; second++) + { + var dt = anchors[second].TimelineSeconds - anchors[first].TimelineSeconds; + if (Math.Abs(dt) < 0.08) + { + continue; + } + + var rate = (anchors[second].SampleOffset - anchors[first].SampleOffset) / dt; + if (!double.IsFinite(rate) || rate < sampleRate * 0.98 || rate > sampleRate * 1.02) + { + continue; + } + + var offset = anchors[first].SampleOffset - anchors[first].TimelineSeconds * rate; + AddClockCandidate(candidates, anchors, sampleRate, offset, rate); + } + } + } + + return candidates + .OrderByDescending(candidate => candidate.Score) + .ThenBy(candidate => candidate.MeanAbsoluteErrorSamples) + .FirstOrDefault(); +} + +static void AddClockCandidate( + List candidates, + IReadOnlyList anchors, + int nominalSampleRate, + double sourceOffsetSamples, + double effectiveSampleRate) +{ + var tolerance = Math.Max(36.0, nominalSampleRate * 0.012); + var inliers = anchors + .Where(anchor => Math.Abs(anchor.SampleOffset - (sourceOffsetSamples + anchor.TimelineSeconds * effectiveSampleRate)) <= tolerance) + .ToArray(); + if (inliers.Length == 0) + { + return; + } + + var refined = FitBioacousticClockToInliers(inliers, nominalSampleRate); + if (refined != null) + { + candidates.Add(refined); + } +} + +static BioacousticClockHypothesis? FitBioacousticClockToInliers( + IReadOnlyList anchors, + int nominalSampleRate) +{ + if (anchors.Count == 0) + { + return null; + } + + if (anchors.Count == 1) + { + var anchor = anchors[0]; + var offset = anchor.SampleOffset - anchor.TimelineSeconds * nominalSampleRate; + var singleAnchorConfidence = anchor.Confidence * 0.20; + return new BioacousticClockHypothesis( + offset, + nominalSampleRate, + 1, + 0.0, + singleAnchorConfidence, + singleAnchorConfidence, + anchors.ToArray()); + } + + var totalWeight = anchors.Sum(anchor => Math.Max(1.0e-6, anchor.Confidence)); + var meanTimeline = anchors.Sum(anchor => anchor.TimelineSeconds * Math.Max(1.0e-6, anchor.Confidence)) / totalWeight; + var meanSample = anchors.Sum(anchor => anchor.SampleOffset * Math.Max(1.0e-6, anchor.Confidence)) / totalWeight; + var covariance = 0.0; + var variance = 0.0; + foreach (var anchor in anchors) + { + var weight = Math.Max(1.0e-6, anchor.Confidence); + var dt = anchor.TimelineSeconds - meanTimeline; + covariance += weight * dt * (anchor.SampleOffset - meanSample); + variance += weight * dt * dt; + } + + var effectiveSampleRate = anchors.Count >= 3 && variance > 1.0e-12 ? covariance / variance : nominalSampleRate; + if (!double.IsFinite(effectiveSampleRate) || + effectiveSampleRate < nominalSampleRate * 0.98 || + effectiveSampleRate > nominalSampleRate * 1.02) + { + effectiveSampleRate = nominalSampleRate; + } + + var sourceOffset = meanSample - effectiveSampleRate * meanTimeline; + var weightedResidual = anchors.Sum(anchor => + { + var predicted = sourceOffset + anchor.TimelineSeconds * effectiveSampleRate; + return Math.Abs(anchor.SampleOffset - predicted) * Math.Max(1.0e-6, anchor.Confidence); + }) / totalWeight; + var residualConfidence = 1.0 / (1.0 + weightedResidual / Math.Max(1.0, nominalSampleRate * 0.001)); + var countConfidence = Math.Clamp(anchors.Count / 5.0, 0.0, 1.0); + var anchorConfidence = Math.Clamp(anchors.Average(anchor => anchor.Confidence), 0.0, 1.0); + var confidence = residualConfidence * 0.35 + countConfidence * 0.45 + anchorConfidence * 0.20; + var score = confidence + Math.Min(anchors.Count, 8) * 0.15 - weightedResidual / Math.Max(1.0, nominalSampleRate * 0.010); + return new BioacousticClockHypothesis( + sourceOffset, + effectiveSampleRate, + anchors.Count, + weightedResidual, + confidence, + score, + anchors.ToArray()); +} + static double CepstralDistance(IReadOnlyList first, IReadOnlyList second) { var sum = 0.0; @@ -2180,6 +2405,21 @@ internal sealed record CepstralWordObservation( double SampleOffset, double Confidence); +internal sealed record BioacousticClockAnchor( + ulong EventIndex, + double TimelineSeconds, + double SampleOffset, + double Confidence); + +internal sealed record BioacousticClockHypothesis( + double SourceOffsetSamples, + double EffectiveSampleRate, + int AnchorCount, + double MeanAbsoluteErrorSamples, + double Confidence, + double Score, + IReadOnlyList Anchors); + internal sealed record CepstralWordIndex( IReadOnlyList Templates, IReadOnlyDictionary<(int Table, int Hash), List> Buckets); @@ -2215,9 +2455,20 @@ public sealed record BioacousticTrainingResult( [property: Key(23)] int RoundTripCepstralCoefficients, [property: Key(24)] int RoundTripFrameCount, [property: Key(25)] double RoundTripRmsRatio, - [property: Key(26)] BioacousticTrainingDecoderSnapshot Decoder, - [property: Key(27)] BioacousticTrainingArtifact[] Artifacts, - [property: Key(28)] BioacousticTrainingObservation[] Observations); + [property: Key(26)] BioacousticClockHypothesisSnapshot ClockHypothesis, + [property: Key(27)] BioacousticTrainingDecoderSnapshot Decoder, + [property: Key(28)] BioacousticTrainingArtifact[] Artifacts, + [property: Key(29)] BioacousticTrainingObservation[] Observations); + +[MessagePackObject] +public sealed record BioacousticClockHypothesisSnapshot( + [property: Key(0)] int AnchorCount, + [property: Key(1)] double SourceOffsetSamples, + [property: Key(2)] double EffectiveSampleRate, + [property: Key(3)] double MeanAbsoluteErrorSamples, + [property: Key(4)] double Confidence, + [property: Key(5)] double Score, + [property: Key(6)] double AnchorCoverage); [MessagePackObject] public sealed record BioacousticTrainingDecoderSnapshot( diff --git a/state/evidence.jsonl b/state/evidence.jsonl index 9d25eb6..28223a7 100644 --- a/state/evidence.jsonl +++ b/state/evidence.jsonl @@ -84,3 +84,5 @@ {"ts": "2026-05-23T23:45:11+01:00", "type": "decision", "status": "ok", "note": "Added Perfect Machine domain index plus 2026-05-23 architecture/optimization/reference study and sample implementation sketches for decoder, SIMD/GPU scoring, actuator, and native rings."} {"ts": "2026-05-24T01:55:37+01:00", "type": "decision", "status": "ok", "note": "Completed corrected two-hour Perfect Machine study pass from 2026-05-23T23:54:42.9041588+01:00 through 2026-05-24T01:54:56.9747630+01:00; research/perfect-machine-study-2026-05-23 now indexes decoder architecture, acoustic field models, calibration sessions, Fensalir/native boundaries, distributed receivers, benchmarks, failure modes, low-level notes, and sample implementation sketches."} {"ts": "2026-05-24T11:38:08+01:00", "type": "implementation", "status": "ok", "note": "Added bioacoustic indexed-cepstral training harness with CultLib/CultCache typed result receipts and WAV artifact directories. Latest run artifacts/bioacoustic-training/bioacoustic-20260524-103438 scored 20 hypothesis/degradation cases; identity often survives mel-cepstral warp/blur, but timing MAE under warp points next at a global clock/path hypothesis rather than larger brute-force matching."} +{"ts": "2026-05-24T16:06:07+01:00", "type": "implementation", "status": "ok", "note": "Added global bioacoustic clock hypothesis scoring to the training harness and the first Faust-owned alignment actuator surface. Corrected receipt artifacts/bioacoustic-training/bioacoustic-20260524-150000 favors baseline-mfcc-index/blur-light with total 0.766 after penalizing low-anchor timing fits. bioacoustic-actuator-self-test estimates 317.375 samples, applies fractional correction, and remeasures 0.000 us residual; faust/mimir_alignment_actuator.dsp validates through Faust C++ generation."} +{"ts": "2026-05-24T16:09:30+01:00", "type": "implementation", "status": "ok", "note": "Extended the corrected bioacoustic training run to 0.75s in artifacts/bioacoustic-training/bioacoustic-20260524-150729. Compact indexing wins clean throughput at total 0.752/realtime 6.6x, baseline remains steadier under degradation, highband has warped-path value, and anchor density/time-to-lock should become explicit metrics."} diff --git a/state/map.yaml b/state/map.yaml index 813d035..57b4edd 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -128,11 +128,13 @@ accepted_design: confirmation. `Mimir.BufferSmoke --bioacoustic-train` now runs a receipt-backed hypothesis panel over indexed cepstral decoder shapes and writes typed CultCache results plus pre-warp/post-warp/reconstructed WAV - artifacts under `artifacts/bioacoustic-training/`. The latest receipt - `bioacoustic-20260524-103438` shows compact indexing is fastest on clean - audio, baseline indexing is more stable under light warp, highband indexing - can win blur/warp-blur cases, and timing error under domain warp remains - the pressure for a global clock/path hypothesis. `MimirChirpBinTimeline` remains the controlled chirp-bin + artifacts under `artifacts/bioacoustic-training/`. The first receipt + `bioacoustic-20260524-103438` showed compact indexing fastest on clean + audio and exposed timing error under domain warp. The corrected receipt + `bioacoustic-20260524-150729` adds global clock hypothesis scoring over a + longer window; compact indexing wins clean throughput, baseline indexing + remains steadier under degradation, highband indexing has warped-path value, + and anchor density needs its own metric. `MimirChirpBinTimeline` remains the controlled chirp-bin calibration/reference artifact with ASIO tooling and `MimirChirpBinCalibrationModel`; keep those captures as response evidence, not the active runtime sound. Reports and sync states expose delay in @@ -146,7 +148,12 @@ accepted_design: correctly accepts strong passive evidence at 2.772 us error. The synthetic standalone receiver proof `--standalone-bioacoustic-self-test --sample-rate 48000 --delay-samples 1269.5` recovers delayed source time below printed - microsecond precision using only the codebook/schedule. The synthetic + microsecond precision using only the codebook/schedule. `--bioacoustic-actuator-self-test + --sample-rate 48000 --delay-samples 317.375` now proves the first + measurement-to-sample-movement loop: estimate bioacoustic delay, apply + fractional correction, and remeasure residual below printed microsecond + precision. `faust/mimir_alignment_actuator.dsp` is the first Faust-owned + actuator surface for six channels of bounded fractional delay/gain. The synthetic codebook proof is `dotnet run --project .\src\Mimir.BufferSmoke\Mimir.BufferSmoke.csproj -- --bioacoustic-self-test`. `Mimir.BufferSmoke --render-chirp-bin-f32` plus