{ "schema_version": 1, "experiment": "6-5", "title": "MiniCPM-o 4.5 local end-to-end omni speech", "timestamp_utc": "2026-08-01T04:30:23.044472+00:00", "model": { "model_id": "openbmb/MiniCPM-o-4_5", "model_revision": "1f761131fa83f5ed3cd6f2f22b225c4501d154fa", "device": "cuda", "torch_version": "2.8.0+cu128", "transformers_version": "4.51.0", "cuda_version": "12.8", "cuda_available": true, "gpu": { "name": "NVIDIA RTX PRO 6000 Blackwell Workstation Edition", "total_memory_gib": 94.97, "peak_allocated_gib": 20.269 }, "load_seconds": 6.154250729829073, "precision": "bfloat16", "attention": "sdpa", "init_vision": false, "init_audio": true, "init_tts": true }, "host": { "platform": "Linux-6.8.0-111-generic-x86_64-with-glibc2.35", "commit": "d6a31e8a93c1fed8901d6ea59e1ba80d6101f97a", "workspace_dirty_at_run": true }, "protocol": { "case_count": 4, "direct_arm": "audio -> MiniCPM-o latent processing -> text", "self_cascade_arm": "audio -> MiniCPM-o transcript -> MiniCPM-o text reasoning", "speech_arm": "audio -> MiniCPM-o latent processing -> text + generated waveform", "enable_thinking": false, "sampling": false, "max_new_tokens": 256 }, "cases": [ { "id": "spoken-math-boxes", "audio": "boxes-79.wav", "category": "semantic_reasoning", "instruction": "Listen to the spoken math problem and reply with the final numeric answer.", "expected_aliases": [ "79", "seventy-nine", "seventy nine" ], "audio_path": "fixtures/boxes-79.wav", "audio_sha256": "ca55172355f1d49a7e769ef379b4daeadea15c0b58a04c1987b4293381ad42e8", "direct": { "mode": "direct-audio-to-text", "response": "Find the total number of pencils at first by multiplying the number of boxes by the number of pencils in each box: 8 boxes * 8 pencils/box = 64 pencils\nThen subtract the number of pencils given away from the total number of pencils to find the number of pencils that remain: 64 pencils - 17 pencils = 47 pencils\nThe answer is 47", "latency_seconds": 1.911103354766965, "transcript": null, "stage_latencies": null, "output_audio": null, "passed": false }, "self_cascade": { "mode": "self-cascade-audio-to-transcript-to-text", "response": "First, calculate the total number of pencils: 12 boxes * 8 pencils/box = 96 pencils. Then subtract the pencils given away: 96 - 17 = 79 pencils remain.\n\n79", "latency_seconds": 1.1656107371672988, "transcript": "A shop has twelve boxes with eight pencils in each box. It gave away seventeen pencils. How many pencils remain?", "stage_latencies": { "transcription_seconds": 0.4240540452301502, "reasoning_seconds": 0.7415566919371486 }, "output_audio": null, "passed": true } }, { "id": "spoken-math-tickets", "audio": "tickets-42.wav", "category": "semantic_reasoning", "instruction": "Listen to the spoken math problem and reply with the final numeric answer.", "expected_aliases": [ "42", "forty-two", "forty two" ], "audio_path": "fixtures/tickets-42.wav", "audio_sha256": "66c8aa161fc046c93b97f56c7b9b69ea25f63b54f243ea153f95fb4b2d815b49", "direct": { "mode": "direct-audio-to-text", "response": "The theater sold 18 tickets in the morning and 24 tickets in the afternoon. So it sold 18 + 24 = 42 tickets altogether. The answer is 42.", "latency_seconds": 0.6811522357165813, "transcript": null, "stage_latencies": null, "output_audio": null, "passed": true }, "self_cascade": { "mode": "self-cascade-audio-to-transcript-to-text", "response": "18 + 24 = 42\nAnswer: 42", "latency_seconds": 0.6580845378339291, "transcript": "The theater sold eighteen tickets in the morning and twenty four tickets in the afternoon. How many tickets did it sell altogether?", "stage_latencies": { "transcription_seconds": 0.40988718904554844, "reasoning_seconds": 0.24819734878838062 }, "output_audio": null, "passed": true } }, { "id": "speaking-rate-fast", "audio": "pace-fast.wav", "category": "paralinguistic", "instruction": "Classify the speaker's pace as fast or slow. Reply with exactly one word: fast or slow.", "expected_aliases": [ "fast" ], "audio_path": "fixtures/pace-fast.wav", "audio_sha256": "048cb477c0814e5e193df1425bee1fb0ce75df1cbc59c8e0a8f2db046f65b303", "direct": { "mode": "direct-audio-to-text", "response": "fast", "latency_seconds": 0.07435999717563391, "transcript": null, "stage_latencies": null, "output_audio": null, "passed": true }, "self_cascade": { "mode": "self-cascade-audio-to-transcript-to-text", "response": "slow", "latency_seconds": 0.19370830059051514, "transcript": "Please send the report before lunch.", "stage_latencies": { "transcription_seconds": 0.15708006545901299, "reasoning_seconds": 0.03662823513150215 }, "output_audio": null, "passed": false } }, { "id": "speaking-rate-slow", "audio": "pace-slow.wav", "category": "paralinguistic", "instruction": "Classify the speaker's pace as fast or slow. Reply with exactly one word: fast or slow.", "expected_aliases": [ "slow" ], "audio_path": "fixtures/pace-slow.wav", "audio_sha256": "1a851ddc5d765b95f89d3a7cdabe137328b4ab7bc50dd06cc52c9c37bfecddd2", "direct": { "mode": "direct-audio-to-text", "response": "slow", "latency_seconds": 0.07847040891647339, "transcript": null, "stage_latencies": null, "output_audio": null, "passed": true }, "self_cascade": { "mode": "self-cascade-audio-to-transcript-to-text", "response": "slow", "latency_seconds": 0.1868541669100523, "transcript": "Please send the report before lunch.", "stage_latencies": { "transcription_seconds": 0.15028280764818192, "reasoning_seconds": 0.036571359261870384 }, "output_audio": null, "passed": true } } ], "aggregate": { "direct_correct": 3, "self_cascade_correct": 3, "total_cases": 4, "direct_accuracy": 0.75, "self_cascade_accuracy": 0.75, "direct_mean_latency_seconds": 0.6862714991439134, "self_cascade_mean_latency_seconds": 0.5510644356254488 }, "speech_output": { "mode": "direct-audio-to-speech", "response": "The shop had 8 boxes x 8 pencils = 64 pencils in total. After giving away 17 pencils, there are 64 - 17 = 47 pencils remaining.", "latency_seconds": 2.639366910792887, "transcript": null, "stage_latencies": null, "output_audio": { "path": "validation/runs/exp6-5-minicpmo45-20260801-v1/outputs/spoken-math-boxes-response.wav", "sha256": "dfaf64d06cc46c8d52a11f393ad067b1c48e950971ba28851e5dd0180639f111", "sample_rate_hz": 24000, "frames": 277440, "duration_seconds": 11.56, "channels": 1, "format": "WAV" } }, "implementation_sha256": { "demo.py": "1193c6ded825c13343723d77f29b444b7fb8a9b8c78c0d43c125aa19b5674e5f", "speech_model.py": "da6cd20900594166b06b8027a7fb6fe21e4715d3912e744b518df3f74449cd8f", "validate_evidence.py": "820e36f229c162f75882296c827709303948118b264441dbd4218dc73346ae31", "requirements.txt": "c3700db0ac3068f91879ccad6423cb5d94c7c2f508b183e0d2de8c82fac3d757", "fixtures/cases.json": "f568c3bfb8b8866831bab2c0bc1940e2aacb9aa7d37282fe50c8b12a17fdb191" }, "external_api_calls": 0 }