Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
208 lines
7.8 KiB
JSON
208 lines
7.8 KiB
JSON
{
|
|
"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
|
|
}
|