diff --git a/benchmarks/edge_harness/experiments/probe_tts_asr_cjk.py b/benchmarks/edge_harness/experiments/probe_tts_asr_cjk.py new file mode 100644 index 000000000..f425c03ec --- /dev/null +++ b/benchmarks/edge_harness/experiments/probe_tts_asr_cjk.py @@ -0,0 +1,126 @@ +#!/usr/bin/env python3 +"""Check generated Mandarin speech against its own text with local Whisper. + +Character error rate is an intelligibility proxy, not a task-quality or +speaker-fidelity score. It does not say whether the model understood its input. +""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import re +import time +from pathlib import Path + + +def sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for block in iter(lambda: stream.read(8 << 20), b""): + digest.update(block) + return digest.hexdigest() + + +def characters(value: str) -> list[str]: + return re.findall(r"[\u4e00-\u9fff]|[a-z0-9]", value.casefold()) + + +def character_error_rate(reference: str, actual: str) -> float: + expected, got = characters(reference), characters(actual) + previous = list(range(len(got) + 1)) + for position, item in enumerate(expected, 1): + current = [position] + for index, candidate in enumerate(got, 1): + current.append(min( + current[-1] + 1, + previous[index] + 1, + previous[index - 1] + (item != candidate), + )) + previous = current + return previous[-1] / max(len(expected), 1) + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--wav", type=Path, required=True) + parser.add_argument("--reference-file", type=Path, required=True) + parser.add_argument("--model-dir", type=Path, required=True) + parser.add_argument("--model-revision", required=True) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + + import librosa + import numpy as np + from opencc import OpenCC + import soundfile as sf + import torch + import transformers + from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor + + audio, sample_rate = sf.read(args.wav, dtype="float32", always_2d=False) + if audio.ndim != 1 or not audio.size or not np.isfinite(audio).all(): + raise ValueError("expected finite mono audio") + audio_16k = librosa.resample(audio, orig_sr=sample_rate, target_sr=16000) + reference = args.reference_file.read_text(encoding="utf-8").strip() + if not characters(reference): + raise ValueError("reference text has no Mandarin or alphanumeric characters") + started = time.perf_counter() + processor = AutoProcessor.from_pretrained(str(args.model_dir), local_files_only=True) + model = AutoModelForSpeechSeq2Seq.from_pretrained( + str(args.model_dir), local_files_only=True + ).to("cpu") + load_s = time.perf_counter() - started + if {parameter.device.type for parameter in model.parameters()} != {"cpu"}: + raise RuntimeError("Whisper was not wholly on CPU") + started = time.perf_counter() + transcripts = [] + segment_frames = 25 * 16000 + with torch.no_grad(): + for offset in range(0, len(audio_16k), segment_frames): + features = processor( + audio_16k[offset:offset + segment_frames], + sampling_rate=16000, + return_tensors="pt", + return_attention_mask=True, + ) + ids = model.generate( + features.input_features, attention_mask=features.attention_mask, + language="zh", task="transcribe", + ) + transcripts.append( + processor.batch_decode(ids, skip_special_tokens=True)[0].strip() + ) + infer_s = time.perf_counter() - started + transcript = "".join(transcripts) + traditional_to_simplified = OpenCC("t2s") + normalized_reference = traditional_to_simplified.convert(reference) + normalized_transcript = traditional_to_simplified.convert(transcript) + report = { + "scope": "Whisper Mandarin ASR proxy for generated speech; no input-task or perceptual-quality claim", + "asr_model": "openai/whisper-tiny", + "asr_revision": args.model_revision, + "asr_weights_sha256": sha256(args.model_dir / "model.safetensors"), + "transformers": transformers.__version__, + "torch": torch.__version__, + "wav_sha256": sha256(args.wav), + "wav_duration_s": len(audio) / sample_rate, + "reference_text": reference, + "transcript": transcript, + "asr_segments_25_s": len(transcripts), + "character_error_rate_raw": character_error_rate(reference, transcript), + "character_error_rate_t2s_normalized": character_error_rate( + normalized_reference, normalized_transcript + ), + "normalization": "OpenCC 0.1.7 t2s; punctuation ignored", + "load_s": load_s, + "inference_s": infer_s, + } + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(report, indent=2, ensure_ascii=False) + "\n", encoding="utf-8") + print(json.dumps(report, indent=2, ensure_ascii=False)) + + +if __name__ == "__main__": + main() diff --git a/benchmarks/edge_harness/experiments/profile_local_process.py b/benchmarks/edge_harness/experiments/profile_local_process.py new file mode 100644 index 000000000..26ab808a3 --- /dev/null +++ b/benchmarks/edge_harness/experiments/profile_local_process.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +"""Capture one local process's raw output, exit code, elapsed time and memory. + +This wrapper samples RSS and private bytes; the values are observed maxima, not +proof of the true loading peak between samples. +""" + +from __future__ import annotations + +import argparse +import json +import subprocess +import time +from pathlib import Path + +import psutil + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--cwd", type=Path, required=True) + parser.add_argument("--stdout", type=Path, required=True) + parser.add_argument("--stderr", type=Path, required=True) + parser.add_argument("--report", type=Path, required=True) + parser.add_argument("--sample-interval-ms", type=int, default=100) + parser.add_argument("command", nargs=argparse.REMAINDER) + args = parser.parse_args() + if not args.command or args.sample_interval_ms < 10: + parser.error("a command and sample interval >= 10 ms are required") + command = args.command[1:] if args.command[0] == "--" else args.command + for path in (args.stdout, args.stderr, args.report): + path.parent.mkdir(parents=True, exist_ok=True) + + started = time.perf_counter() + with args.stdout.open("wb") as stdout, args.stderr.open("wb") as stderr: + child = subprocess.Popen(command, cwd=args.cwd, stdout=stdout, stderr=stderr) + process = psutil.Process(child.pid) + samples = 0 + peak_rss = 0 + peak_private = 0 + while child.poll() is None: + try: + memory = process.memory_info() + except (psutil.NoSuchProcess, psutil.AccessDenied): + break + peak_rss = max(peak_rss, memory.rss) + peak_private = max(peak_private, getattr(memory, "private", 0)) + samples += 1 + time.sleep(args.sample_interval_ms / 1000) + exit_code = child.wait() + report = { + "command": command, + "cwd": str(args.cwd), + "exit_code": exit_code, + "wall_s": time.perf_counter() - started, + "memory_sample_interval_ms": args.sample_interval_ms, + "memory_samples": samples, + "peak_sampled_rss_bytes": peak_rss, + "peak_sampled_private_bytes": peak_private, + "measurement_note": "sampled process values, not guaranteed loading peaks", + } + args.report.write_text(json.dumps(report, indent=2) + "\n", encoding="utf-8") + print(json.dumps(report, indent=2)) + if exit_code: + raise SystemExit(exit_code) + + +if __name__ == "__main__": + main() diff --git a/benchmarks/edge_harness/experiments/verify_minicpm_cpp_output.py b/benchmarks/edge_harness/experiments/verify_minicpm_cpp_output.py new file mode 100644 index 000000000..4e66d547a --- /dev/null +++ b/benchmarks/edge_harness/experiments/verify_minicpm_cpp_output.py @@ -0,0 +1,165 @@ +#!/usr/bin/env python3 +"""Verify a complete MiniCPM-o C++ text/audio result and join its PCM chunks. + +The upstream CLI currently writes wav_N.wav but its optional merger searches +for tts_output_chunk_N.wav. This verifier checks the actual bounded sequence, +then joins PCM frames without changing sample values. +""" + +from __future__ import annotations + +import argparse +import array +import hashlib +import json +import math +import re +import wave +from pathlib import Path + + +ARTIFACTS = ( + "MiniCPM-o-4_5-Q4_K_M.gguf", + "audio/MiniCPM-o-4_5-audio-F16.gguf", + "vision/MiniCPM-o-4_5-vision-F16.gguf", + "tts/MiniCPM-o-4_5-tts-F16.gguf", + "tts/MiniCPM-o-4_5-projector-F16.gguf", + "token2wav-gguf/encoder.gguf", + "token2wav-gguf/flow_matching.gguf", + "token2wav-gguf/flow_extra.gguf", + "token2wav-gguf/hifigan2.gguf", + "token2wav-gguf/prompt_cache.gguf", +) + + +def sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for chunk in iter(lambda: stream.read(8 << 20), b""): + digest.update(chunk) + return digest.hexdigest() + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--output-dir", type=Path, required=True) + parser.add_argument("--run-log", type=Path, required=True) + parser.add_argument("--runtime-bin", type=Path, required=True) + parser.add_argument("--model-dir", type=Path, required=True) + parser.add_argument("--model-revision", required=True) + parser.add_argument("--input-image", type=Path, required=True) + parser.add_argument("--input-audio", type=Path, required=True) + parser.add_argument("--merged-wav", type=Path, required=True) + parser.add_argument("--report", type=Path, required=True) + parser.add_argument("--platform-label", default="WSL CPU") + parser.add_argument("--process-profile", type=Path) + args = parser.parse_args() + + output_dir = args.output_dir.resolve(strict=True) + log = args.run_log.read_text(encoding="utf-8", errors="replace") + required_log = ( + "Media type: 2 (omni: audio+vision)", + "GPU layers: 0", + "Token2Wav device: cpu", + "vision_ctx: vision using CPU backend", + "Token2Wav: initialized successfully", + "stream_prefill(index=1): processing user audio:", + "stream_prefill(index=1): user audio embedding:", + "stream_prefill: prefilled 1 vision chunks", + ) + missing_log = [item for item in required_log if item not in log] + if missing_log: + raise RuntimeError(f"missing complete-path/placement evidence: {missing_log}") + process_profile = None + if args.process_profile: + process_profile = json.loads(args.process_profile.read_text(encoding="utf-8")) + if process_profile["exit_code"] != 0: + raise RuntimeError("profiled process exited with an error") + elif "Exit status: 0" not in log: + raise RuntimeError("/usr/bin/time did not report exit status 0") + wave_dir = output_dir / "round_000" / "tts_wav" + if not (wave_dir / "generation_done.flag").is_file(): + raise RuntimeError("Token2Wav did not finish") + chunk_paths = sorted( + wave_dir.glob("wav_*.wav"), + key=lambda path: int(re.fullmatch(r"wav_(\d+)\.wav", path.name).group(1)), + ) + if not 0 < len(chunk_paths) <= 256: + raise RuntimeError("no bounded audio chunk sequence") + if [path.name for path in chunk_paths] != [f"wav_{i}.wav" for i in range(len(chunk_paths))]: + raise RuntimeError("audio chunk sequence has a gap or duplicate") + + pcm_chunks: list[bytes] = [] + chunks: list[dict] = [] + square_sum = 0 + frames_total = 0 + for path in chunk_paths: + with wave.open(str(path), "rb") as source: + fmt = (source.getnchannels(), source.getsampwidth(), source.getframerate()) + if fmt != (1, 2, 24000): + raise RuntimeError(f"invalid PCM16 mono 24 kHz chunk: {path.name}, {fmt}") + frames = source.getnframes() + if not 0 < frames <= 24000 * 10: + raise RuntimeError(f"invalid bounded chunk length: {path.name}, {frames}") + pcm = source.readframes(frames) + if len(pcm) != frames * 2: + raise RuntimeError(f"truncated audio chunk: {path.name}") + samples = array.array("h") + samples.frombytes(pcm) + square_sum += sum(int(value) ** 2 for value in samples) + frames_total += frames + pcm_chunks.append(pcm) + chunks.append({"name": path.name, "frames": frames, "sha256": sha256(path)}) + if frames_total > 24000 * 120 or square_sum == 0: + raise RuntimeError("assembled audio is too long or silent") + pcm = b"".join(pcm_chunks) + args.merged_wav.parent.mkdir(parents=True, exist_ok=True) + with wave.open(str(args.merged_wav), "wb") as target: + target.setnchannels(1) + target.setsampwidth(2) + target.setframerate(24000) + target.writeframes(pcm) + + text_dir = output_dir / "round_000" / "llm_debug" + text_paths = sorted( + text_dir.glob("chunk_*/llm_text.txt"), + key=lambda path: int(path.parent.name.removeprefix("chunk_")), + ) + response_text = "".join(path.read_text(encoding="utf-8") for path in text_paths).strip() + if not response_text: + raise RuntimeError("language stage returned no text") + memory_match = re.search(r"Maximum resident set size \(kbytes\): (\d+)", log) + wall_match = re.search(r"Elapsed \(wall clock\) time \(h:mm:ss or m:ss\): ([\d:.]+)", log) + model_dir = args.model_dir.resolve(strict=True) + artifacts = {} + for name in ARTIFACTS: + path = model_dir / name + artifacts[name] = {"bytes": path.stat().st_size, "sha256": sha256(path)} + report = { + "scope": f"standalone MiniCPM-o 4.5 GGUF audio+image input to text+speech on {args.platform_label}", + "status": "scoped_complete_path_pass", + "quality": "synthetic red-square/tone response not established as semantically correct", + "model_revision": args.model_revision, + "artifacts": artifacts, + "runtime_binary_sha256": sha256(args.runtime_bin), + "input_image_sha256": sha256(args.input_image), + "input_audio_sha256": sha256(args.input_audio), + "response_text": response_text, + "audio_chunks": chunks, + "audio_frames": frames_total, + "audio_duration_s": frames_total / 24000, + "audio_rms_pcm16": math.sqrt(square_sum / frames_total), + "pcm_sha256": hashlib.sha256(pcm).hexdigest(), + "merged_wav_sha256": sha256(args.merged_wav), + "peak_rss_kib_from_time": int(memory_match.group(1)) if memory_match else None, + "wall_clock_from_time": wall_match.group(1) if wall_match else None, + "sampled_process_profile": process_profile, + "upstream_merge_name_mismatch": "TTS: no valid WAV files to merge" in log, + } + args.report.parent.mkdir(parents=True, exist_ok=True) + args.report.write_text(json.dumps(report, indent=2, ensure_ascii=False) + "\n", encoding="utf-8") + print(json.dumps({key: value for key, value in report.items() if key != "artifacts"}, indent=2, ensure_ascii=False)) + + +if __name__ == "__main__": + main() diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/README.md b/benchmarks/edge_harness/results/e2e_expansion_20260923/README.md index 6cfa2cae3..80e33493a 100644 --- a/benchmarks/edge_harness/results/e2e_expansion_20260923/README.md +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/README.md @@ -1,6 +1,6 @@ # 2026-09-23 WSL CPU and native Windows expansion -This extends the [60-cell device × model matrix](../e2e_profiling_20260922/evidence/summary/README.md) with previously unrun WSL CPU and native Windows paths. The September 22 timing tables remain historical. MiniCPM-o now has separate 20-request serial text-to-speech timing runs on WSL CPU and native Windows GPU, plus one synthetic image and one synthetic audio input on each platform; each InternVLA timing remains one observation. Spark has a 20-request Omni output-head component profile on the HX370 AMD NPU and separate 20-request **complete text** profiles through standalone llama.cpp on native Windows CPU and Radeon 890M. The latter now also run as bounded whole-session Omni stages, with public AsyncOmni requests checked separately. Qwen3-TTS has separate 20-request standalone and bounded Omni whole-session text-to-WAV profiles on native Windows CPU; the CPU+Radeon 890M hybrid route likewise has standalone and Omni profiles. None is a sustained or full-modality profile. The [checkpoint manifests](../e2e_recovery_20260923/README.md) pin the earlier real weights; the [Spark NPU component record](evidence/spark_amd_npu_output_head/README.md), [standalone CPU/Radeon whole-model record](evidence/spark_radeon890m_llamacpp/README.md), [Omni CPU/Radeon whole-session record](evidence/spark_omni_llamacpp/README.md), [standalone CPU Qwen TTS record](evidence/qwen_tts_native_cpu/README.md), [Omni CPU Qwen TTS record](evidence/qwen_tts_omni_cpu/README.md), [standalone joint CPU+Radeon TTS record](evidence/qwen_tts_radeon890m_joint/README.md), and [Omni joint TTS record](evidence/qwen_tts_omni_hybrid/README.md) pin their respective artifacts. No model, precision or context was silently substituted. +This extends the [60-cell device × model matrix](../e2e_profiling_20260922/evidence/summary/README.md) with previously unrun WSL CPU and native Windows paths. The September 22 timing tables remain historical. MiniCPM-o now has separate 20-request serial text-to-speech timing runs on WSL CPU and native Windows GPU, plus one synthetic image and one synthetic audio input on each platform. A separate pinned GGUF route ran one **combined** image+audio to text+speech request on WSL CPU and native Windows CPU; these C++ runs are standalone, with unqualified input-grounded quality. Each InternVLA timing remains one observation. Spark has a 20-request Omni output-head component profile on the HX370 AMD NPU and separate 20-request **complete text** profiles through standalone llama.cpp on native Windows CPU and Radeon 890M. The latter now also run as bounded whole-session Omni stages, with public AsyncOmni requests checked separately. Qwen3-TTS has separate 20-request standalone and bounded Omni whole-session text-to-WAV profiles on native Windows CPU; the CPU+Radeon 890M hybrid route likewise has standalone and Omni profiles. None is a sustained or full-modality profile. The [checkpoint manifests](../e2e_recovery_20260923/README.md) pin the earlier real weights; the [Spark NPU component record](evidence/spark_amd_npu_output_head/README.md), [standalone CPU/Radeon whole-model record](evidence/spark_radeon890m_llamacpp/README.md), [Omni CPU/Radeon whole-session record](evidence/spark_omni_llamacpp/README.md), [standalone CPU Qwen TTS record](evidence/qwen_tts_native_cpu/README.md), [Omni CPU Qwen TTS record](evidence/qwen_tts_omni_cpu/README.md), [standalone joint CPU+Radeon TTS record](evidence/qwen_tts_radeon890m_joint/README.md), and [Omni joint TTS record](evidence/qwen_tts_omni_hybrid/README.md) pin their respective artifacts. No model, precision or context was silently substituted. | Device / model | Verified depth | Observed output and time | Remaining gate | |---|---|---|---| @@ -16,6 +16,8 @@ This extends the [60-cell device × model matrix](../e2e_profiling_20260922/evid | WSL CPU / MiniCPM-o 4.5, revision `503e754207c94da6bb26850b4469f367c9ea3582` | Scoped complete three-stage text-to-text+speech path (P for this input only) | Coherent text and a 5.2 s mono 24 kHz WAV. First request 27.09 s after 73.65 s startup; separate 1-warmup/20-measured serial run: startup 73.89 s, request wall p50 21.86 s/p95 22.97 s. | Speech intelligibility/alignment, real image/audio quality, video input, concurrency, interruption, power and thermal behavior. | | WSL CPU / MiniCPM-o 4.5, same revision | Scoped three-stage **image**-to-text+speech path (P for one synthetic image) | For the 448×448 red square, returned a correct description and nonzero 5.2 s WAV. Startup 112.44 s; one request 37.70 s. Text and token IDs differed from WSL GPU while describing the same visible content. | Real-image suite, speech meaning, repeated latency, memory admission and clean shutdown. | | WSL CPU / MiniCPM-o 4.5, same revision | Scoped three-stage **audio**-to-text+speech path (P for one synthetic clip) | For the 2 s, 440 Hz tone, answered “A loud and high pitched beep” and produced a nonzero 2.16 s WAV. Startup 101.22 s; one request 17.30 s. Text and token IDs differed from WSL GPU. | Real-audio and transcription suites, speech meaning, repeated latency, memory admission and clean shutdown. | +| WSL CPU / MiniCPM-o 4.5, separate pinned Q4_K_M/F16 GGUF set | Standalone C++ whole-chain **combined synthetic image+audio** input to text+speech (P for this request; not an Omni stage or a semantic-quality pass) | The vision and audio encoders, language model, TTS and CPU Token2Wav ran in one process. One cold 40.70 s run returned generic text and ten nonempty 24 kHz chunks, assembled into a 9.24 s WAV; peak RSS from `/usr/bin/time` was 13,369,604 KiB (~12.75 GiB). Whisper tiny ASR gave 9.30% script-normalized character error against the generated text as an intelligibility proxy. The text did not describe the red square or tone. | Compare task quality against a prompted input/reference, fix upstream WAV merge naming, bind Omni placement, repeat latency, cancellation and sustained use; [C++ raw evidence](evidence/minicpmo_cpp_cpu/README.md). | +| Native Windows HX370 CPU / MiniCPM-o 4.5, same pinned Q4_K_M/F16 GGUF set | Standalone C++ whole-chain **combined synthetic image+audio** input to text+speech (P for this request; outside Omni) | The corrected x86-64-v3 build and bounded audio wait completed a cold run in 137.34 s, with 50 nonempty 24 kHz WAV chunks/49.16 s and sampled peak RSS/private bytes 13.10/13.31 GB. Whisper tiny ASR gave 13.59% script-normalized character error against the generated text. The response was generic and input-grounded quality remains unqualified. The first generic cross-build exited 0 with only 15 chunks and no completion flag, preserved as a failed attempt. | Bind an Omni whole-session stage and admission/state contract, prompt and qualify image/audio quality, fix live WAV merge/streaming, repeat latency, cancellation and sustained thermal behavior; [complete raw evidence](evidence/minicpmo_cpp_windows_cpu/README.md), [failed run](evidence/minicpmo_cpp_windows_cpu_attempt1/README.md). | | Native Windows RTX 5090 Laptop / MiniCPM-o 4.5, same revision | Scoped complete three-stage text-to-text+speech path (P for this input only) | Coherent text with the same 32 thinker token IDs as WSL CUDA, and a nonzero 5.2 s mono 24 kHz WAV. First engine startup 297.20 s and request 78.75 s, including first-use graph/JIT work; separate 1-warmup/20-measured serial run: startup 239.05 s, request wall p50 18.38 s/p95 18.73 s. | Speech intelligibility/alignment, real image/audio quality, video input, concurrency, interruption, loading peak and sustained behavior. | | WSL RTX 5090 Laptop / MiniCPM-o 4.5, same revision | Scoped three-stage **image**-to-text+speech path (P for one synthetic image) | For a 448×448 red square on white, returned the correct visual description and a nonzero 5.2 s WAV. Engine startup 101.96 s; one request 17.49 s. | Broader visual quality, real images, audio/video inputs, speech intelligibility, repeated latency and cleanup reliability. | | WSL RTX 5090 Laptop / MiniCPM-o 4.5, same revision | Scoped three-stage **audio**-to-text+speech path (P for one synthetic clip) | For a 2 s, 440 Hz tone at 16 kHz, answered “A loud whistling sound” and produced a nonzero 2.16 s WAV. Engine startup 105.94 s; one request 7.78 s. | Speech transcription/real audio quality, video input, speech intelligibility, repeated latency and shared-memory cleanup. | diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/README.md b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/README.md new file mode 100644 index 000000000..e40dd525f --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/README.md @@ -0,0 +1,29 @@ +# MiniCPM-o 4.5 GGUF whole-chain CPU feasibility run + +This is a **standalone scoped complete-path** audio+image-to-text+speech run on the local Ryzen AI 9 HX 370 under Ubuntu 26.04/WSL2 (`6.18.33.2-microsoft-standard-WSL2`). It is an additional backend feasibility result for the already-scoped WSL CPU × MiniCPM-o cell, not an Omni integration, a native Windows result, a Radeon/NPU result, or a semantic-quality pass. The generated response to a synthetic 448×448 red square and 2 s/440 Hz tone was generic rather than a description of those inputs. + +The complete ten-file artifact set came from [openbmb/MiniCPM-o-4_5-gguf](https://huggingface.co/openbmb/MiniCPM-o-4_5-gguf/tree/db25077c33951fe163b42986fba0132e279872a2) revision `db25077c33951fe163b42986fba0132e279872a2`: Q4_K_M language model, F16 vision/audio/TTS/projector and five Token2Wav GGUF files. [The report](minicpm_omni_cpu_full_report.json) records the byte count and SHA256 of each. The C++ source is [tc-mb/llama.cpp-omni](https://github.com/tc-mb/llama.cpp-omni/tree/5202b7b2f4d11f50b9f996161e7a2f8b8571b890) at `5202b7b2f4d11f50b9f996161e7a2f8b8571b890`, built locally with GCC 15.2, CMake 4.2.3, `GGML_CUDA=OFF`, `GGML_VULKAN=OFF`, and [this small CLI patch](llama_cpp_omni_cpu.patch) adding an explicit CPU Token2Wav selector and a portable wait. The binary SHA256 is in the report. The current branch has a CLI target but no `llama-omni-server` CMake target, so this result remains outside the Omni StageRuntime. + +| Observation | Evidence | +|---|---| +| The runtime logged `GPU layers: 0`, `vision using CPU backend`, and CPU Token2Wav/vocoder placement. Prefill index 0 was the system/reference-audio prompt; index 1 actually encoded one JPEG vision chunk (64 tokens) and the 16 kHz user audio (20 positions). | [raw runtime and `/usr/bin/time` log](minicpm_omni_cpu_full.log), [input JPEG](fixture_0001.jpg), [input WAV](fixture_0001.wav) | +| The decoder returned nonempty [text](response_text.txt), TTS generated audio tokens, and the vocoder wrote ten sequential, nonempty mono 24 kHz PCM16 [chunks](output/round_000/tts_wav/). The bounded verifier joined their original PCM into a [9.24 s WAV](minicpm_omni_cpu_full_merged.wav), 221,760 frames, PCM SHA256 `372c4c7b453849eb1843b0477ce74d5db04a46cacc663ef01d02698f34a1a158`, RMS 2,452.44 in PCM16 units. | [verification report](minicpm_omni_cpu_full_report.json), [raw chunks and timing](output/round_000/tts_wav/) | +| Pinned `openai/whisper-tiny` on CPU transcribed the generated Mandarin WAV with 9.30% CJK/alphanumeric character error against the model's own text after OpenCC traditional-to-simplified normalization; unnormalized error was 32.56%. This is an intelligibility proxy, not a human listening score or input-grounded correctness. | [ASR report](speech_asr_proxy.json), [raw ASR log](speech_asr_proxy.log), [probe](../../../../experiments/probe_tts_asr_cjk.py) | +| The one cold process completed in 40.70 s; `/usr/bin/time` reported 13,369,604 KiB maximum RSS. The Token2Wav calls in the raw log were roughly 2 s per 1 s output after the first call, so this CPU route was slower than real time. This is one observation, not a p50/p95 or sustained profile. | [raw log](minicpm_omni_cpu_full.log) | + +The C++ runtime's optional merger searched for `tts_output_chunk_N.wav` while its vocoder wrote `wav_N.wav`, and it attempted merging before all vocoder work ended. The raw log preserves its “no valid WAV files to merge” message. [The verifier](../../../../experiments/verify_minicpm_cpp_output.py) checks the completion flag, contiguous names, format, duration bound, nonzero samples, nonempty text and logged CPU placement before assembling the actual chunks. It does not repair the runtime's live streaming behavior. The text response did not establish input-grounded quality; the quantized language artifact must be compared against the same task/reference before release qualification. Playable streaming, request cancellation, loading peak, 20-request latency and 30-minute power/thermal behavior remain unverified. + +Reproduce from a local checkout of the pinned C++ commit after applying the recorded patch and downloading the exact GGUF revision: + +```bash +cmake -S . -B build-cpu -G Ninja -DCMAKE_BUILD_TYPE=Release \ + -DGGML_CUDA=OFF -DGGML_VULKAN=OFF -DLLAMA_CURL=OFF \ + -DLLAMA_BUILD_TESTS=OFF -DLLAMA_BUILD_EXAMPLES=ON +cmake --build build-cpu --target llama-omni-cli -j 8 +OMP_NUM_THREADS=8 timeout 900 /usr/bin/time -v ./build-cpu/bin/llama-omni-cli \ + -m /path/to/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf \ + -ngl 0 -c 2048 --omni --t2w-device cpu \ + --test /path/to/fixture_ 2 +``` + +The fixture must have both `fixture_0000.wav` for index 0 and `fixture_0001.wav` plus `fixture_0001.jpg` for the user observation. The recorded run reused the same tone at indices 0 and 1; the image is the JPEG conversion of the previous [red-square fixture](../minicpmo_wsl_image/red_square.png). The weights and local build remain outside Git. diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/fixture_0000.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/fixture_0000.wav new file mode 100644 index 000000000..76b27ff0b Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/fixture_0000.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/fixture_0001.jpg b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/fixture_0001.jpg new file mode 100644 index 000000000..63bf0ffd6 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/fixture_0001.jpg differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/fixture_0001.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/fixture_0001.wav new file mode 100644 index 000000000..76b27ff0b Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/fixture_0001.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/llama_cpp_omni_cpu.patch b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/llama_cpp_omni_cpu.patch new file mode 100644 index 000000000..9196488d4 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/llama_cpp_omni_cpu.patch @@ -0,0 +1,121 @@ +diff --git a/tools/omni/omni-cli.cpp b/tools/omni/omni-cli.cpp +index 2e9623a..769786d 100644 +--- a/tools/omni/omni-cli.cpp ++++ b/tools/omni/omni-cli.cpp +@@ -11,6 +11,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -61,6 +62,8 @@ static void show_usage(const char * prog_name) { + " --ref-audio Reference audio for voice cloning (default: tools/omni/assets/default_ref_audio/default_ref_audio.wav)\n" + " -c, --ctx-size Context size (default: 4096)\n" + " -ngl Number of GPU layers (default: 99)\n" ++ " --t2w-device Token2Wav device: cpu or gpu: (default: gpu:0)\n" ++ " --t2w-wait-seconds Fail if async audio is incomplete after n seconds (default: 120)\n" + " --no-tts Disable TTS output\n" + " --omni Enable omni mode (audio + vision, media_type=2)\n" + " --vision-backend Vision compute backend: 'metal' (default) or 'coreml' (ANE)\n" +@@ -209,6 +212,8 @@ int main(int argc, char ** argv) { + std::string ref_audio_path = "tools/omni/assets/default_ref_audio/default_ref_audio.wav"; + int n_ctx = 4096; + int n_gpu_layers = 99; // GPU 层数,默认 99 ++ std::string token2wav_device = "gpu:0"; ++ int token2wav_wait_seconds = 120; + int media_type = 1; // 1=audio only, 2=omni (audio+vision) + bool use_tts = true; + bool run_test = false; +@@ -247,6 +252,20 @@ int main(int argc, char ** argv) { + else if (arg == "-ngl" && i + 1 < argc) { + n_gpu_layers = std::atoi(argv[++i]); + } ++ else if (arg == "--t2w-device" && i + 1 < argc) { ++ token2wav_device = argv[++i]; ++ if (token2wav_device != "cpu" && token2wav_device.rfind("gpu:", 0) != 0) { ++ fprintf(stderr, "Error: --t2w-device must be cpu or gpu:\n"); ++ return 1; ++ } ++ } ++ else if (arg == "--t2w-wait-seconds" && i + 1 < argc) { ++ token2wav_wait_seconds = std::atoi(argv[++i]); ++ if (token2wav_wait_seconds < 1 || token2wav_wait_seconds > 3600) { ++ fprintf(stderr, "Error: --t2w-wait-seconds must be 1..3600\n"); ++ return 1; ++ } ++ } + else if (arg == "--no-tts") { + use_tts = false; + } +@@ -339,6 +358,7 @@ int main(int argc, char ** argv) { + printf(" TTS enabled: %s\n", use_tts ? "yes" : "no"); + printf(" Context size: %d\n", n_ctx); + printf(" GPU layers: %d\n", n_gpu_layers); ++ printf(" Token2Wav device: %s\n", token2wav_device.c_str()); + printf(" Vision backend: %s\n", vision_backend.c_str()); + if (vision_backend == "coreml") { + printf(" Vision CoreML: %s\n", vision_coreml_model_path.c_str()); +@@ -347,7 +367,8 @@ int main(int argc, char ** argv) { + printf(" Ref audio: %s\n", ref_audio_path.c_str()); + + // 🔧 Token2Wav 使用 GPU(Metal),已用 ggml_add+ggml_repeat 替代不支持的 ggml_add1 +- auto ctx_omni = omni_init(¶ms, media_type, use_tts, tts_bin_dir, -1, "gpu:0"); ++ auto ctx_omni = omni_init(¶ms, media_type, use_tts, tts_bin_dir, ++ token2wav_device == "cpu" ? 0 : -1, token2wav_device); + if (ctx_omni == nullptr) { + fprintf(stderr, "Error: Failed to initialize omni context\n"); + return 1; +@@ -366,13 +387,19 @@ int main(int argc, char ** argv) { + } + + // 等待 T2W 完成所有音频生成后再停止线程 ++ bool audio_complete = true; + if(ctx_omni->async && ctx_omni->use_tts) { + std::string done_flag = std::string(ctx_omni->base_output_dir) + "/round_000/tts_wav/generation_done.flag"; + fprintf(stderr, "Waiting for audio generation to complete...\n"); +- for (int i = 0; i < 1200; ++i) { // 最多等 120 秒 ++ audio_complete = false; ++ for (int i = 0; i < token2wav_wait_seconds * 10; ++i) { + FILE * f = fopen(done_flag.c_str(), "r"); +- if (f) { fclose(f); fprintf(stderr, "Audio generation completed.\n"); break; } +- usleep(100000); // 100ms ++ if (f) { fclose(f); audio_complete = true; fprintf(stderr, "Audio generation completed.\n"); break; } ++ std::this_thread::sleep_for(std::chrono::milliseconds(100)); ++ } ++ if (!audio_complete) { ++ fprintf(stderr, "Error: audio generation did not complete within %d seconds.\n", ++ token2wav_wait_seconds); + } + } + +@@ -386,5 +413,8 @@ int main(int argc, char ** argv) { + llama_perf_context_print(ctx_omni->ctx_llama); + + omni_free(ctx_omni); ++ if (!audio_complete) { ++ return 2; ++ } + return 0; + } +diff --git a/tools/omni/omni.h b/tools/omni/omni.h +index 145f515..b35c459 100644 +--- a/tools/omni/omni.h ++++ b/tools/omni/omni.h +@@ -13,7 +13,7 @@ + #include + + // Windows compatibility: pid_t is not defined on MSVC +-#ifdef _WIN32 ++#if defined(_WIN32) && !defined(__MINGW32__) + typedef int pid_t; + #endif + +@@ -485,4 +485,4 @@ void sliding_window_reset(struct omni_context * ctx_omni); + + // ==================== 高清模式函数声明 ==================== + // 设置 vision max_slice_nums 覆盖值,用于高清模式 +-void vision_set_max_slice_nums(struct vision_ctx * ctx_vision, int max_slice_nums); +\ No newline at end of file ++void vision_set_max_slice_nums(struct vision_ctx * ctx_vision, int max_slice_nums); diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/minicpm_omni_cpu_full.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/minicpm_omni_cpu_full.log new file mode 100644 index 000000000..9c1d84b38 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/minicpm_omni_cpu_full.log @@ -0,0 +1,589 @@ +build: 64 (5202b7b) with cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 for x86_64-linux-gnu +llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest)) +llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output. +llama_model_loader: - kv 0: general.architecture str = qwen3 +llama_model_loader: - kv 1: general.type str = model +llama_model_loader: - kv 2: general.name str = Llm +llama_model_loader: - kv 3: general.size_label str = 8.2B +llama_model_loader: - kv 4: qwen3.block_count u32 = 36 +llama_model_loader: - kv 5: qwen3.context_length u32 = 40960 +llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096 +llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288 +llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32 +llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8 +llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000 +llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001 +llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128 +llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128 +llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2 +llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2 +llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ... +llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ... +llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",... +llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644 +llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645 +llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244 +llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643 +llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false +llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>... +llama_model_loader: - kv 25: general.quantization_version u32 = 2 +llama_model_loader: - kv 26: general.file_type u32 = 15 +llama_model_loader: - type f32: 145 tensors +llama_model_loader: - type q4_K: 217 tensors +llama_model_loader: - type q6_K: 37 tensors +print_info: file format = GGUF V3 (latest) +print_info: file type = Q4_K - Medium +print_info: file size = 4.68 GiB (4.90 BPW) +load: printing all EOG tokens: +load: - 151643 ('<|endoftext|>') +load: - 151645 ('<|im_end|>') +load: - 151662 ('<|fim_pad|>') +load: - 151663 ('<|repo_name|>') +load: - 151664 ('<|file_sep|>') +load: special tokens cache size = 106 +load: token to piece cache size = 0.9319 MB +print_info: arch = qwen3 +print_info: vocab_only = 0 +print_info: n_ctx_train = 40960 +print_info: n_embd = 4096 +print_info: n_layer = 36 +print_info: n_head = 32 +print_info: n_head_kv = 8 +print_info: n_rot = 128 +print_info: n_swa = 0 +print_info: is_swa_any = 0 +print_info: n_embd_head_k = 128 +print_info: n_embd_head_v = 128 +print_info: n_gqa = 4 +print_info: n_embd_k_gqa = 1024 +print_info: n_embd_v_gqa = 1024 +print_info: f_norm_eps = 0.0e+00 +print_info: f_norm_rms_eps = 1.0e-06 +print_info: f_clamp_kqv = 0.0e+00 +print_info: f_max_alibi_bias = 0.0e+00 +print_info: f_logit_scale = 0.0e+00 +print_info: f_attn_scale = 0.0e+00 +print_info: n_ff = 12288 +print_info: n_expert = 0 +print_info: n_expert_used = 0 +print_info: causal attn = 1 +print_info: pooling type = -1 +print_info: rope type = 2 +print_info: rope scaling = linear +print_info: freq_base_train = 1000000.0 +print_info: freq_scale_train = 1 +print_info: n_ctx_orig_yarn = 40960 +print_info: rope_finetuned = unknown +print_info: model type = 8B +print_info: model params = 8.19 B +print_info: general.name = Llm +print_info: vocab type = BPE +print_info: n_vocab = 151748 +print_info: n_merges = 151387 +print_info: BOS token = 151644 '<|im_start|>' +print_info: EOS token = 151645 '<|im_end|>' +print_info: EOT token = 151645 '<|im_end|>' +print_info: UNK token = 128244 '' +print_info: PAD token = 151643 '<|endoftext|>' +print_info: LF token = 198 'Ċ' +print_info: FIM PRE token = 151659 '<|fim_prefix|>' +print_info: FIM SUF token = 151661 '<|fim_suffix|>' +print_info: FIM MID token = 151660 '<|fim_middle|>' +print_info: FIM PAD token = 151662 '<|fim_pad|>' +print_info: FIM REP token = 151663 '<|repo_name|>' +print_info: FIM SEP token = 151664 '<|file_sep|>' +print_info: EOG token = 151643 '<|endoftext|>' +print_info: EOG token = 151645 '<|im_end|>' +print_info: EOG token = 151662 '<|fim_pad|>' +print_info: EOG token = 151663 '<|repo_name|>' +print_info: EOG token = 151664 '<|file_sep|>' +print_info: max token length = 256 +load_tensors: loading model tensors, this can take a while... (mmap = true) +load_tensors: CPU_REPACK model buffer size = 3199.50 MiB +load_tensors: CPU_Mapped model buffer size = 4761.17 MiB +..................................................................................... +llama_context: constructing llama_context +llama_context: n_seq_max = 1 +llama_context: n_ctx = 2048 +llama_context: n_ctx_per_seq = 2048 +llama_context: n_batch = 2048 +llama_context: n_ubatch = 512 +llama_context: causal_attn = 1 +llama_context: flash_attn = auto +llama_context: kv_unified = false +llama_context: freq_base = 1000000.0 +llama_context: freq_scale = 1 +llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized +llama_context: CPU output buffer size = 0.58 MiB +llama_kv_cache: CPU KV buffer size = 288.00 MiB +llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB +llama_context: Flash Attention was auto, set to enabled +llama_context: CPU compute buffer size = 304.38 MiB +llama_context: graph nodes = 1267 +llama_context: graph splits = 1 +llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest)) +llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output. +llama_model_loader: - kv 0: general.architecture str = llama +llama_model_loader: - kv 1: general.type str = model +llama_model_loader: - kv 2: general.name str = Tts +llama_model_loader: - kv 3: general.size_label str = 445M +llama_model_loader: - kv 4: llama.block_count u32 = 20 +llama_model_loader: - kv 5: llama.context_length u32 = 4096 +llama_model_loader: - kv 6: llama.embedding_length u32 = 768 +llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072 +llama_model_loader: - kv 8: llama.attention.head_count u32 = 12 +llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12 +llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000 +llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001 +llama_model_loader: - kv 12: llama.attention.key_length u32 = 64 +llama_model_loader: - kv 13: llama.attention.value_length u32 = 64 +llama_model_loader: - kv 14: general.file_type u32 = 1 +llama_model_loader: - kv 15: llama.vocab_size u32 = 158626 +llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64 +llama_model_loader: - kv 17: general.quantization_version u32 = 2 +llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2 +llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2 +llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ... +llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ... +llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",... +llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644 +llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645 +llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244 +llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643 +llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false +llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>... +llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false +llama_model_loader: - type f32: 50 tensors +llama_model_loader: - type f16: 143 tensors +print_info: file format = GGUF V3 (latest) +print_info: file type = F16 +print_info: file size = 1.07 GiB (20.70 BPW) +load: printing all EOG tokens: +load: - 151643 ('<|endoftext|>') +load: - 151645 ('<|im_end|>') +load: - 151662 ('<|fim_pad|>') +load: - 151663 ('<|repo_name|>') +load: - 151664 ('<|file_sep|>') +load: special tokens cache size = 106 +load: token to piece cache size = 0.9319 MB +print_info: arch = llama +print_info: vocab_only = 0 +print_info: n_ctx_train = 4096 +print_info: n_embd = 768 +print_info: n_layer = 20 +print_info: n_head = 12 +print_info: n_head_kv = 12 +print_info: n_rot = 64 +print_info: n_swa = 0 +print_info: is_swa_any = 0 +print_info: n_embd_head_k = 64 +print_info: n_embd_head_v = 64 +print_info: n_gqa = 1 +print_info: n_embd_k_gqa = 768 +print_info: n_embd_v_gqa = 768 +print_info: f_norm_eps = 0.0e+00 +print_info: f_norm_rms_eps = 1.0e-06 +print_info: f_clamp_kqv = 0.0e+00 +print_info: f_max_alibi_bias = 0.0e+00 +print_info: f_logit_scale = 0.0e+00 +print_info: f_attn_scale = 0.0e+00 +print_info: n_ff = 3072 +print_info: n_expert = 0 +print_info: n_expert_used = 0 +print_info: causal attn = 1 +print_info: pooling type = 0 +print_info: rope type = 0 +print_info: rope scaling = linear +print_info: freq_base_train = 10000.0 +print_info: freq_scale_train = 1 +print_info: n_ctx_orig_yarn = 4096 +print_info: rope_finetuned = unknown +print_info: model type = ?B +print_info: model params = 444.94 M +print_info: general.name = Tts +print_info: vocab type = BPE +print_info: n_vocab = 158626 +print_info: n_merges = 151387 +print_info: BOS token = 151644 '<|im_start|>' +print_info: EOS token = 151645 '<|im_end|>' +print_info: EOT token = 151645 '<|im_end|>' +print_info: UNK token = 128244 '' +print_info: PAD token = 151643 '<|endoftext|>' +print_info: LF token = 198 'Ċ' +print_info: FIM PRE token = 151659 '<|fim_prefix|>' +print_info: FIM SUF token = 151661 '<|fim_suffix|>' +print_info: FIM MID token = 151660 '<|fim_middle|>' +print_info: FIM PAD token = 151662 '<|fim_pad|>' +print_info: FIM REP token = 151663 '<|repo_name|>' +print_info: FIM SEP token = 151664 '<|file_sep|>' +print_info: EOG token = 151643 '<|endoftext|>' +print_info: EOG token = 151645 '<|im_end|>' +print_info: EOG token = 151662 '<|fim_pad|>' +print_info: EOG token = 151663 '<|repo_name|>' +print_info: EOG token = 151664 '<|file_sep|>' +print_info: max token length = 256 +load_tensors: loading model tensors, this can take a while... (mmap = true) +load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately +load_tensors: CPU_Mapped model buffer size = 592.48 MiB +.............................................................. +llama_init_from_model: model default pooling_type is [0], but [-1] was specified +llama_context: constructing llama_context +llama_context: n_seq_max = 1 +llama_context: n_ctx = 2048 +llama_context: n_ctx_per_seq = 2048 +llama_context: n_batch = 2048 +llama_context: n_ubatch = 512 +llama_context: causal_attn = 1 +llama_context: flash_attn = auto +llama_context: kv_unified = false +llama_context: freq_base = 10000.0 +llama_context: freq_scale = 1 +llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized +llama_context: CPU output buffer size = 0.61 MiB +llama_kv_cache: CPU KV buffer size = 120.00 MiB +llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB +llama_context: Flash Attention was auto, set to enabled +llama_context: CPU compute buffer size = 25.51 MiB +llama_context: graph nodes = 613 +llama_context: graph splits = 1 +vision_model_loader: model name: +vision_model_loader: description: image encoder for MiniCPM-V +vision_model_loader: GGUF version: 3 +vision_model_loader: alignment: 32 +vision_model_loader: n_tensors: 455 +vision_model_loader: n_kv: 20 + +vision_ctx: vision using CPU backend +load_hparams: model_type: 0 +load_hparams: n_embd: 1152 +load_hparams: n_head: 16 +load_hparams: n_ff: 4304 +load_hparams: n_layer: 27 +load_hparams: ffn_op: gelu +load_hparams: projection_dim: 0 + +--- vision hparams --- +load_hparams: image_size: 448 +load_hparams: patch_size: 14 +load_hparams: minicpmv_version: 100045 +load_hparams: proj_scale_factor: 0 +load_hparams: n_wa_pattern: 0 + +load_hparams: model size: 1044.36 MiB +load_hparams: metadata size: 0.16 MiB +load_tensors: ffn up/down are swapped +alloc_compute_meta: CPU compute buffer size = 100.30 MiB +init tts....init t2w....voc_hg2_model: CPU backend using 8 threads +audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000 +audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins +audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201 +audition_audio_preprocess: Generated 1 mel spectrogram chunk(s) +audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000 +build_whisper: Whisper encoder graph built (projector output, pre-pooling) +audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000 +audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500 +audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500) +audition_audio_batch_encode: Final output shape: [4096, 20] +audition_audio_batch_encode: Final output: 20 tokens x 4096 dims +=== Model Paths === + Base dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf + LLM: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf [OK] + Vision: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK] + Audio: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK] + TTS: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK] + Projector: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK] +=================== +=== Initializing Omni Context === + Media type: 2 (omni: audio+vision) + TTS enabled: yes + Context size: 2048 + GPU layers: 0 + Token2Wav device: cpu + Vision backend: metal + TTS bin dir: /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts + Ref audio: tools/omni/assets/default_ref_audio/default_ref_audio.wav +21:39:18.191 === omni_init start +21:39:18.191 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output +21:39:18.191 === omni_init: loading new LLM model +21:39:21.245 === omni_init: loading TTS model +21:39:21.245 TTS model: loading with n_gpu_layers=0 +21:39:21.532 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05 +21:39:21.532 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)... +21:39:23.312 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768] +21:39:23.335 TTS: head_code loaded, verifying first few values: +21:39:23.335 head_code_weight[0] = 0.01361084 (expect ~0.01385498) +21:39:23.335 head_code_weight[1] = -0.01660156 (expect ~-0.01647949) +21:39:23.335 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391) +21:39:23.415 TTS: weights loaded successfully +21:39:23.415 Projector: loading from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf +21:39:23.427 Projector: loaded successfully +21:39:23.428 === omni_init: loading APM model +21:39:23.988 APM: init from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf +21:39:24.952 Token2Wav: found models in /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf +21:39:24.952 Token2Wav: all model files found, initializing session... +21:39:24.952 Token2Wav: non-CUDA backend, vocoder using CPU for better performance +21:39:24.952 Token2Wav: using prompt_cache from /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf +21:39:26.392 Token2Wav: initialized successfully +21:39:26.392 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav +21:39:26.392 Token2Wav: 使用 C++ 实现 +21:39:26.392 === omni_init success: ctx_llama = 0x5ca5bae08fe0 +=== Running test case === + Audio prefix: /home/zhout/project/edge_infer/scratch/minicpm_omni_case/fixture_ + Count: 2 +21:39:26.392 stream_prefill: n_past = 0 + voice_clone_prompt = <|im_start|>system +模仿音频样本的音色并生成新的内容。 +<|audio_start|> + assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|> +<|im_start|>user + +21:39:26.392 system prompt ref_audio: /home/zhout/project/edge_infer/scratch/minicpm_omni_case/fixture_0000.wav +21:39:27.447 system prompt ref_audio embedding: n_pos=20 +21:39:29.020 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除 +21:39:29.020 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill +21:39:29.020 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding) +21:39:29.020 n_past = 72 +21:39:29.020 + +c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048 + +prefill 0 (audio+vision) : 2.62814 s +encode_image_with_vision_chunks: step 1 of 1 encoded in 3151.48 ms +encode_image_with_vision_chunks: all 1 chunks encoded in 3173.11 ms (grid: 1x1) + +encode_image_with_vision_chunks: image encoded in 3173.12 ms by vision ( 3173.12 ms per chunk, 64 total tokens) +omni_image_embed_make_chunks_with_filename: created 1 vision chunks from /home/zhout/project/edge_infer/scratch/minicpm_omni_case/fixture_0001.jpg +stream_prefill: prefilled 1 vision chunks (64 tokens each) +audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000 +audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins +audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201 +audition_audio_preprocess: Generated 1 mel spectrogram chunk(s) +audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000 +build_whisper: Whisper encoder graph built (projector output, pre-pooling) +audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000 +audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=1, current_total=100, new_total=200, max_tokens=1500 +audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=200, max_tokens=1500) +audition_audio_batch_encode: Final output shape: [4096, 20] +audition_audio_batch_encode: Final output: 20 tokens x 4096 dims +21:39:34.011 stream_prefill(index=1): processing user audio: /home/zhout/project/edge_infer/scratch/minicpm_omni_case/fixture_0001.wav +21:39:34.194 stream_prefill(index=1): user audio embedding: n_pos=20 +21:39:34.984 + +c++ finish stream_prefill(index=1). n_past=161, n_keep=72, n_ctx=2048 + +prefill 1 (audio+vision) : 5.96389 s +21:39:34.984 📍 stream_decode 开始: n_past=161, n_keep=72, n_ctx=2048, duplex_mode=0 +21:39:34.984 stream_decode: create tts thread (simplex mode) +21:39:34.985 stream_decode: create t2w thread +21:39:34.985 wait prefill done +21:39:34.985 📍 [单工TTS] 添加 assistant prompt: "<|im_end|> +<|im_start|>assistant + + + + +<|tts_bos|>", n_past=161 +21:39:34.985 T2W thread (C++) started + +21:39:34.988 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000 +21:39:34.988 TTS thread started +21:39:35.402 📍 [单工TTS] assistant prompt 完成, n_past=171 +21:39:35.403 LLM decode: max_tgt_len = 2048, n_predict = -1, n_ctx = 2048 +21:39:36.418 LLM->TTS: text='现在可以开始做很多事啦,比如整理', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[99601 73670 55286 99190 99555 29826 104060 3837 101912 104387] +21:39:36.418 TTS<-LLM: chunk_idx=0, text='现在可以开始做很多事啦,比如整理', n_tokens=10, hidden_size=40960, token_ids=[99601 73670 55286 99190 99555 29826 104060 3837 101912 104387] +21:39:36.418 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +21:39:36.418 TTS: before empty check - response.empty=0, response='现在可以开始做很多事啦,比如整理', llm_finish=0 +21:39:36.419 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +21:39:36.419 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +21:39:36.420 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +21:39:36.431 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt +21:39:36.431 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=10, tts_n_embd=768) +21:39:36.431 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=11) +21:39:36.431 TTS Simplex: first chunk - cleared KV cache +21:39:36.431 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer +21:39:36.466 TTS Simplex: prefill completed, n_past_tts=11 +21:39:36.466 TTS Simplex: sampler created +21:39:36.466 TTS simplex: is_audio_bos=true (first audio token) +21:39:36.499 TTS Simplex Phase1: token 1/500: rel_id=1490 +21:39:36.511 TTS Simplex Phase1: token 2/500: rel_id=4299 +21:39:36.522 TTS Simplex Phase1: token 3/500: rel_id=4299 +21:39:36.537 TTS Simplex Phase1: token 4/500: rel_id=4299 +21:39:36.550 TTS Simplex Phase1: token 5/500: rel_id=6081 +21:39:36.805 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25) +21:39:36.805 TTS Simplex Phase1: token 25/500: rel_id=5319 +21:39:36.805 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录 +21:39:36.805 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav +21:39:37.134 TTS Simplex Phase1: EOS token at step 49 +21:39:37.134 TTS Simplex: chunk 结束,tts_token_buffer 剩余 23 tokens (保留等下一个 chunk) +21:39:37.134 TTS Simplex: generated 48 audio tokens for chunk 0 +21:39:37.134 TTS Simplex: chunk 0 first tokens: [1490 4299 4299 4299 6081 ], last tokens: [5105 6077 5348 4628 1947 ] +21:39:37.134 TTS Simplex: updated tts_n_past_accumulated=59, total_generated_tokens=48 +21:39:37.626 LLM->TTS: text='房间、学习新东西、锻炼身体,或者', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[102327 5373 100134 16628 100413 5373 104904 101099 3837 100631] +21:39:37.626 TTS<-LLM: chunk_idx=1, text='房间、学习新东西、锻炼身体,或者', n_tokens=10, hidden_size=40960, token_ids=[102327 5373 100134 16628 100413 5373 104904 101099 3837 100631] +21:39:37.626 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +21:39:37.626 TTS: before empty check - response.empty=0, response='房间、学习新东西、锻炼身体,或者', llm_finish=0 +21:39:37.626 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +21:39:37.626 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +21:39:37.627 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +21:39:37.640 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_1/merged_embeddings.txt +21:39:37.641 TTS Simplex: generating audio tokens for chunk 1 (n_tokens=10, tts_n_embd=768) +21:39:37.641 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=1, new_size=11) +21:39:37.641 TTS Simplex: chunk 1 - keeping KV cache, n_past_tts=59 +21:39:37.662 TTS Simplex: prefill completed, n_past_tts=70 +21:39:37.662 TTS Simplex: sampler created +21:39:37.675 TTS Simplex Phase1: token 1/500: rel_id=3645 +21:39:37.688 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 2, buffer=25) +21:39:37.688 TTS Simplex Phase1: token 2/500: rel_id=5835 +21:39:37.703 TTS Simplex Phase1: token 3/500: rel_id=5838 +21:39:37.720 TTS Simplex Phase1: token 4/500: rel_id=1545 +21:39:37.735 TTS Simplex Phase1: token 5/500: rel_id=2112 +21:39:38.018 TTS Simplex Phase1: token 25/500: rel_id=4200 +21:39:38.047 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 27, buffer=25) +21:39:38.400 TTS Simplex Phase1: token 50/500: rel_id=4677 +21:39:38.427 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 52, buffer=25) +21:39:38.767 TTS Simplex Phase1: token 75/500: rel_id=2956 +21:39:38.787 TTS Simplex Phase1: EOS token at step 77 +21:39:38.787 TTS Simplex: chunk 结束,tts_token_buffer 剩余 24 tokens (保留等下一个 chunk) +21:39:38.787 TTS Simplex: generated 76 audio tokens for chunk 1 +21:39:38.787 TTS Simplex: chunk 1 first tokens: [3645 5835 5838 1545 2112 ], last tokens: [747 2474 350 2956 5319 ] +21:39:38.787 TTS Simplex: updated tts_n_past_accumulated=146, total_generated_tokens=124 +21:39:38.972 LLM->TTS: text='陪家人朋友聊聊天,感觉特别充实呢', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[100522 104271 99614 100281 105292 3837 100681 100654 108300 101036] +21:39:38.973 TTS<-LLM: chunk_idx=2, text='陪家人朋友聊聊天,感觉特别充实呢', n_tokens=10, hidden_size=40960, token_ids=[100522 104271 99614 100281 105292 3837 100681 100654 108300 101036] +21:39:38.973 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +21:39:38.973 TTS: before empty check - response.empty=0, response='陪家人朋友聊聊天,感觉特别充实呢', llm_finish=0 +21:39:38.973 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +21:39:38.973 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +21:39:38.973 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +21:39:38.990 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_2/merged_embeddings.txt +21:39:38.990 TTS Simplex: generating audio tokens for chunk 2 (n_tokens=10, tts_n_embd=768) +21:39:38.990 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=2, new_size=11) +21:39:38.990 TTS Simplex: chunk 2 - keeping KV cache, n_past_tts=146 +21:39:39.014 TTS Simplex: prefill completed, n_past_tts=157 +21:39:39.014 TTS Simplex: sampler created +21:39:39.033 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 1, buffer=25) +21:39:39.034 TTS Simplex Phase1: token 1/500: rel_id=147 +21:39:39.055 TTS Simplex Phase1: token 2/500: rel_id=4486 +21:39:39.077 TTS Simplex Phase1: token 3/500: rel_id=5205 +21:39:39.091 TTS Simplex Phase1: token 4/500: rel_id=6261 +21:39:39.108 TTS Simplex Phase1: token 5/500: rel_id=2217 +21:39:39.282 LLM: detected end token, set llm_generation_done=true +21:39:39.282 LLM->TTS: text='。', n_tokens=1, hidden_size=4096, n_embd=4096, token_ids=[1773] +Waiting for audio generation to complete... +21:39:39.282 📍 Decode 结束: n_past=203, 剩余空间=1845, 无需滑窗 +21:39:39.282 📍 轮次 1 结束,记录边界于 n_past=203 +21:39:39.440 TTS Simplex Phase1: token 25/500: rel_id=278 +21:39:39.456 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 26, buffer=25) +21:39:39.675 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=208 +21:39:39.825 TTS Simplex Phase1: token 50/500: rel_id=4564 +21:39:39.840 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 51, buffer=25) +21:39:40.084 TTS Simplex Phase1: EOS token at step 72 +21:39:40.084 TTS Simplex: chunk 结束,tts_token_buffer 剩余 20 tokens (保留等下一个 chunk) +21:39:40.084 TTS Simplex: generated 71 audio tokens for chunk 2 +21:39:40.084 TTS Simplex: chunk 2 first tokens: [147 4486 5205 6261 2217 ], last tokens: [734 1806 5568 1943 140 ] +21:39:40.084 TTS Simplex: updated tts_n_past_accumulated=228, total_generated_tokens=195 +21:39:40.084 TTS<-LLM: chunk_idx=3, text='。', n_tokens=1, hidden_size=4096, token_ids=[1773] +21:39:40.084 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=1 +21:39:40.084 TTS: before empty check - response.empty=0, response='。', llm_finish=1 +[timing] call=0 tokens=28 final=0 token2mel=3206.482ms vocoder=368.622ms total=3575.116ms audio=20160 +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_2.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_3.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_4.wav does not exist or is empty +TTS: no valid WAV files to merge +[timing] call=1 tokens=28 final=0 token2mel=1726.083ms vocoder=316.361ms total=2042.460ms audio=24000 +[timing] call=2 tokens=28 final=0 token2mel=1677.117ms vocoder=315.853ms total=1992.984ms audio=24000 +[timing] call=3 tokens=28 final=0 token2mel=1678.513ms vocoder=310.617ms total=1989.141ms audio=24000 +[timing] call=4 tokens=28 final=0 token2mel=1688.458ms vocoder=306.011ms total=1994.479ms audio=24000 +[timing] call=5 tokens=28 final=0 token2mel=1684.994ms vocoder=313.801ms total=1998.805ms audio=24000 +[timing] call=6 tokens=28 final=0 token2mel=1695.620ms vocoder=323.250ms total=2018.882ms audio=24000 +[timing] call=7 tokens=28 final=0 token2mel=1678.254ms vocoder=323.110ms total=2001.377ms audio=24000 +[timing] call=8 tokens=28 final=0 token2mel=1699.355ms vocoder=314.693ms total=2014.060ms audio=24000 +[timing] call=9 tokens=6 final=1 token2mel=1666.595ms vocoder=127.808ms total=1794.419ms audio=9600 +Audio generation completed. +21:39:40.084 TTS: DEBUG before has_llm_data - token_ids.size=1, hidden_states.size=4096, n_embd=4096 +21:39:40.084 TTS: has_llm_data=1, token_ids=1, hidden_states=4096, n_embd=4096, llm_finish=1 +21:39:40.084 TTS: n_tokens_orig=1, n_tokens_filtered=1 (filtered 0 special tokens) +21:39:40.088 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_3/merged_embeddings.txt +21:39:40.088 TTS Simplex: generating audio tokens for chunk 3 (n_tokens=1, tts_n_embd=768) +21:39:40.088 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=3, new_size=2) +21:39:40.088 TTS Simplex: chunk 3 - keeping KV cache, n_past_tts=228 +21:39:40.099 TTS Simplex: prefill completed, n_past_tts=230 +21:39:40.099 TTS Simplex: sampler created +21:39:40.112 TTS Simplex Phase1: token 1/500: rel_id=147 +21:39:40.126 TTS Simplex Phase1: token 2/500: rel_id=27 +21:39:40.140 TTS Simplex Phase1: token 3/500: rel_id=2997 +21:39:40.155 TTS Simplex Phase1: token 4/500: rel_id=4716 +21:39:40.169 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 5, buffer=25) +21:39:40.169 TTS Simplex Phase1: token 5/500: rel_id=4842 +21:39:40.257 TTS Simplex Phase1: EOS token at step 12 +21:39:40.257 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed +21:39:40.257 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=241 +21:39:40.268 TTS Simplex Phase2: text_eos_embed injected, n_past=242 +21:39:40.277 TTS Simplex Phase2: audio_bos injected, n_past=243, starting final generation +21:39:40.380 🎉 首响时间 (First Audio Response): 5396ms +21:39:40.380 T2W线程: wav_0.wav | 0.84s audio | 3575.2ms inference | RTF=4.26 | t=5396ms +21:39:40.510 TTS Simplex Phase2: yield 25 tokens 到 T2W +21:39:40.556 TTS Simplex Phase2: EOS at step 23 (final end) +21:39:40.556 TTS Simplex: chunk 结束,tts_token_buffer 剩余 3 tokens (保留等下一个 chunk) +21:39:40.556 TTS Simplex: is_final_text_chunk=true, flush 剩余 3 tokens 从 tts_token_buffer +21:39:40.556 TTS Simplex: generated 33 audio tokens for chunk 3 +21:39:40.556 TTS Simplex: chunk 3 first tokens: [147 27 2997 4716 4842 ], last tokens: [4299 4218 4299 4299 6082 ] +21:39:40.556 TTS Simplex: updated tts_n_past_accumulated=266, total_generated_tokens=228 +21:39:40.556 TTS: finished processing all chunks +21:39:40.556 TTS: 单工模式轮次结束,下一轮 round_idx=1 +21:39:40.557 TTS: sent is_final=true to T2W queue (turn end) +21:39:42.423 T2W线程: wav_1.wav | 1.00s audio | 2042.5ms inference | RTF=2.04 | t=7438ms +21:39:44.417 T2W线程: wav_2.wav | 1.00s audio | 1993.1ms inference | RTF=1.99 | t=9432ms +21:39:46.406 T2W线程: wav_3.wav | 1.00s audio | 1989.2ms inference | RTF=1.99 | t=11421ms +21:39:48.401 T2W线程: wav_4.wav | 1.00s audio | 1994.6ms inference | RTF=1.99 | t=13416ms +21:39:50.400 T2W线程: wav_5.wav | 1.00s audio | 1998.9ms inference | RTF=2.00 | t=15415ms +21:39:52.419 T2W线程: wav_6.wav | 1.00s audio | 2019.0ms inference | RTF=2.02 | t=17434ms +21:39:54.421 T2W线程: wav_7.wav | 1.00s audio | 2001.5ms inference | RTF=2.00 | t=19436ms +21:39:56.435 T2W线程: wav_8.wav | 1.00s audio | 2014.1ms inference | RTF=2.01 | t=21451ms +21:39:58.230 T2W线程: wav_9.wav | 0.40s audio | 1794.5ms inference | RTF=4.49 | t=23245ms +21:39:58.230 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=9) +21:39:58.230 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav +21:39:58.312 omni_stop_threads: stop signals sent +21:39:58.312 T2W(C++) 线程: 停止 +llama_perf_context_print: load time = 17210.64 ms +llama_perf_context_print: prompt eval time = 9009.99 ms / 171 tokens ( 52.69 ms per token, 18.98 tokens per second) +llama_perf_context_print: eval time = 3867.69 ms / 32 runs ( 120.87 ms per token, 8.27 tokens per second) +llama_perf_context_print: total time = 40120.64 ms / 203 tokens +llama_perf_context_print: graphs reused = 33 +Token2Wav (C++): session released +tts thread end +t2w thread end + Command being timed: "./build-cpu/bin/llama-omni-cli -m /home/zhout/project/edge_infer/models/MiniCPM-o-4_5-gguf/MiniCPM-o-4_5-Q4_K_M.gguf -ngl 0 -c 2048 --omni --t2w-device cpu --test /home/zhout/project/edge_infer/scratch/minicpm_omni_case/fixture_ 2" + User time (seconds): 109.54 + System time (seconds): 8.79 + Percent of CPU this job got: 290% + Elapsed (wall clock) time (h:mm:ss or m:ss): 0:40.70 + Average shared text size (kbytes): 0 + Average unshared data size (kbytes): 0 + Average stack size (kbytes): 0 + Average total size (kbytes): 0 + Maximum resident set size (kbytes): 13369604 + Average resident set size (kbytes): 0 + Major (requiring I/O) page faults: 0 + Minor (reclaiming a frame) page faults: 2376316 + Voluntary context switches: 1129 + Involuntary context switches: 151 + Swaps: 0 + File system inputs: 1217296 + File system outputs: 6528 + Socket messages sent: 0 + Socket messages received: 0 + Signals delivered: 0 + Page size (bytes): 4096 + Exit status: 0 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/minicpm_omni_cpu_full_merged.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/minicpm_omni_cpu_full_merged.wav new file mode 100644 index 000000000..e7d4c0282 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/minicpm_omni_cpu_full_merged.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/minicpm_omni_cpu_full_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/minicpm_omni_cpu_full_report.json new file mode 100644 index 000000000..2e8717bc9 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/minicpm_omni_cpu_full_report.json @@ -0,0 +1,113 @@ +{ + "scope": "standalone MiniCPM-o 4.5 GGUF audio+image input to text+speech on WSL CPU", + "status": "scoped_complete_path_pass", + "quality": "synthetic red-square/tone response not established as semantically correct", + "model_revision": "db25077c33951fe163b42986fba0132e279872a2", + "artifacts": { + "MiniCPM-o-4_5-Q4_K_M.gguf": { + "bytes": 5026714400, + "sha256": "1237a97ee081b8abebc47aa7dad565701e8f5f904cdc92f6723ac4281bbc0932" + }, + "audio/MiniCPM-o-4_5-audio-F16.gguf": { + "bytes": 660167904, + "sha256": "d5b188ac7feaf98e17175c3f9bd14bf269301bfd187439fdaa3e3a494fc32ef7" + }, + "vision/MiniCPM-o-4_5-vision-F16.gguf": { + "bytes": 1095113184, + "sha256": "1453678cc4e4fe18de241952962e234f265cb8dda780773526103ab8ba82f421" + }, + "tts/MiniCPM-o-4_5-tts-F16.gguf": { + "bytes": 1157244416, + "sha256": "c7be3748a863dd6966ae7eed42600b7f41ca67affb03729ff245247f0e5ea088" + }, + "tts/MiniCPM-o-4_5-projector-F16.gguf": { + "bytes": 14948640, + "sha256": "4b1b5b377358a5e594a304ff6ea5d52df606a9ba7d886c4299d232f0c67dd1fd" + }, + "token2wav-gguf/encoder.gguf": { + "bytes": 151339008, + "sha256": "7f8d265da594eaf5e1de2db8f5f1867dbcb0bb75ef5878fadf2952347116f4d0" + }, + "token2wav-gguf/flow_matching.gguf": { + "bytes": 458250240, + "sha256": "eda6069f3edeb5dd3a87fbf2aedb2ddd1b46f3273926c4fcf09b24476a39cab8" + }, + "token2wav-gguf/flow_extra.gguf": { + "bytes": 13663328, + "sha256": "c67611aa7d02500fe395a7798bf0bfdfb55c74d37ba93934ca74d82b4e63f78d" + }, + "token2wav-gguf/hifigan2.gguf": { + "bytes": 83242816, + "sha256": "1b8b3bf5d8d3066aeee4324fdcdd41aefce170d0ee907645858de408d82835c2" + }, + "token2wav-gguf/prompt_cache.gguf": { + "bytes": 211613152, + "sha256": "81fe6f541ebe0b67db06a1e395df928da47991dc9637c2cf47d6c59d5b979f2c" + } + }, + "runtime_binary_sha256": "704ada01b2ac3378feca3201bcb303f17ce038cc447f7ef816f2bad67fe97111", + "input_image_sha256": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d", + "input_audio_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a", + "response_text": "现在可以开始做很多事啦,比如整理房间、学习新东西、锻炼身体,或者陪家人朋友聊聊天,感觉特别充实呢。", + "audio_chunks": [ + { + "name": "wav_0.wav", + "frames": 20160, + "sha256": "1534770fa94ce4b9d928e76bcb3122793b0176d324a0fe2909d67de9d40058ab" + }, + { + "name": "wav_1.wav", + "frames": 24000, + "sha256": "e49899651f34eae9cfd86ceb01820f246e0122127cd6f9f27f9547b72509b622" + }, + { + "name": "wav_2.wav", + "frames": 24000, + "sha256": "a840c7e90b75f863b82091f7bd35c8dc87d2fdfe4f35b08de4b9a4be7917c03a" + }, + { + "name": "wav_3.wav", + "frames": 24000, + "sha256": "5a304eeb2bfa3ae0e35ce57b370611586355a2ffa54afff07300a13a6d0881ee" + }, + { + "name": "wav_4.wav", + "frames": 24000, + "sha256": "2a65cc741567ad722d1d553c4152b2fd24de62ae7aebe90ab12b7ccf4168952f" + }, + { + "name": "wav_5.wav", + "frames": 24000, + "sha256": "2511ac60178cddf297b1be35db3e6c9becec0cd805438feadf271a316f97a61c" + }, + { + "name": "wav_6.wav", + "frames": 24000, + "sha256": "c21ae914f1178e06c3d89a923b342df59e091dc587b128cd93d102f67dbc1d50" + }, + { + "name": "wav_7.wav", + "frames": 24000, + "sha256": "0787df952fd371586f098a2ca6e987bbe90b1dfcd3f9342ffe8b70b737f4cd31" + }, + { + "name": "wav_8.wav", + "frames": 24000, + "sha256": "08cccd338df55f8ae457d790f8199055fe600c38984be956ec7152432630071b" + }, + { + "name": "wav_9.wav", + "frames": 9600, + "sha256": "4a4daba84c2bd339fba945bb1175a91e71ab2c6aae2c717b13989bf4ab93a461" + } + ], + "audio_frames": 221760, + "audio_duration_s": 9.24, + "audio_rms_pcm16": 2452.440876561615, + "pcm_sha256": "372c4c7b453849eb1843b0477ce74d5db04a46cacc663ef01d02698f34a1a158", + "merged_wav_sha256": "7b8073169b1561905e539bfa0807cbfad7b59636d603c58c716cec2e76c33154", + "peak_rss_kib_from_time": 13369604, + "wall_clock_from_time": "0:40.70", + "sampled_process_profile": null, + "upstream_merge_name_mismatch": true +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/llm_debug/chunk_0/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/llm_debug/chunk_0/llm_text.txt new file mode 100644 index 000000000..f6c1f6c5b --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/llm_debug/chunk_0/llm_text.txt @@ -0,0 +1 @@ +现在可以开始做很多事啦,比如整理 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/llm_debug/chunk_1/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/llm_debug/chunk_1/llm_text.txt new file mode 100644 index 000000000..155623205 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/llm_debug/chunk_1/llm_text.txt @@ -0,0 +1 @@ +房间、学习新东西、锻炼身体,或者 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/llm_debug/chunk_2/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/llm_debug/chunk_2/llm_text.txt new file mode 100644 index 000000000..4ba0306e8 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/llm_debug/chunk_2/llm_text.txt @@ -0,0 +1 @@ +陪家人朋友聊聊天,感觉特别充实呢 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/llm_debug/chunk_3/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/llm_debug/chunk_3/llm_text.txt new file mode 100644 index 000000000..48a26a6b9 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/llm_debug/chunk_3/llm_text.txt @@ -0,0 +1 @@ +。 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/generation_done.flag b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/generation_done.flag new file mode 100644 index 000000000..ec635144f --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/generation_done.flag @@ -0,0 +1 @@ +9 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_0.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_0.wav new file mode 100644 index 000000000..55f02265f Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_0.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_1.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_1.wav new file mode 100644 index 000000000..6ffcf57ec Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_1.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_2.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_2.wav new file mode 100644 index 000000000..53b4c38fa Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_2.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_3.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_3.wav new file mode 100644 index 000000000..982e125a3 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_3.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_4.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_4.wav new file mode 100644 index 000000000..2cd87a365 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_4.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_5.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_5.wav new file mode 100644 index 000000000..021dcf9d5 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_5.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_6.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_6.wav new file mode 100644 index 000000000..fcad2e99e Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_6.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_7.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_7.wav new file mode 100644 index 000000000..27cbe63fb Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_7.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_8.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_8.wav new file mode 100644 index 000000000..2011aea2b Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_8.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_9.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_9.wav new file mode 100644 index 000000000..ccf93c7d2 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_9.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_timing.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_timing.txt new file mode 100644 index 000000000..478e4b1af --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/output/round_000/tts_wav/wav_timing.txt @@ -0,0 +1,3 @@ +# WAV file generation timing log +# Format: chunk_index, elapsed_time_ms (since stream_decode start), file_size_bytes, request_duration_ms +# Time 0 is when stream_decode() function starts diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/response_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/response_text.txt new file mode 100644 index 000000000..eeffc73c2 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/response_text.txt @@ -0,0 +1 @@ +现在可以开始做很多事啦,比如整理房间、学习新东西、锻炼身体,或者陪家人朋友聊聊天,感觉特别充实呢。 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/speech_asr_proxy.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/speech_asr_proxy.json new file mode 100644 index 000000000..d33574760 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/speech_asr_proxy.json @@ -0,0 +1,18 @@ +{ + "scope": "Whisper Mandarin ASR proxy for generated speech; no input-task or perceptual-quality claim", + "asr_model": "openai/whisper-tiny", + "asr_revision": "169d4a4341b33bc18d8881c4b69c2e104e1cc0af", + "asr_weights_sha256": "7ebd0e69e78190ffe1438491fa05cc1f5c1aa3a4c4db3bc1723adbb551ea2395", + "transformers": "4.57.3", + "torch": "2.4.1+cpu", + "wav_sha256": "7b8073169b1561905e539bfa0807cbfad7b59636d603c58c716cec2e76c33154", + "wav_duration_s": 9.24, + "reference_text": "现在可以开始做很多事啦,比如整理房间、学习新东西、锻炼身体,或者陪家人朋友聊聊天,感觉特别充实呢。", + "transcript": "現在可以開始做很多事啦比如整理房間,學習新東西,斷領身體或者陪家人朋友聊天感覺特別充實啦", + "asr_segments_25_s": 1, + "character_error_rate_raw": 0.32558139534883723, + "character_error_rate_t2s_normalized": 0.09302325581395349, + "normalization": "OpenCC 0.1.7 t2s; punctuation ignored", + "load_s": 0.6843268999364227, + "inference_s": 1.35040409991052 +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/speech_asr_proxy.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/speech_asr_proxy.log new file mode 100644 index 000000000..dcd1d76cc --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/speech_asr_proxy.log @@ -0,0 +1,18 @@ +{ + "scope": "Whisper Mandarin ASR proxy for generated speech; no input-task or perceptual-quality claim", + "asr_model": "openai/whisper-tiny", + "asr_revision": "169d4a4341b33bc18d8881c4b69c2e104e1cc0af", + "asr_weights_sha256": "7ebd0e69e78190ffe1438491fa05cc1f5c1aa3a4c4db3bc1723adbb551ea2395", + "transformers": "4.57.3", + "torch": "2.4.1+cpu", + "wav_sha256": "7b8073169b1561905e539bfa0807cbfad7b59636d603c58c716cec2e76c33154", + "wav_duration_s": 9.24, + "reference_text": "���ڿ��Կ�ʼ���ܶ������������������䡢ѧϰ�¶������������壬������������������죬�о��ر��ʵ�ء�", + "transcript": "�F�ڿ����_ʼ���ܶ����������������g,�W���–|��,���I���w�������������������X�؄e�䌍��", + "asr_segments_25_s": 1, + "character_error_rate_raw": 0.32558139534883723, + "character_error_rate_t2s_normalized": 0.09302325581395349, + "normalization": "OpenCC 0.1.7 t2s; punctuation ignored", + "load_s": 0.6843268999364227, + "inference_s": 1.35040409991052 +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/README.md b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/README.md new file mode 100644 index 000000000..f1e2caa70 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/README.md @@ -0,0 +1,24 @@ +# Native Windows CPU MiniCPM-o 4.5 GGUF scoped complete path + +On Windows 11 build 26200, the Ryzen AI 9 HX 370 CPU ran one **standalone** combined synthetic JPEG+16 kHz WAV input through MiniCPM-o language/vision/audio/TTS/Token2Wav to nonempty text and complete speech. This is a scoped functional path (P for this fixture), not an Omni StageRuntime/StagePool integration, an AMD Radeon/NPU result, or a semantic-quality qualification. Native Windows vLLM CPU attention operators remain unavailable in the installed wheel; this C++ backend is a separate route. + +The complete ten-file Q4_K_M/F16 set is [openbmb/MiniCPM-o-4_5-gguf](https://huggingface.co/openbmb/MiniCPM-o-4_5-gguf/tree/db25077c33951fe163b42986fba0132e279872a2) revision `db25077c33951fe163b42986fba0132e279872a2`. The C++ source is [tc-mb/llama.cpp-omni](https://github.com/tc-mb/llama.cpp-omni/tree/5202b7b2f4d11f50b9f996161e7a2f8b8571b890) at `5202b7b2f4d11f50b9f996161e7a2f8b8571b890`, cross-built with MinGW-w64 GCC 13-posix, x86-64-v3, CMake/Ninja Release, CUDA/Vulkan/OpenMP off and [this patch](../minicpmo_cpp_cpu/llama_cpp_omni_cpu.patch). The patch adds explicit CPU Token2Wav selection, portable Windows compatibility and a configurable bounded wait that reports failure if speech is incomplete. [The verification report](full_report.json) pins all ten Windows-copy GGUF byte counts and SHA256 hashes and the exact executable hash; the files match the [WSL-copy report](../minicpmo_cpp_cpu/minicpm_omni_cpu_full_report.json). The GGUF weights and executable remain outside Git. + +| Observation | Raw evidence | +|---|---| +| The log reports zero GPU layers, CPU vision and CPU Token2Wav/vocoder placement. Index 0 supplied the system/reference-audio prompt; index 1 actually passed a 448×448 red-square JPEG and 2 s/440 Hz tone through image and audio prefill. | [combined log](full.combined.log), [image](fixture_0001.jpg), [tone](fixture_0001.wav), [reference tone](fixture_0000.wav) | +| The decoder returned [nonempty text](response_text.txt); the audio completion marker was present. The verifier found 50 gap-free, nonzero mono 24 kHz PCM16 [WAV chunks](round_000/tts_wav/), 1,179,840 total frames/49.16 s, RMS 2,572.52 PCM16, and assembled their original PCM into a [single WAV](full_merged.wav). | [verification report](full_report.json), [raw chunks](round_000/tts_wav/), [debug text](round_000/llm_debug/) | +| One cold process took 137.34 s. At 100 ms intervals, maximum sampled RSS/private bytes were 13.10/13.31 GB; these are observed maxima, not proven loading peaks. The 49.16 s speech took longer than real time. This is one observation, with no warmup distribution. | [process profile](full.profile.json), [raw timing/stderr](full.stderr.log) | +| Pinned CPU `openai/whisper-tiny` recognized the generated Mandarin speech with 13.59% CJK/alphanumeric character error against the model's **own** text after OpenCC traditional-to-simplified normalization (25.24% before normalization), across two 25 s ASR windows. This is only an intelligibility proxy. | [ASR report](speech_asr_proxy.json), [ASR log](speech_asr_proxy.log), [probe](../../../../experiments/probe_tts_asr_cjk.py) | + +The response was a generic story about visiting the Arctic rather than a description of the square or tone. The CLI fixture did not supply an explicit describe-the-input instruction, so this observation cannot establish grounded task quality. The runtime's optional merger still looked for `tts_output_chunk_N.wav` while the vocoder wrote `wav_N.wav`, and it attempted merging before all audio was ready. [The verifier](../../../../experiments/verify_minicpm_cpp_output.py) assembled the original PCM only after checking the completion flag and all chunks; this does not provide live playable streaming. The [first native attempt](../minicpmo_cpp_windows_cpu_attempt1/README.md) exited 0 with partial audio because of a 120 s wait; it is retained as a failed run. Omni admission/state/cancellation, real image/audio quality, repeat latency, loading peak and sustained power/thermal behavior remain open. + +Reproduce from the pinned C++ checkout after applying the patch and obtaining the pinned GGUF set. Cross-build using `-DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_PROCESSOR=x86_64`, MinGW-w64 `gcc-posix/g++-posix`, `-DCMAKE_C_FLAGS=-march=x86-64-v3 -DCMAKE_CXX_FLAGS=-march=x86-64-v3`, `-DGGML_CUDA=OFF -DGGML_VULKAN=OFF -DGGML_OPENMP=OFF -DLLAMA_CURL=OFF -DLLAMA_BUILD_TESTS=OFF -DLLAMA_BUILD_EXAMPLES=ON`, then build `llama-omni-cli`. The native run used: + +```powershell +llama-omni-cli.exe -m C:\path\to\MiniCPM-o-4_5-Q4_K_M.gguf ` + -ngl 0 -c 2048 --omni --t2w-device cpu --t2w-wait-seconds 900 ` + --ref-audio C:\path\to\default_ref_audio.wav --test C:\path\to\fixture_ 2 +``` + +The fixture requires `fixture_0000.wav` for the reference/system prompt and `fixture_0001.wav` plus `fixture_0001.jpg` for the user index. The result is a single cold run; no p50/p95 is implied. diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/fixture_0000.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/fixture_0000.wav new file mode 100644 index 000000000..76b27ff0b Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/fixture_0000.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/fixture_0001.jpg b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/fixture_0001.jpg new file mode 100644 index 000000000..63bf0ffd6 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/fixture_0001.jpg differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/fixture_0001.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/fixture_0001.wav new file mode 100644 index 000000000..76b27ff0b Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/fixture_0001.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full.combined.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full.combined.log new file mode 100644 index 000000000..0be923060 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full.combined.log @@ -0,0 +1,1055 @@ +=== Model Paths === + Base dir: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf + LLM: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK] + Vision: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK] + Audio: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK] + TTS: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK] + Projector: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK] +=================== +=== Initializing Omni Context === + Media type: 2 (omni: audio+vision) + TTS enabled: yes + Context size: 2048 + GPU layers: 0 + Token2Wav device: cpu + Vision backend: metal + TTS bin dir: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/tts + Ref audio: C:\Users\zhout\w2\minicpmo_cpp_cpu_v3\default_ref_audio.wav +22:06:34.706 === omni_init start +22:06:34.706 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output +22:06:34.706 === omni_init: loading new LLM model +22:06:36.666 === omni_init: loading TTS model +22:06:36.666 TTS model: loading with n_gpu_layers=0 +22:06:36.921 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05 +22:06:36.921 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)... +22:06:37.318 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768] +22:06:37.323 TTS: head_code loaded, verifying first few values: +22:06:37.323 head_code_weight[0] = 0.01361084 (expect ~0.01385498) +22:06:37.323 head_code_weight[1] = -0.01660156 (expect ~-0.01647949) +22:06:37.323 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391) +22:06:37.394 TTS: weights loaded successfully +22:06:37.394 Projector: loading from C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf +22:06:37.400 Projector: loaded successfully +22:06:37.400 === omni_init: loading APM model +22:06:37.566 APM: init from C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf +22:06:37.887 Token2Wav: found models in C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/token2wav-gguf +22:06:37.887 Token2Wav: all model files found, initializing session... +22:06:37.887 Token2Wav: non-CUDA backend, vocoder using CPU for better performance +22:06:37.887 Token2Wav: using prompt_cache from C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf +22:06:38.287 Token2Wav: initialized successfully +22:06:38.287 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav +22:06:38.287 Token2Wav: 使用 C++ 实现 +22:06:38.287 === omni_init success: ctx_llama = 000002531cb7f960 +=== Running test case === + Audio prefix: C:\Users\zhout\w2\minicpmo_cpp_cpu_v3\fixture_ + Count: 2 +22:06:38.287 stream_prefill: n_past = 0 + voice_clone_prompt = <|im_start|>system +模仿音频样本的音色并生成新的内容。 +<|audio_start|> + assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|> +<|im_start|>user + +22:06:38.287 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_cpp_cpu_v3\fixture_0000.wav +22:06:39.442 system prompt ref_audio embedding: n_pos=20 +22:06:42.334 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除 +22:06:42.334 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill +22:06:42.334 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding) +22:06:42.334 n_past = 72 +22:06:42.334 + +c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048 + +prefill 0 (audio) : 4.04691 s +22:06:49.516 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_cpp_cpu_v3\fixture_0001.wav +22:06:49.712 stream_prefill(index=1): user audio embedding: n_pos=20 +22:06:50.867 + +c++ finish stream_prefill(index=1). n_past=161, n_keep=72, n_ctx=2048 + +prefill 1 (audio+vision) : 8.53188 s +22:06:50.867 📍 stream_decode 开始: n_past=161, n_keep=72, n_ctx=2048, duplex_mode=0 +22:06:50.867 stream_decode: create tts thread (simplex mode) +22:06:50.867 stream_decode: create t2w thread +22:06:50.867 wait prefill done +22:06:50.867 📍 [单工TTS] 添加 assistant prompt: "<|im_end|> +<|im_start|>assistant + + + + +<|tts_bos|>", n_past=161 +22:06:50.867 T2W thread (C++) started +22:06:50.870 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000 +22:06:50.870 TTS thread started +22:06:51.397 📍 [单工TTS] assistant prompt 完成, n_past=171 +22:06:51.397 LLM decode: max_tgt_len = 2048, n_predict = -1, n_ctx = 2048 +22:06:52.281 LLM->TTS: text='哎呀,这个问题挺有意思的!要是让我去', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[110030 104256 3837 105073 101174 113062 6313 104806 104029 85336] +22:06:52.281 TTS<-LLM: chunk_idx=0, text='哎呀,这个问题挺有意思的!要是让我去', n_tokens=10, hidden_size=40960, token_ids=[110030 104256 3837 105073 101174 113062 6313 104806 104029 85336] +22:06:52.281 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:06:52.281 TTS: before empty check - response.empty=0, response='哎呀,这个问题挺有意思的!要是让æˆ', llm_finish=0 +22:06:52.281 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:06:52.281 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:06:52.282 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:06:52.323 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt +22:06:52.324 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=10, tts_n_embd=768) +22:06:52.324 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=11) +22:06:52.324 TTS Simplex: first chunk - cleared KV cache +22:06:52.324 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer +22:06:52.430 TTS Simplex: prefill completed, n_past_tts=11 +22:06:52.430 TTS Simplex: sampler created +22:06:52.430 TTS simplex: is_audio_bos=true (first audio token) +22:06:52.472 TTS Simplex Phase1: token 1/500: rel_id=1490 +22:06:52.486 TTS Simplex Phase1: token 2/500: rel_id=4299 +22:06:52.499 TTS Simplex Phase1: token 3/500: rel_id=6486 +22:06:52.512 TTS Simplex Phase1: token 4/500: rel_id=4299 +22:06:52.527 TTS Simplex Phase1: token 5/500: rel_id=4299 +22:06:52.815 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25) +22:06:52.815 TTS Simplex Phase1: token 25/500: rel_id=2139 +22:06:52.815 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录 +22:06:52.815 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav +22:06:53.192 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 50, buffer=25) +22:06:53.192 TTS Simplex Phase1: token 50/500: rel_id=4607 +22:06:53.350 LLM->TTS: text='一个完全没去过的地方,那我肯定得', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[46944 100372 70927 112955 103958 3837 99212 35946 100736 49828] +22:06:53.407 TTS Simplex Phase1: EOS token at step 65 +22:06:53.407 TTS Simplex: chunk 结束,tts_token_buffer 剩余 14 tokens (保留等下一个 chunk) +22:06:53.407 TTS Simplex: generated 64 audio tokens for chunk 0 +22:06:53.407 TTS Simplex: chunk 0 first tokens: [1490 4299 6486 4299 4299 ], last tokens: [1945 4299 6486 6486 4299 ] +22:06:53.407 TTS Simplex: updated tts_n_past_accumulated=75, total_generated_tokens=64 +22:06:53.419 TTS<-LLM: chunk_idx=1, text='一个完全没去过的地方,那我肯定得', n_tokens=10, hidden_size=40960, token_ids=[46944 100372 70927 112955 103958 3837 99212 35946 100736 49828] +22:06:53.419 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:06:53.419 TTS: before empty check - response.empty=0, response='一个完全没去过的地方,那我肯定得', llm_finish=0 +22:06:53.419 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:06:53.419 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:06:53.419 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:06:53.460 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_1/merged_embeddings.txt +22:06:53.460 TTS Simplex: generating audio tokens for chunk 1 (n_tokens=10, tts_n_embd=768) +22:06:53.460 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=1, new_size=11) +22:06:53.460 TTS Simplex: chunk 1 - keeping KV cache, n_past_tts=75 +22:06:53.487 TTS Simplex: prefill completed, n_past_tts=86 +22:06:53.487 TTS Simplex: sampler created +22:06:53.506 TTS Simplex Phase1: token 1/500: rel_id=6486 +22:06:53.523 TTS Simplex Phase1: token 2/500: rel_id=6405 +22:06:53.537 TTS Simplex Phase1: token 3/500: rel_id=5838 +22:06:53.553 TTS Simplex Phase1: token 4/500: rel_id=5919 +22:06:53.569 TTS Simplex Phase1: token 5/500: rel_id=4218 +22:06:53.660 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 11, buffer=25) +22:06:53.883 TTS Simplex Phase1: token 25/500: rel_id=879 +22:06:54.057 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 36, buffer=25) +22:06:54.278 TTS Simplex Phase1: token 50/500: rel_id=5649 +22:06:54.447 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 61, buffer=25) +22:06:54.487 LLM->TTS: text='去北极啊!你想啊,那地方冰', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[85336 113081 103924 6313 107409 103924 3837 99212 100371 100038] +22:06:54.664 TTS Simplex Phase1: token 75/500: rel_id=5838 +22:06:54.768 TTS Simplex Phase1: EOS token at step 82 +22:06:54.768 TTS Simplex: chunk 结束,tts_token_buffer 剩余 20 tokens (保留等下一个 chunk) +22:06:54.768 TTS Simplex: generated 81 audio tokens for chunk 1 +22:06:54.768 TTS Simplex: chunk 1 first tokens: [6486 6405 5838 5919 4218 ], last tokens: [1545 1959 3750 19 5837 ] +22:06:54.768 TTS Simplex: updated tts_n_past_accumulated=167, total_generated_tokens=145 +22:06:54.770 TTS<-LLM: chunk_idx=2, text='去北极啊!你想啊,那地方冰', n_tokens=10, hidden_size=40960, token_ids=[85336 113081 103924 6313 107409 103924 3837 99212 100371 100038] +22:06:54.770 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:06:54.770 TTS: before empty check - response.empty=0, response='去北极啊!你想啊,那地方冰', llm_finish=0 +22:06:54.770 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:06:54.770 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:06:54.770 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:06:54.819 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_2/merged_embeddings.txt +22:06:54.819 TTS Simplex: generating audio tokens for chunk 2 (n_tokens=10, tts_n_embd=768) +22:06:54.819 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=2, new_size=11) +22:06:54.819 TTS Simplex: chunk 2 - keeping KV cache, n_past_tts=167 +22:06:54.848 TTS Simplex: prefill completed, n_past_tts=178 +22:06:54.848 TTS Simplex: sampler created +22:06:54.866 TTS Simplex Phase1: token 1/500: rel_id=497 +22:06:54.881 TTS Simplex Phase1: token 2/500: rel_id=701 +22:06:54.896 TTS Simplex Phase1: token 3/500: rel_id=2870 +22:06:54.911 TTS Simplex Phase1: token 4/500: rel_id=5086 +22:06:54.927 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 5, buffer=25) +22:06:54.927 TTS Simplex Phase1: token 5/500: rel_id=975 +22:06:55.273 TTS Simplex Phase1: token 25/500: rel_id=2085 +22:06:55.369 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 30, buffer=25) +22:06:55.746 TTS Simplex Phase1: token 50/500: rel_id=5402 +22:06:55.799 LLM->TTS: text='天雪地的,白茫茫的一片,', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[35727 100167 29490 9370 3837 99243 116059 99774 34718 3837] +22:06:55.836 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 55, buffer=25) +22:06:56.075 TTS Simplex Phase1: EOS token at step 68 +22:06:56.075 TTS Simplex: chunk 结束,tts_token_buffer 剩余 12 tokens (保留等下一个 chunk) +22:06:56.075 TTS Simplex: generated 67 audio tokens for chunk 2 +22:06:56.075 TTS Simplex: chunk 2 first tokens: [497 701 2870 5086 975 ], last tokens: [3972 3648 5835 5838 1458 ] +22:06:56.075 TTS Simplex: updated tts_n_past_accumulated=245, total_generated_tokens=212 +22:06:56.079 TTS<-LLM: chunk_idx=3, text='天雪地的,白茫茫的一片,', n_tokens=10, hidden_size=40960, token_ids=[35727 100167 29490 9370 3837 99243 116059 99774 34718 3837] +22:06:56.079 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:06:56.079 TTS: before empty check - response.empty=0, response='天雪地的,白茫茫的一片,', llm_finish=0 +22:06:56.079 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:06:56.079 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:06:56.079 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:06:56.133 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_3/merged_embeddings.txt +22:06:56.133 TTS Simplex: generating audio tokens for chunk 3 (n_tokens=10, tts_n_embd=768) +22:06:56.133 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=3, new_size=11) +22:06:56.133 TTS Simplex: chunk 3 - keeping KV cache, n_past_tts=245 +22:06:56.176 TTS Simplex: prefill completed, n_past_tts=256 +22:06:56.176 TTS Simplex: sampler created +22:06:56.199 TTS Simplex Phase1: token 1/500: rel_id=4299 +22:06:56.220 TTS Simplex Phase1: token 2/500: rel_id=3909 +22:06:56.245 TTS Simplex Phase1: token 3/500: rel_id=5850 +22:06:56.266 TTS Simplex Phase1: token 4/500: rel_id=4459 +22:06:56.267 🎉 首响时间 (First Audio Response): 5400ms +22:06:56.267 T2W线程: wav_0.wav | 0.84s audio | 3450.0ms inference | RTF=4.11 | t=5400ms +22:06:56.284 TTS Simplex Phase1: token 5/500: rel_id=4409 +22:06:56.414 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 13, buffer=25) +22:06:56.610 TTS Simplex Phase1: token 25/500: rel_id=4507 +22:06:56.826 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 38, buffer=25) +22:06:57.036 TTS Simplex Phase1: token 50/500: rel_id=4570 +22:06:57.040 LLM->TTS: text='连路都没有,走路都得小心翼翼的。', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[54926 45995 104338 3837 109214 71268 49828 114890 9370 1773] +22:06:57.197 TTS Simplex Phase1: EOS token at step 60 +22:06:57.197 TTS Simplex: chunk 结束,tts_token_buffer 剩余 21 tokens (保留等下一个 chunk) +22:06:57.197 TTS Simplex: generated 59 audio tokens for chunk 3 +22:06:57.197 TTS Simplex: chunk 3 first tokens: [4299 3909 5850 4459 4409 ], last tokens: [4314 2855 3404 4871 3987 ] +22:06:57.197 TTS Simplex: updated tts_n_past_accumulated=315, total_generated_tokens=271 +22:06:57.199 TTS<-LLM: chunk_idx=4, text='连路都没有,走路都得小心翼翼的。', n_tokens=10, hidden_size=40960, token_ids=[54926 45995 104338 3837 109214 71268 49828 114890 9370 1773] +22:06:57.199 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:06:57.199 TTS: before empty check - response.empty=0, response='连路都没有,走路都得小心翼翼的。', llm_finish=0 +22:06:57.199 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:06:57.199 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:06:57.199 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:06:57.244 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_4/merged_embeddings.txt +22:06:57.244 TTS Simplex: generating audio tokens for chunk 4 (n_tokens=10, tts_n_embd=768) +22:06:57.244 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=4, new_size=11) +22:06:57.244 TTS Simplex: chunk 4 - keeping KV cache, n_past_tts=315 +22:06:57.283 TTS Simplex: prefill completed, n_past_tts=326 +22:06:57.283 TTS Simplex: sampler created +22:06:57.300 TTS Simplex Phase1: token 1/500: rel_id=2234 +22:06:57.316 TTS Simplex Phase1: token 2/500: rel_id=4769 +22:06:57.332 TTS Simplex Phase1: token 3/500: rel_id=3455 +22:06:57.347 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 4, buffer=25) +22:06:57.347 TTS Simplex Phase1: token 4/500: rel_id=1268 +22:06:57.364 TTS Simplex Phase1: token 5/500: rel_id=4778 +22:06:57.709 TTS Simplex Phase1: token 25/500: rel_id=5958 +22:06:57.774 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 29, buffer=25) +22:06:58.116 TTS Simplex Phase1: token 50/500: rel_id=2112 +22:06:58.186 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 54, buffer=25) +22:06:58.276 LLM->TTS: text='但你说这地方多刺激!穿厚厚的羽', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[77288 105665 43288 100371 42140 104313 6313 99621 118100 101433] +22:06:58.446 TTS Simplex Phase1: EOS token at step 70 +22:06:58.446 TTS Simplex: chunk 结束,tts_token_buffer 剩余 15 tokens (保留等下一个 chunk) +22:06:58.446 TTS Simplex: generated 69 audio tokens for chunk 4 +22:06:58.446 TTS Simplex: chunk 4 first tokens: [2234 4769 3455 1268 4778 ], last tokens: [2264 4841 4417 5402 2212 ] +22:06:58.446 TTS Simplex: updated tts_n_past_accumulated=395, total_generated_tokens=340 +22:06:58.458 TTS<-LLM: chunk_idx=5, text='但你说这地方多刺激!穿厚厚的羽', n_tokens=10, hidden_size=40960, token_ids=[77288 105665 43288 100371 42140 104313 6313 99621 118100 101433] +22:06:58.458 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:06:58.458 TTS: before empty check - response.empty=0, response='但你说这地方多刺激!穿厚厚的羽', llm_finish=0 +22:06:58.458 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:06:58.458 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:06:58.458 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:06:58.505 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_5/merged_embeddings.txt +22:06:58.505 TTS Simplex: generating audio tokens for chunk 5 (n_tokens=10, tts_n_embd=768) +22:06:58.505 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=5, new_size=11) +22:06:58.505 TTS Simplex: chunk 5 - keeping KV cache, n_past_tts=395 +22:06:58.551 TTS Simplex: prefill completed, n_past_tts=406 +22:06:58.551 TTS Simplex: sampler created +22:06:58.575 TTS Simplex Phase1: token 1/500: rel_id=1217 +22:06:58.597 TTS Simplex Phase1: token 2/500: rel_id=272 +22:06:58.617 TTS Simplex Phase1: token 3/500: rel_id=5170 +22:06:58.639 TTS Simplex Phase1: token 4/500: rel_id=6374 +22:06:58.658 TTS Simplex Phase1: token 5/500: rel_id=321 +22:06:58.759 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 10, buffer=25) +22:06:59.073 TTS Simplex Phase1: token 25/500: rel_id=3648 +22:06:59.291 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 35, buffer=25) +22:06:59.610 TTS Simplex Phase1: token 50/500: rel_id=2764 +22:06:59.651 T2W线程: wav_1.wav | 1.00s audio | 3382.1ms inference | RTF=3.38 | t=8783ms +22:06:59.686 LLM->TTS: text='绒服,戴上防风手套,脚底下', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[108040 43209 3837 113142 99287 99208 113739 3837 100037 109237] +22:06:59.791 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 60, buffer=25) +22:07:00.057 TTS Simplex Phase1: token 75/500: rel_id=6048 +22:07:00.060 TTS Simplex Phase1: EOS token at step 76 +22:07:00.060 TTS Simplex: chunk 结束,tts_token_buffer 剩余 15 tokens (保留等下一个 chunk) +22:07:00.060 TTS Simplex: generated 75 audio tokens for chunk 5 +22:07:00.060 TTS Simplex: chunk 5 first tokens: [1217 272 5170 6374 321 ], last tokens: [6486 4299 4299 1518 6048 ] +22:07:00.060 TTS Simplex: updated tts_n_past_accumulated=481, total_generated_tokens=415 +22:07:00.062 TTS<-LLM: chunk_idx=6, text='绒服,戴上防风手套,脚底下', n_tokens=10, hidden_size=40960, token_ids=[108040 43209 3837 113142 99287 99208 113739 3837 100037 109237] +22:07:00.062 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:00.062 TTS: before empty check - response.empty=0, response='绒服,戴上防风手套,脚底下', llm_finish=0 +22:07:00.062 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:00.062 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:00.062 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:00.101 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_6/merged_embeddings.txt +22:07:00.101 TTS Simplex: generating audio tokens for chunk 6 (n_tokens=10, tts_n_embd=768) +22:07:00.101 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=6, new_size=11) +22:07:00.101 TTS Simplex: chunk 6 - keeping KV cache, n_past_tts=481 +22:07:00.140 TTS Simplex: prefill completed, n_past_tts=492 +22:07:00.141 TTS Simplex: sampler created +22:07:00.158 TTS Simplex Phase1: token 1/500: rel_id=1377 +22:07:00.174 TTS Simplex Phase1: token 2/500: rel_id=3898 +22:07:00.190 TTS Simplex Phase1: token 3/500: rel_id=2513 +22:07:00.208 TTS Simplex Phase1: token 4/500: rel_id=4961 +22:07:00.223 TTS Simplex Phase1: token 5/500: rel_id=4869 +22:07:00.307 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 10, buffer=25) +22:07:00.570 TTS Simplex Phase1: token 25/500: rel_id=6507 +22:07:00.762 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 35, buffer=25) +22:07:00.890 LLM->TTS: text='踩着雪板或者雪鞋,一步一步往前', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[105541 99164 100167 87531 100631 100167 102097 3837 117719 114796] +22:07:01.042 TTS Simplex Phase1: token 50/500: rel_id=6453 +22:07:01.217 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 60, buffer=25) +22:07:01.295 TTS Simplex Phase1: EOS token at step 65 +22:07:01.295 TTS Simplex: chunk 结束,tts_token_buffer 剩余 4 tokens (保留等下一个 chunk) +22:07:01.295 TTS Simplex: generated 64 audio tokens for chunk 6 +22:07:01.295 TTS Simplex: chunk 6 first tokens: [1377 3898 2513 4961 4869 ], last tokens: [5832 6084 4780 5672 3494 ] +22:07:01.295 TTS Simplex: updated tts_n_past_accumulated=556, total_generated_tokens=479 +22:07:01.296 TTS<-LLM: chunk_idx=7, text='踩着雪板或者雪鞋,一步一步往前', n_tokens=10, hidden_size=40960, token_ids=[105541 99164 100167 87531 100631 100167 102097 3837 117719 114796] +22:07:01.296 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:01.296 TTS: before empty check - response.empty=0, response='踩着雪板或者雪鞋,一步一步往前', llm_finish=0 +22:07:01.296 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:01.296 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:01.296 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:01.337 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_7/merged_embeddings.txt +22:07:01.337 TTS Simplex: generating audio tokens for chunk 7 (n_tokens=10, tts_n_embd=768) +22:07:01.337 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=7, new_size=11) +22:07:01.337 TTS Simplex: chunk 7 - keeping KV cache, n_past_tts=556 +22:07:01.386 TTS Simplex: prefill completed, n_past_tts=567 +22:07:01.386 TTS Simplex: sampler created +22:07:01.407 TTS Simplex Phase1: token 1/500: rel_id=4224 +22:07:01.425 TTS Simplex Phase1: token 2/500: rel_id=4218 +22:07:01.445 TTS Simplex Phase1: token 3/500: rel_id=3888 +22:07:01.463 TTS Simplex Phase1: token 4/500: rel_id=5835 +22:07:01.482 TTS Simplex Phase1: token 5/500: rel_id=5838 +22:07:01.765 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 21, buffer=25) +22:07:01.839 TTS Simplex Phase1: token 25/500: rel_id=3658 +22:07:02.159 LLM->TTS: text='挪,呼哧呼哧喘着粗气', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[103477 3837 99592 120367 99592 120367 103425 99164 102187 99180] +22:07:02.287 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 46, buffer=25) +22:07:02.377 TTS Simplex Phase1: token 50/500: rel_id=71 +22:07:02.539 TTS Simplex Phase1: EOS token at step 58 +22:07:02.539 TTS Simplex: chunk 结束,tts_token_buffer 剩余 11 tokens (保留等下一个 chunk) +22:07:02.539 TTS Simplex: generated 57 audio tokens for chunk 7 +22:07:02.539 TTS Simplex: chunk 7 first tokens: [4224 4218 3888 5835 5838 ], last tokens: [4678 1295 314 35 4540 ] +22:07:02.539 TTS Simplex: updated tts_n_past_accumulated=624, total_generated_tokens=536 +22:07:02.542 TTS<-LLM: chunk_idx=8, text='挪,呼哧呼哧喘着粗气', n_tokens=10, hidden_size=40960, token_ids=[103477 3837 99592 120367 99592 120367 103425 99164 102187 99180] +22:07:02.542 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:02.542 TTS: before empty check - response.empty=0, response='挪,呼哧呼哧喘着粗气', llm_finish=0 +22:07:02.542 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:02.542 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:02.542 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:02.591 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_8/merged_embeddings.txt +22:07:02.591 TTS Simplex: generating audio tokens for chunk 8 (n_tokens=10, tts_n_embd=768) +22:07:02.591 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=8, new_size=11) +22:07:02.591 TTS Simplex: chunk 8 - keeping KV cache, n_past_tts=624 +22:07:02.643 TTS Simplex: prefill completed, n_past_tts=635 +22:07:02.643 TTS Simplex: sampler created +22:07:02.668 TTS Simplex Phase1: token 1/500: rel_id=3009 +22:07:02.692 TTS Simplex Phase1: token 2/500: rel_id=1707 +22:07:02.712 TTS Simplex Phase1: token 3/500: rel_id=5838 +22:07:02.737 TTS Simplex Phase1: token 4/500: rel_id=5109 +22:07:02.758 TTS Simplex Phase1: token 5/500: rel_id=2922 +22:07:02.965 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 14, buffer=25) +22:07:03.118 T2W线程: wav_2.wav | 1.00s audio | 3465.6ms inference | RTF=3.47 | t=12250ms +22:07:03.198 TTS Simplex Phase1: token 25/500: rel_id=3599 +22:07:03.466 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 39, buffer=25) +22:07:03.534 LLM->TTS: text='。抬头看天,全是星星,连北极', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[1773 108149 50930 35727 3837 108743 109014 3837 54926 113081] +22:07:03.671 TTS Simplex Phase1: token 50/500: rel_id=3579 +22:07:03.928 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 64, buffer=25) +22:07:04.076 TTS Simplex Phase1: EOS token at step 73 +22:07:04.076 TTS Simplex: chunk 结束,tts_token_buffer 剩余 8 tokens (保留等下一个 chunk) +22:07:04.076 TTS Simplex: generated 72 audio tokens for chunk 8 +22:07:04.076 TTS Simplex: chunk 8 first tokens: [3009 1707 5838 5109 2922 ], last tokens: [3144 5970 4293 3493 1541 ] +22:07:04.076 TTS Simplex: updated tts_n_past_accumulated=707, total_generated_tokens=608 +22:07:04.078 TTS<-LLM: chunk_idx=9, text='。抬头看天,全是星星,连北极', n_tokens=10, hidden_size=40960, token_ids=[1773 108149 50930 35727 3837 108743 109014 3837 54926 113081] +22:07:04.078 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:04.078 TTS: before empty check - response.empty=0, response='。抬头看天,全是星星,连北极', llm_finish=0 +22:07:04.078 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:04.078 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:04.078 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:04.125 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_9/merged_embeddings.txt +22:07:04.125 TTS Simplex: generating audio tokens for chunk 9 (n_tokens=10, tts_n_embd=768) +22:07:04.125 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=9, new_size=11) +22:07:04.125 TTS Simplex: chunk 9 - keeping KV cache, n_past_tts=707 +22:07:04.174 TTS Simplex: prefill completed, n_past_tts=718 +22:07:04.174 TTS Simplex: sampler created +22:07:04.193 TTS Simplex Phase1: token 1/500: rel_id=1645 +22:07:04.210 TTS Simplex Phase1: token 2/500: rel_id=1605 +22:07:04.229 TTS Simplex Phase1: token 3/500: rel_id=140 +22:07:04.248 TTS Simplex Phase1: token 4/500: rel_id=3468 +22:07:04.267 TTS Simplex Phase1: token 5/500: rel_id=4915 +22:07:04.501 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 17, buffer=25) +22:07:04.649 TTS Simplex Phase1: token 25/500: rel_id=4299 +22:07:04.729 LLM->TTS: text='光都能看见,那叫一个美!不过', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[99225 104297 104356 3837 99212 99882 46944 57566 6313 100632] +22:07:04.967 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 42, buffer=25) +22:07:05.113 TTS Simplex Phase1: token 50/500: rel_id=6486 +22:07:05.463 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 67, buffer=25) +22:07:05.467 TTS Simplex Phase1: EOS token at step 68 +22:07:05.467 TTS Simplex: chunk 结束,tts_token_buffer 剩余 0 tokens (保留等下一个 chunk) +22:07:05.467 TTS Simplex: generated 67 audio tokens for chunk 9 +22:07:05.467 TTS Simplex: chunk 9 first tokens: [1645 1605 140 3468 4915 ], last tokens: [4509 4615 4444 5645 5645 ] +22:07:05.467 TTS Simplex: updated tts_n_past_accumulated=785, total_generated_tokens=675 +22:07:05.468 TTS<-LLM: chunk_idx=10, text='光都能看见,那叫一个美!不过', n_tokens=10, hidden_size=40960, token_ids=[99225 104297 104356 3837 99212 99882 46944 57566 6313 100632] +22:07:05.468 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:05.468 TTS: before empty check - response.empty=0, response='光都能看见,那叫一个美!不过', llm_finish=0 +22:07:05.469 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:05.469 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:05.469 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:05.512 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_10/merged_embeddings.txt +22:07:05.512 TTS Simplex: generating audio tokens for chunk 10 (n_tokens=10, tts_n_embd=768) +22:07:05.512 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=10, new_size=11) +22:07:05.512 TTS Simplex: chunk 10 - keeping KV cache, n_past_tts=785 +22:07:05.569 TTS Simplex: prefill completed, n_past_tts=796 +22:07:05.569 TTS Simplex: sampler created +22:07:05.595 TTS Simplex Phase1: token 1/500: rel_id=322 +22:07:05.615 TTS Simplex Phase1: token 2/500: rel_id=4967 +22:07:05.640 TTS Simplex Phase1: token 3/500: rel_id=6098 +22:07:05.660 TTS Simplex Phase1: token 4/500: rel_id=5534 +22:07:05.679 TTS Simplex Phase1: token 5/500: rel_id=4444 +22:07:06.070 LLM->TTS: text='呢,也挺难的,吃饭得靠', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[101036 3837 74763 101174 99349 9370 3837 104636 49828 99904] +22:07:06.117 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25) +22:07:06.117 TTS Simplex Phase1: token 25/500: rel_id=2381 +22:07:06.488 T2W线程: wav_3.wav | 1.00s audio | 3359.0ms inference | RTF=3.36 | t=15621ms +22:07:06.673 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 50, buffer=25) +22:07:06.673 TTS Simplex Phase1: token 50/500: rel_id=751 +22:07:07.175 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 75, buffer=25) +22:07:07.175 TTS Simplex Phase1: token 75/500: rel_id=5669 +22:07:07.281 TTS Simplex Phase1: EOS token at step 81 +22:07:07.281 TTS Simplex: chunk 结束,tts_token_buffer 剩余 5 tokens (保留等下一个 chunk) +22:07:07.281 TTS Simplex: generated 80 audio tokens for chunk 10 +22:07:07.281 TTS Simplex: chunk 10 first tokens: [322 4967 6098 5534 4444 ], last tokens: [1456 183 5078 4311 4068 ] +22:07:07.281 TTS Simplex: updated tts_n_past_accumulated=876, total_generated_tokens=755 +22:07:07.282 TTS<-LLM: chunk_idx=11, text='呢,也挺难的,吃饭得靠', n_tokens=10, hidden_size=40960, token_ids=[101036 3837 74763 101174 99349 9370 3837 104636 49828 99904] +22:07:07.282 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:07.282 TTS: before empty check - response.empty=0, response='呢,也挺难的,吃饭得靠', llm_finish=0 +22:07:07.282 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:07.282 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:07.282 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:07.326 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_11/merged_embeddings.txt +22:07:07.326 TTS Simplex: generating audio tokens for chunk 11 (n_tokens=10, tts_n_embd=768) +22:07:07.326 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=11, new_size=11) +22:07:07.326 TTS Simplex: chunk 11 - keeping KV cache, n_past_tts=876 +22:07:07.369 LLM->TTS: text='口哨,因为风声太大,说话听', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[39426 109760 3837 99519 99208 70074 102791 3837 104283 49187] +22:07:07.384 TTS Simplex: prefill completed, n_past_tts=887 +22:07:07.384 TTS Simplex: sampler created +22:07:07.406 TTS Simplex Phase1: token 1/500: rel_id=2273 +22:07:07.427 TTS Simplex Phase1: token 2/500: rel_id=8 +22:07:07.447 TTS Simplex Phase1: token 3/500: rel_id=278 +22:07:07.468 TTS Simplex Phase1: token 4/500: rel_id=386 +22:07:07.489 TTS Simplex Phase1: token 5/500: rel_id=1115 +22:07:07.792 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 20, buffer=25) +22:07:07.894 TTS Simplex Phase1: token 25/500: rel_id=4862 +22:07:08.301 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 45, buffer=25) +22:07:08.404 TTS Simplex Phase1: token 50/500: rel_id=1833 +22:07:08.611 LLM->TTS: text='不清。坐那儿吃点热汤,暖', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[106122 1773 99901 112358 99405 27442 99259 102022 3837 99856] +22:07:08.684 TTS Simplex Phase1: EOS token at step 66 +22:07:08.684 TTS Simplex: chunk 结束,tts_token_buffer 剩余 20 tokens (保留等下一个 chunk) +22:07:08.684 TTS Simplex: generated 65 audio tokens for chunk 11 +22:07:08.684 TTS Simplex: chunk 11 first tokens: [2273 8 278 386 1115 ], last tokens: [2922 2112 2949 6048 5319 ] +22:07:08.684 TTS Simplex: updated tts_n_past_accumulated=952, total_generated_tokens=820 +22:07:08.694 TTS<-LLM: chunk_idx=12, text='口哨,因为风声太大,说话听', n_tokens=10, hidden_size=40960, token_ids=[39426 109760 3837 99519 99208 70074 102791 3837 104283 49187] +22:07:08.694 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:08.694 TTS: before empty check - response.empty=0, response='口哨,因为风声太大,说话听', llm_finish=0 +22:07:08.695 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:08.695 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:08.695 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:08.740 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_12/merged_embeddings.txt +22:07:08.741 TTS Simplex: generating audio tokens for chunk 12 (n_tokens=10, tts_n_embd=768) +22:07:08.741 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=12, new_size=11) +22:07:08.741 TTS Simplex: chunk 12 - keeping KV cache, n_past_tts=952 +22:07:08.805 TTS Simplex: prefill completed, n_past_tts=963 +22:07:08.805 TTS Simplex: sampler created +22:07:08.827 TTS Simplex Phase1: token 1/500: rel_id=795 +22:07:08.850 TTS Simplex Phase1: token 2/500: rel_id=3875 +22:07:08.876 TTS Simplex Phase1: token 3/500: rel_id=4275 +22:07:08.899 TTS Simplex Phase1: token 4/500: rel_id=6534 +22:07:08.920 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 5, buffer=25) +22:07:08.920 TTS Simplex Phase1: token 5/500: rel_id=5510 +22:07:09.411 TTS Simplex Phase1: token 25/500: rel_id=5294 +22:07:09.521 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 30, buffer=25) +22:07:09.941 T2W线程: wav_4.wav | 1.00s audio | 3451.6ms inference | RTF=3.45 | t=19074ms +22:07:10.007 TTS Simplex Phase1: token 50/500: rel_id=5962 +22:07:10.087 LLM->TTS: text='暖身子,再看看远处的冰山,', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[99856 108233 3837 87256 101997 103388 9370 100038 57811 3837] +22:07:10.101 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 55, buffer=25) +22:07:10.245 TTS Simplex Phase1: EOS token at step 66 +22:07:10.245 TTS Simplex: chunk 结束,tts_token_buffer 剩余 10 tokens (保留等下一个 chunk) +22:07:10.245 TTS Simplex: generated 65 audio tokens for chunk 12 +22:07:10.245 TTS Simplex: chunk 12 first tokens: [795 3875 4275 6534 5510 ], last tokens: [2249 876 549 5192 6077 ] +22:07:10.245 TTS Simplex: updated tts_n_past_accumulated=1028, total_generated_tokens=885 +22:07:10.255 TTS<-LLM: chunk_idx=13, text='不清。坐那儿吃点热汤,暖', n_tokens=10, hidden_size=40960, token_ids=[106122 1773 99901 112358 99405 27442 99259 102022 3837 99856] +22:07:10.255 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:10.255 TTS: before empty check - response.empty=0, response='不清。坐那儿吃点热汤,暖', llm_finish=0 +22:07:10.255 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:10.255 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:10.255 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:10.300 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_13/merged_embeddings.txt +22:07:10.300 TTS Simplex: generating audio tokens for chunk 13 (n_tokens=10, tts_n_embd=768) +22:07:10.300 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=13, new_size=11) +22:07:10.300 TTS Simplex: chunk 13 - keeping KV cache, n_past_tts=1028 +22:07:10.362 TTS Simplex: prefill completed, n_past_tts=1039 +22:07:10.362 TTS Simplex: sampler created +22:07:10.382 TTS Simplex Phase1: token 1/500: rel_id=3890 +22:07:10.401 TTS Simplex Phase1: token 2/500: rel_id=1703 +22:07:10.422 TTS Simplex Phase1: token 3/500: rel_id=3889 +22:07:10.439 TTS Simplex Phase1: token 4/500: rel_id=2025 +22:07:10.460 TTS Simplex Phase1: token 5/500: rel_id=3648 +22:07:10.651 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 15, buffer=25) +22:07:10.847 TTS Simplex Phase1: token 25/500: rel_id=3603 +22:07:11.138 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 40, buffer=25) +22:07:11.335 TTS Simplex Phase1: token 50/500: rel_id=2459 +22:07:11.380 LLM->TTS: text='那才叫过瘾!你说这地方荒', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[99212 99306 99882 38182 108886 6313 105665 43288 100371 101293] +22:07:11.553 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 65, buffer=25) +22:07:11.600 TTS Simplex Phase1: EOS token at step 69 +22:07:11.600 TTS Simplex: chunk 结束,tts_token_buffer 剩余 3 tokens (保留等下一个 chunk) +22:07:11.600 TTS Simplex: generated 68 audio tokens for chunk 13 +22:07:11.600 TTS Simplex: chunk 13 first tokens: [3890 1703 3889 2025 3648 ], last tokens: [881 3714 6069 4852 2216 ] +22:07:11.600 TTS Simplex: updated tts_n_past_accumulated=1107, total_generated_tokens=953 +22:07:11.601 TTS<-LLM: chunk_idx=14, text='暖身子,再看看远处的冰山,', n_tokens=10, hidden_size=40960, token_ids=[99856 108233 3837 87256 101997 103388 9370 100038 57811 3837] +22:07:11.601 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:11.601 TTS: before empty check - response.empty=0, response='暖身子,再看看远处的冰山,', llm_finish=0 +22:07:11.601 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:11.601 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:11.601 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:11.642 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_14/merged_embeddings.txt +22:07:11.642 TTS Simplex: generating audio tokens for chunk 14 (n_tokens=10, tts_n_embd=768) +22:07:11.642 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=14, new_size=11) +22:07:11.642 TTS Simplex: chunk 14 - keeping KV cache, n_past_tts=1107 +22:07:11.710 TTS Simplex: prefill completed, n_past_tts=1118 +22:07:11.710 TTS Simplex: sampler created +22:07:11.730 TTS Simplex Phase1: token 1/500: rel_id=1275 +22:07:11.747 TTS Simplex Phase1: token 2/500: rel_id=2187 +22:07:11.767 TTS Simplex Phase1: token 3/500: rel_id=6075 +22:07:11.785 TTS Simplex Phase1: token 4/500: rel_id=6086 +22:07:11.803 TTS Simplex Phase1: token 5/500: rel_id=5672 +22:07:12.201 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 22, buffer=25) +22:07:12.277 TTS Simplex Phase1: token 25/500: rel_id=5322 +22:07:12.828 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 47, buffer=25) +22:07:12.906 TTS Simplex Phase1: token 50/500: rel_id=1725 +22:07:12.998 LLM->TTS: text='不荒?可就是这荒,才让人', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[16530 101293 11319 30440 99486 43288 101293 3837 99306 103973] +22:07:13.118 T2W线程: wav_5.wav | 1.00s audio | 3175.7ms inference | RTF=3.18 | t=22250ms +22:07:13.219 TTS Simplex Phase1: EOS token at step 68 +22:07:13.219 TTS Simplex: chunk 结束,tts_token_buffer 剩余 20 tokens (保留等下一个 chunk) +22:07:13.219 TTS Simplex: generated 67 audio tokens for chunk 14 +22:07:13.219 TTS Simplex: chunk 14 first tokens: [1275 2187 6075 6086 5672 ], last tokens: [1125 306 2243 2163 1686 ] +22:07:13.219 TTS Simplex: updated tts_n_past_accumulated=1185, total_generated_tokens=1020 +22:07:13.220 TTS<-LLM: chunk_idx=15, text='那才叫过瘾!你说这地方荒', n_tokens=10, hidden_size=40960, token_ids=[99212 99306 99882 38182 108886 6313 105665 43288 100371 101293] +22:07:13.220 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:13.220 TTS: before empty check - response.empty=0, response='那才叫过瘾!你说这地方荒', llm_finish=0 +22:07:13.220 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:13.220 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:13.220 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:13.258 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_15/merged_embeddings.txt +22:07:13.259 TTS Simplex: generating audio tokens for chunk 15 (n_tokens=10, tts_n_embd=768) +22:07:13.259 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=15, new_size=11) +22:07:13.259 TTS Simplex: chunk 15 - keeping KV cache, n_past_tts=1185 +22:07:13.332 TTS Simplex: prefill completed, n_past_tts=1196 +22:07:13.332 TTS Simplex: sampler created +22:07:13.352 TTS Simplex Phase1: token 1/500: rel_id=5021 +22:07:13.369 TTS Simplex Phase1: token 2/500: rel_id=4967 +22:07:13.389 TTS Simplex Phase1: token 3/500: rel_id=6424 +22:07:13.409 TTS Simplex Phase1: token 4/500: rel_id=5560 +22:07:13.429 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 5, buffer=25) +22:07:13.429 TTS Simplex Phase1: token 5/500: rel_id=6048 +22:07:13.834 TTS Simplex Phase1: token 25/500: rel_id=138 +22:07:13.939 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 30, buffer=25) +22:07:14.017 LLM: detected end token, set llm_generation_done=true +22:07:14.017 LLM->TTS: text='觉得活着真痛快!', n_tokens=6, hidden_size=24576, n_embd=4096, token_ids=[99801 107473 88051 100406 99234 6313] +22:07:14.245 TTS Simplex Phase1: token 50/500: rel_id=6486 +22:07:14.320 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 55, buffer=25) +22:07:14.586 TTS Simplex Phase1: EOS token at step 74 +22:07:14.586 TTS Simplex: chunk 结束,tts_token_buffer 剩余 18 tokens (保留等下一个 chunk) +22:07:14.586 TTS Simplex: generated 73 audio tokens for chunk 15 +22:07:14.586 TTS Simplex: chunk 15 first tokens: [5021 4967 6424 5560 6048 ], last tokens: [5023 3159 1704 5835 735 ] +22:07:14.586 TTS Simplex: updated tts_n_past_accumulated=1269, total_generated_tokens=1093 +22:07:14.596 TTS<-LLM: chunk_idx=16, text='不荒?可就是这荒,才让人', n_tokens=10, hidden_size=40960, token_ids=[16530 101293 11319 30440 99486 43288 101293 3837 99306 103973] +22:07:14.596 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:14.596 TTS: before empty check - response.empty=0, response='不荒?可就是这荒,才让人', llm_finish=0 +22:07:14.596 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:14.596 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:14.596 📍 Decode 结束: n_past=348, 剩余空间=1700, 无需滑窗 +22:07:14.596 📍 轮次 1 结束,记录边界于 n_past=348 +22:07:14.596 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:14.635 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_16/merged_embeddings.txt +22:07:14.635 TTS Simplex: generating audio tokens for chunk 16 (n_tokens=10, tts_n_embd=768) +22:07:14.635 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=16, new_size=11) +22:07:14.635 TTS Simplex: chunk 16 - keeping KV cache, n_past_tts=1269 +22:07:14.702 TTS Simplex: prefill completed, n_past_tts=1280 +22:07:14.702 TTS Simplex: sampler created +22:07:14.721 TTS Simplex Phase1: token 1/500: rel_id=2112 +22:07:14.740 TTS Simplex Phase1: token 2/500: rel_id=4515 +22:07:14.758 TTS Simplex Phase1: token 3/500: rel_id=957 +22:07:14.774 TTS Simplex Phase1: token 4/500: rel_id=2327 +22:07:14.793 TTS Simplex Phase1: token 5/500: rel_id=1680 +22:07:14.831 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 7, buffer=25) +22:07:15.001 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=353 +22:07:15.152 TTS Simplex Phase1: token 25/500: rel_id=728 +22:07:15.275 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 32, buffer=25) +22:07:15.591 TTS Simplex Phase1: token 50/500: rel_id=5092 +22:07:15.722 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 57, buffer=25) +22:07:15.916 TTS Simplex Phase1: EOS token at step 68 +22:07:15.916 TTS Simplex: chunk 结束,tts_token_buffer 剩余 10 tokens (保留等下一个 chunk) +22:07:15.916 TTS Simplex: generated 67 audio tokens for chunk 16 +22:07:15.916 TTS Simplex: chunk 16 first tokens: [2112 4515 957 2327 1680 ], last tokens: [5759 4865 4871 4961 1957 ] +22:07:15.916 TTS Simplex: updated tts_n_past_accumulated=1347, total_generated_tokens=1160 +22:07:15.917 TTS<-LLM: chunk_idx=17, text='觉得活着真痛快!', n_tokens=6, hidden_size=24576, token_ids=[99801 107473 88051 100406 99234 6313] +22:07:15.917 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=6 +22:07:15.917 TTS: before empty check - response.empty=0, response='觉得活着真痛快!', llm_finish=1 +22:07:15.917 TTS: DEBUG before has_llm_data - token_ids.size=6, hidden_states.size=24576, n_embd=4096 +22:07:15.917 TTS: has_llm_data=1, token_ids=6, hidden_states=24576, n_embd=4096, llm_finish=1 +22:07:15.917 TTS: n_tokens_orig=6, n_tokens_filtered=6 (filtered 0 special tokens) +22:07:15.940 T2W线程: wav_6.wav | 1.00s audio | 2821.9ms inference | RTF=2.82 | t=25073ms +22:07:15.951 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_17/merged_embeddings.txt +22:07:15.951 TTS Simplex: generating audio tokens for chunk 17 (n_tokens=6, tts_n_embd=768) +22:07:15.951 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=17, new_size=7) +22:07:15.951 TTS Simplex: chunk 17 - keeping KV cache, n_past_tts=1347 +22:07:15.990 TTS Simplex: prefill completed, n_past_tts=1354 +22:07:15.990 TTS Simplex: sampler created +22:07:16.005 TTS Simplex Phase1: token 1/500: rel_id=4134 +22:07:16.019 TTS Simplex Phase1: token 2/500: rel_id=5835 +22:07:16.033 TTS Simplex Phase1: token 3/500: rel_id=5838 +22:07:16.047 TTS Simplex Phase1: token 4/500: rel_id=3651 +22:07:16.061 TTS Simplex Phase1: token 5/500: rel_id=1869 +22:07:16.210 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 15, buffer=25) +22:07:16.357 TTS Simplex Phase1: token 25/500: rel_id=4520 +22:07:16.584 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 40, buffer=25) +22:07:16.732 TTS Simplex Phase1: token 50/500: rel_id=4956 +22:07:16.809 TTS Simplex Phase1: EOS token at step 56 +22:07:16.809 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed +22:07:16.810 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=1409 +22:07:16.821 TTS Simplex Phase2: text_eos_embed injected, n_past=1410 +22:07:16.833 TTS Simplex Phase2: audio_bos injected, n_past=1411, starting final generation +22:07:16.982 TTS Simplex Phase2: yield 25 tokens 到 T2W +22:07:17.013 TTS Simplex Phase2: EOS at step 12 (final end) +22:07:17.013 TTS Simplex: chunk 结束,tts_token_buffer 剩余 1 tokens (保留等下一个 chunk) +22:07:17.013 TTS Simplex: is_final_text_chunk=true, flush 剩余 1 tokens 从 tts_token_buffer +22:07:17.013 TTS Simplex: generated 66 audio tokens for chunk 17 +22:07:17.013 TTS Simplex: chunk 17 first tokens: [4134 5835 5838 3651 1869 ], last tokens: [4299 6486 6486 4299 4218 ] +22:07:17.013 TTS Simplex: updated tts_n_past_accumulated=1423, total_generated_tokens=1226 +22:07:17.013 TTS: finished processing all chunks +22:07:17.014 TTS: 单工模式轮次结束,下一轮 round_idx=1 +22:07:17.014 TTS: sent is_final=true to T2W queue (turn end) +22:07:18.320 T2W线程: wav_7.wav | 1.00s audio | 2378.7ms inference | RTF=2.38 | t=27452ms +22:07:20.546 T2W线程: wav_8.wav | 1.00s audio | 2225.5ms inference | RTF=2.23 | t=29679ms +22:07:22.778 T2W线程: wav_9.wav | 1.00s audio | 2231.2ms inference | RTF=2.23 | t=31911ms +22:07:24.992 T2W线程: wav_10.wav | 1.00s audio | 2212.8ms inference | RTF=2.21 | t=34124ms +22:07:27.195 T2W线程: wav_11.wav | 1.00s audio | 2202.2ms inference | RTF=2.20 | t=36327ms +22:07:29.409 T2W线程: wav_12.wav | 1.00s audio | 2213.6ms inference | RTF=2.21 | t=38542ms +22:07:31.621 T2W线程: wav_13.wav | 1.00s audio | 2202.8ms inference | RTF=2.20 | t=40754ms +22:07:33.834 T2W线程: wav_14.wav | 1.00s audio | 2212.8ms inference | RTF=2.21 | t=42967ms +22:07:36.040 T2W线程: wav_15.wav | 1.00s audio | 2204.7ms inference | RTF=2.20 | t=45172ms +22:07:38.231 T2W线程: wav_16.wav | 1.00s audio | 2190.5ms inference | RTF=2.19 | t=47364ms +22:07:40.443 T2W线程: wav_17.wav | 1.00s audio | 2211.2ms inference | RTF=2.21 | t=49576ms +22:07:42.643 T2W线程: wav_18.wav | 1.00s audio | 2199.0ms inference | RTF=2.20 | t=51775ms +22:07:44.876 T2W线程: wav_19.wav | 1.00s audio | 2232.0ms inference | RTF=2.23 | t=54008ms +22:07:47.081 T2W线程: wav_20.wav | 1.00s audio | 2204.1ms inference | RTF=2.20 | t=56213ms +22:07:49.285 T2W线程: wav_21.wav | 1.00s audio | 2203.2ms inference | RTF=2.20 | t=58417ms +22:07:51.493 T2W线程: wav_22.wav | 1.00s audio | 2207.2ms inference | RTF=2.21 | t=60626ms +22:07:53.739 T2W线程: wav_23.wav | 1.00s audio | 2245.3ms inference | RTF=2.25 | t=62871ms +22:07:55.957 T2W线程: wav_24.wav | 1.00s audio | 2217.0ms inference | RTF=2.22 | t=65089ms +22:07:58.160 T2W线程: wav_25.wav | 1.00s audio | 2202.1ms inference | RTF=2.20 | t=67292ms +22:08:00.374 T2W线程: wav_26.wav | 1.00s audio | 2213.6ms inference | RTF=2.21 | t=69507ms +22:08:02.583 T2W线程: wav_27.wav | 1.00s audio | 2207.9ms inference | RTF=2.21 | t=71715ms +22:08:04.798 T2W线程: wav_28.wav | 1.00s audio | 2214.3ms inference | RTF=2.21 | t=73930ms +22:08:07.010 T2W线程: wav_29.wav | 1.00s audio | 2212.0ms inference | RTF=2.21 | t=76143ms +22:08:09.207 T2W线程: wav_30.wav | 1.00s audio | 2195.5ms inference | RTF=2.20 | t=78339ms +22:08:11.411 T2W线程: wav_31.wav | 1.00s audio | 2204.1ms inference | RTF=2.20 | t=80544ms +22:08:13.633 T2W线程: wav_32.wav | 1.00s audio | 2221.1ms inference | RTF=2.22 | t=82766ms +22:08:15.854 T2W线程: wav_33.wav | 1.00s audio | 2219.4ms inference | RTF=2.22 | t=84986ms +22:08:18.066 T2W线程: wav_34.wav | 1.00s audio | 2211.6ms inference | RTF=2.21 | t=87199ms +22:08:20.271 T2W线程: wav_35.wav | 1.00s audio | 2204.1ms inference | RTF=2.20 | t=89403ms +22:08:22.473 T2W线程: wav_36.wav | 1.00s audio | 2201.2ms inference | RTF=2.20 | t=91605ms +22:08:24.671 T2W线程: wav_37.wav | 1.00s audio | 2197.6ms inference | RTF=2.20 | t=93803ms +22:08:26.865 T2W线程: wav_38.wav | 1.00s audio | 2193.4ms inference | RTF=2.19 | t=95998ms +22:08:29.070 T2W线程: wav_39.wav | 1.00s audio | 2204.3ms inference | RTF=2.20 | t=98203ms +22:08:31.262 T2W线程: wav_40.wav | 1.00s audio | 2190.6ms inference | RTF=2.19 | t=100394ms +22:08:33.465 T2W线程: wav_41.wav | 1.00s audio | 2202.6ms inference | RTF=2.20 | t=102597ms +22:08:35.674 T2W线程: wav_42.wav | 1.00s audio | 2208.7ms inference | RTF=2.21 | t=104807ms +22:08:37.870 T2W线程: wav_43.wav | 1.00s audio | 2194.5ms inference | RTF=2.19 | t=107002ms +22:08:40.069 T2W线程: wav_44.wav | 1.00s audio | 2198.0ms inference | RTF=2.20 | t=109201ms +22:08:42.297 T2W线程: wav_45.wav | 1.00s audio | 2227.2ms inference | RTF=2.23 | t=111429ms +22:08:44.495 T2W线程: wav_46.wav | 1.00s audio | 2197.0ms inference | RTF=2.20 | t=113627ms +22:08:46.707 T2W线程: wav_47.wav | 1.00s audio | 2211.1ms inference | RTF=2.21 | t=115839ms +22:08:48.916 T2W线程: wav_48.wav | 1.00s audio | 2208.5ms inference | RTF=2.21 | t=118048ms +22:08:50.905 T2W线程: wav_49.wav | 0.32s audio | 1988.7ms inference | RTF=6.21 | t=120038ms +22:08:50.905 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=49) +22:08:50.905 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav +22:08:50.944 omni_stop_threads: stop signals sent +22:08:50.944 T2W(C++) 线程: 停止 +tts thread end +t2w thread end +build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32 +llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf\MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest)) +llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output. +llama_model_loader: - kv 0: general.architecture str = qwen3 +llama_model_loader: - kv 1: general.type str = model +llama_model_loader: - kv 2: general.name str = Llm +llama_model_loader: - kv 3: general.size_label str = 8.2B +llama_model_loader: - kv 4: qwen3.block_count u32 = 36 +llama_model_loader: - kv 5: qwen3.context_length u32 = 40960 +llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096 +llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288 +llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32 +llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8 +llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000 +llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001 +llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128 +llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128 +llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2 +llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2 +llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ... +llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ... +llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",... +llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644 +llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645 +llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244 +llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643 +llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false +llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>... +llama_model_loader: - kv 25: general.quantization_version u32 = 2 +llama_model_loader: - kv 26: general.file_type u32 = 15 +llama_model_loader: - type f32: 145 tensors +llama_model_loader: - type q4_K: 217 tensors +llama_model_loader: - type q6_K: 37 tensors +print_info: file format = GGUF V3 (latest) +print_info: file type = Q4_K - Medium +print_info: file size = 4.68 GiB (4.90 BPW) +load: printing all EOG tokens: +load: - 151643 ('<|endoftext|>') +load: - 151645 ('<|im_end|>') +load: - 151662 ('<|fim_pad|>') +load: - 151663 ('<|repo_name|>') +load: - 151664 ('<|file_sep|>') +load: special tokens cache size = 106 +load: token to piece cache size = 0.9319 MB +print_info: arch = qwen3 +print_info: vocab_only = 0 +print_info: n_ctx_train = 40960 +print_info: n_embd = 4096 +print_info: n_layer = 36 +print_info: n_head = 32 +print_info: n_head_kv = 8 +print_info: n_rot = 128 +print_info: n_swa = 0 +print_info: is_swa_any = 0 +print_info: n_embd_head_k = 128 +print_info: n_embd_head_v = 128 +print_info: n_gqa = 4 +print_info: n_embd_k_gqa = 1024 +print_info: n_embd_v_gqa = 1024 +print_info: f_norm_eps = 0.0e+00 +print_info: f_norm_rms_eps = 1.0e-06 +print_info: f_clamp_kqv = 0.0e+00 +print_info: f_max_alibi_bias = 0.0e+00 +print_info: f_logit_scale = 0.0e+00 +print_info: f_attn_scale = 0.0e+00 +print_info: n_ff = 12288 +print_info: n_expert = 0 +print_info: n_expert_used = 0 +print_info: causal attn = 1 +print_info: pooling type = -1 +print_info: rope type = 2 +print_info: rope scaling = linear +print_info: freq_base_train = 1000000.0 +print_info: freq_scale_train = 1 +print_info: n_ctx_orig_yarn = 40960 +print_info: rope_finetuned = unknown +print_info: model type = 8B +print_info: model params = 8.19 B +print_info: general.name = Llm +print_info: vocab type = BPE +print_info: n_vocab = 151748 +print_info: n_merges = 151387 +print_info: BOS token = 151644 '<|im_start|>' +print_info: EOS token = 151645 '<|im_end|>' +print_info: EOT token = 151645 '<|im_end|>' +print_info: UNK token = 128244 '' +print_info: PAD token = 151643 '<|endoftext|>' +print_info: LF token = 198 'Ċ' +print_info: FIM PRE token = 151659 '<|fim_prefix|>' +print_info: FIM SUF token = 151661 '<|fim_suffix|>' +print_info: FIM MID token = 151660 '<|fim_middle|>' +print_info: FIM PAD token = 151662 '<|fim_pad|>' +print_info: FIM REP token = 151663 '<|repo_name|>' +print_info: FIM SEP token = 151664 '<|file_sep|>' +print_info: EOG token = 151643 '<|endoftext|>' +print_info: EOG token = 151645 '<|im_end|>' +print_info: EOG token = 151662 '<|fim_pad|>' +print_info: EOG token = 151663 '<|repo_name|>' +print_info: EOG token = 151664 '<|file_sep|>' +print_info: max token length = 256 +load_tensors: loading model tensors, this can take a while... (mmap = true) +load_tensors: CPU_REPACK model buffer size = 3199.50 MiB +load_tensors: CPU_Mapped model buffer size = 4761.17 MiB +..................................................................................... +llama_context: constructing llama_context +llama_context: n_seq_max = 1 +llama_context: n_ctx = 2048 +llama_context: n_ctx_per_seq = 2048 +llama_context: n_batch = 2048 +llama_context: n_ubatch = 512 +llama_context: causal_attn = 1 +llama_context: flash_attn = auto +llama_context: kv_unified = false +llama_context: freq_base = 1000000.0 +llama_context: freq_scale = 1 +llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized +llama_context: CPU output buffer size = 0.58 MiB +llama_kv_cache: CPU KV buffer size = 288.00 MiB +llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB +llama_context: Flash Attention was auto, set to enabled +llama_context: CPU compute buffer size = 304.38 MiB +llama_context: graph nodes = 1267 +llama_context: graph splits = 1 +llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest)) +llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output. +llama_model_loader: - kv 0: general.architecture str = llama +llama_model_loader: - kv 1: general.type str = model +llama_model_loader: - kv 2: general.name str = Tts +llama_model_loader: - kv 3: general.size_label str = 445M +llama_model_loader: - kv 4: llama.block_count u32 = 20 +llama_model_loader: - kv 5: llama.context_length u32 = 4096 +llama_model_loader: - kv 6: llama.embedding_length u32 = 768 +llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072 +llama_model_loader: - kv 8: llama.attention.head_count u32 = 12 +llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12 +llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000 +llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001 +llama_model_loader: - kv 12: llama.attention.key_length u32 = 64 +llama_model_loader: - kv 13: llama.attention.value_length u32 = 64 +llama_model_loader: - kv 14: general.file_type u32 = 1 +llama_model_loader: - kv 15: llama.vocab_size u32 = 158626 +llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64 +llama_model_loader: - kv 17: general.quantization_version u32 = 2 +llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2 +llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2 +llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ... +llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ... +llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",... +llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644 +llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645 +llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244 +llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643 +llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false +llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>... +llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false +llama_model_loader: - type f32: 50 tensors +llama_model_loader: - type f16: 143 tensors +print_info: file format = GGUF V3 (latest) +print_info: file type = F16 +print_info: file size = 1.07 GiB (20.70 BPW) +load: printing all EOG tokens: +load: - 151643 ('<|endoftext|>') +load: - 151645 ('<|im_end|>') +load: - 151662 ('<|fim_pad|>') +load: - 151663 ('<|repo_name|>') +load: - 151664 ('<|file_sep|>') +load: special tokens cache size = 106 +load: token to piece cache size = 0.9319 MB +print_info: arch = llama +print_info: vocab_only = 0 +print_info: n_ctx_train = 4096 +print_info: n_embd = 768 +print_info: n_layer = 20 +print_info: n_head = 12 +print_info: n_head_kv = 12 +print_info: n_rot = 64 +print_info: n_swa = 0 +print_info: is_swa_any = 0 +print_info: n_embd_head_k = 64 +print_info: n_embd_head_v = 64 +print_info: n_gqa = 1 +print_info: n_embd_k_gqa = 768 +print_info: n_embd_v_gqa = 768 +print_info: f_norm_eps = 0.0e+00 +print_info: f_norm_rms_eps = 1.0e-06 +print_info: f_clamp_kqv = 0.0e+00 +print_info: f_max_alibi_bias = 0.0e+00 +print_info: f_logit_scale = 0.0e+00 +print_info: f_attn_scale = 0.0e+00 +print_info: n_ff = 3072 +print_info: n_expert = 0 +print_info: n_expert_used = 0 +print_info: causal attn = 1 +print_info: pooling type = 0 +print_info: rope type = 0 +print_info: rope scaling = linear +print_info: freq_base_train = 10000.0 +print_info: freq_scale_train = 1 +print_info: n_ctx_orig_yarn = 4096 +print_info: rope_finetuned = unknown +print_info: model type = ?B +print_info: model params = 444.94 M +print_info: general.name = Tts +print_info: vocab type = BPE +print_info: n_vocab = 158626 +print_info: n_merges = 151387 +print_info: BOS token = 151644 '<|im_start|>' +print_info: EOS token = 151645 '<|im_end|>' +print_info: EOT token = 151645 '<|im_end|>' +print_info: UNK token = 128244 '' +print_info: PAD token = 151643 '<|endoftext|>' +print_info: LF token = 198 'Ċ' +print_info: FIM PRE token = 151659 '<|fim_prefix|>' +print_info: FIM SUF token = 151661 '<|fim_suffix|>' +print_info: FIM MID token = 151660 '<|fim_middle|>' +print_info: FIM PAD token = 151662 '<|fim_pad|>' +print_info: FIM REP token = 151663 '<|repo_name|>' +print_info: FIM SEP token = 151664 '<|file_sep|>' +print_info: EOG token = 151643 '<|endoftext|>' +print_info: EOG token = 151645 '<|im_end|>' +print_info: EOG token = 151662 '<|fim_pad|>' +print_info: EOG token = 151663 '<|repo_name|>' +print_info: EOG token = 151664 '<|file_sep|>' +print_info: max token length = 256 +load_tensors: loading model tensors, this can take a while... (mmap = true) +load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately +load_tensors: CPU_Mapped model buffer size = 592.48 MiB +.............................................................. +llama_init_from_model: model default pooling_type is [0], but [-1] was specified +llama_context: constructing llama_context +llama_context: n_seq_max = 1 +llama_context: n_ctx = 2048 +llama_context: n_ctx_per_seq = 2048 +llama_context: n_batch = 2048 +llama_context: n_ubatch = 512 +llama_context: causal_attn = 1 +llama_context: flash_attn = auto +llama_context: kv_unified = false +llama_context: freq_base = 10000.0 +llama_context: freq_scale = 1 +llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized +llama_context: CPU output buffer size = 0.61 MiB +llama_kv_cache: CPU KV buffer size = 120.00 MiB +llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB +llama_context: Flash Attention was auto, set to enabled +llama_context: CPU compute buffer size = 25.51 MiB +llama_context: graph nodes = 613 +llama_context: graph splits = 1 +vision_model_loader: model name: +vision_model_loader: description: image encoder for MiniCPM-V +vision_model_loader: GGUF version: 3 +vision_model_loader: alignment: 32 +vision_model_loader: n_tensors: 455 +vision_model_loader: n_kv: 20 + +vision_ctx: vision using CPU backend +load_hparams: model_type: 0 +load_hparams: n_embd: 1152 +load_hparams: n_head: 16 +load_hparams: n_ff: 4304 +load_hparams: n_layer: 27 +load_hparams: ffn_op: gelu +load_hparams: projection_dim: 0 + +--- vision hparams --- +load_hparams: image_size: 448 +load_hparams: patch_size: 14 +load_hparams: minicpmv_version: 100045 +load_hparams: proj_scale_factor: 0 +load_hparams: n_wa_pattern: 0 + +load_hparams: model size: 1044.36 MiB +load_hparams: metadata size: 0.16 MiB +load_tensors: ffn up/down are swapped +alloc_compute_meta: CPU compute buffer size = 100.30 MiB +init tts....init t2w....voc_hg2_model: CPU backend using 8 threads +audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000 +audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins +audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201 +audition_audio_preprocess: Generated 1 mel spectrogram chunk(s) +audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000 +build_whisper: Whisper encoder graph built (projector output, pre-pooling) +audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000 +audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500 +audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500) +audition_audio_batch_encode: Final output shape: [4096, 20] +audition_audio_batch_encode: Final output: 20 tokens x 4096 dims +encode_image_with_vision_chunks: step 1 of 1 encoded in 3538.25 ms +encode_image_with_vision_chunks: all 1 chunks encoded in 3560.67 ms (grid: 1x1) + +encode_image_with_vision_chunks: image encoded in 3560.68 ms by vision ( 3560.68 ms per chunk, 64 total tokens) +omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_cpp_cpu_v3\fixture_0001.jpg +stream_prefill: prefilled 1 vision chunks (64 tokens each) +audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000 +audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins +audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201 +audition_audio_preprocess: Generated 1 mel spectrogram chunk(s) +audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000 +build_whisper: Whisper encoder graph built (projector output, pre-pooling) +audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000 +audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=1, current_total=100, new_total=200, max_tokens=1500 +audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=200, max_tokens=1500) +audition_audio_batch_encode: Final output shape: [4096, 20] +audition_audio_batch_encode: Final output: 20 tokens x 4096 dims + +[timing] call=0 tokens=28 final=0 token2mel=3008.347ms vocoder=441.612ms total=3449.977ms audio=20160 +[timing] call=1 tokens=28 final=0 token2mel=2867.322ms vocoder=514.727ms total=3382.072ms audio=24000 +[timing] call=2 tokens=28 final=0 token2mel=2966.215ms vocoder=499.383ms total=3465.615ms audio=24000 +[timing] call=3 tokens=28 final=0 token2mel=2871.007ms vocoder=487.908ms total=3358.955ms audio=24000 +[timing] call=4 tokens=28 final=0 token2mel=2949.518ms vocoder=501.990ms total=3451.537ms audio=24000 +[timing] call=5 tokens=28 final=0 token2mel=2706.893ms vocoder=468.788ms total=3175.696ms audio=24000 +Waiting for audio generation to complete... +[timing] call=6 tokens=28 final=0 token2mel=2419.876ms vocoder=402.004ms total=2821.890ms audio=24000 +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_2.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_3.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_4.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_5.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_6.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_7.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_8.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_9.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_10.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_11.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_12.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_13.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_14.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_15.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_16.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_17.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_18.wav does not exist or is empty +TTS: no valid WAV files to merge +[timing] call=7 tokens=28 final=0 token2mel=1998.322ms vocoder=380.397ms total=2378.729ms audio=24000 +[timing] call=8 tokens=28 final=0 token2mel=1851.460ms vocoder=373.980ms total=2225.451ms audio=24000 +[timing] call=9 tokens=28 final=0 token2mel=1855.032ms vocoder=376.188ms total=2231.231ms audio=24000 +[timing] call=10 tokens=28 final=0 token2mel=1839.380ms vocoder=373.340ms total=2212.733ms audio=24000 +[timing] call=11 tokens=28 final=0 token2mel=1832.723ms vocoder=369.453ms total=2202.187ms audio=24000 +[timing] call=12 tokens=28 final=0 token2mel=1839.659ms vocoder=373.948ms total=2213.620ms audio=24000 +[timing] call=13 tokens=28 final=0 token2mel=1825.662ms vocoder=377.159ms total=2202.833ms audio=24000 +[timing] call=14 tokens=28 final=0 token2mel=1834.524ms vocoder=378.257ms total=2212.792ms audio=24000 +[timing] call=15 tokens=28 final=0 token2mel=1827.935ms vocoder=376.774ms total=2204.721ms audio=24000 +[timing] call=16 tokens=28 final=0 token2mel=1819.256ms vocoder=371.231ms total=2190.499ms audio=24000 +[timing] call=17 tokens=28 final=0 token2mel=1836.480ms vocoder=374.681ms total=2211.173ms audio=24000 +[timing] call=18 tokens=28 final=0 token2mel=1826.588ms vocoder=372.420ms total=2199.018ms audio=24000 +[timing] call=19 tokens=28 final=0 token2mel=1862.405ms vocoder=369.565ms total=2231.984ms audio=24000 +[timing] call=20 tokens=28 final=0 token2mel=1824.354ms vocoder=379.717ms total=2204.082ms audio=24000 +[timing] call=21 tokens=28 final=0 token2mel=1828.966ms vocoder=374.241ms total=2203.219ms audio=24000 +[timing] call=22 tokens=28 final=0 token2mel=1830.597ms vocoder=376.619ms total=2207.228ms audio=24000 +[timing] call=23 tokens=28 final=0 token2mel=1862.567ms vocoder=382.669ms total=2245.247ms audio=24000 +[timing] call=24 tokens=28 final=0 token2mel=1832.274ms vocoder=384.729ms total=2217.013ms audio=24000 +[timing] call=25 tokens=28 final=0 token2mel=1827.821ms vocoder=374.201ms total=2202.034ms audio=24000 +[timing] call=26 tokens=28 final=0 token2mel=1837.246ms vocoder=376.361ms total=2213.620ms audio=24000 +[timing] call=27 tokens=28 final=0 token2mel=1829.673ms vocoder=378.150ms total=2207.835ms audio=24000 +[timing] call=28 tokens=28 final=0 token2mel=1838.582ms vocoder=375.693ms total=2214.287ms audio=24000 +[timing] call=29 tokens=28 final=0 token2mel=1837.139ms vocoder=374.800ms total=2211.950ms audio=24000 +[timing] call=30 tokens=28 final=0 token2mel=1818.072ms vocoder=377.411ms total=2195.493ms audio=24000 +[timing] call=31 tokens=28 final=0 token2mel=1831.503ms vocoder=372.541ms total=2204.056ms audio=24000 +[timing] call=32 tokens=28 final=0 token2mel=1847.361ms vocoder=373.726ms total=2221.098ms audio=24000 +[timing] call=33 tokens=28 final=0 token2mel=1841.079ms vocoder=378.310ms total=2219.402ms audio=24000 +[timing] call=34 tokens=28 final=0 token2mel=1828.232ms vocoder=383.369ms total=2211.613ms audio=24000 +[timing] call=35 tokens=28 final=0 token2mel=1823.123ms vocoder=380.919ms total=2204.053ms audio=24000 +[timing] call=36 tokens=28 final=0 token2mel=1828.180ms vocoder=373.026ms total=2201.218ms audio=24000 +[timing] call=37 tokens=28 final=0 token2mel=1819.845ms vocoder=377.691ms total=2197.552ms audio=24000 +[timing] call=38 tokens=28 final=0 token2mel=1817.171ms vocoder=376.247ms total=2193.428ms audio=24000 +[timing] call=39 tokens=28 final=0 token2mel=1825.358ms vocoder=378.877ms total=2204.246ms audio=24000 +[timing] call=40 tokens=28 final=0 token2mel=1820.798ms vocoder=369.805ms total=2190.615ms audio=24000 +[timing] call=41 tokens=28 final=0 token2mel=1827.390ms vocoder=375.167ms total=2202.568ms audio=24000 +[timing] call=42 tokens=28 final=0 token2mel=1828.504ms vocoder=380.181ms total=2208.697ms audio=24000 +[timing] call=43 tokens=28 final=0 token2mel=1826.139ms vocoder=368.356ms total=2194.507ms audio=24000 +[timing] call=44 tokens=28 final=0 token2mel=1819.542ms vocoder=378.423ms total=2197.977ms audio=24000 +[timing] call=45 tokens=28 final=0 token2mel=1849.443ms vocoder=377.706ms total=2227.162ms audio=24000 +[timing] call=46 tokens=28 final=0 token2mel=1819.117ms vocoder=377.801ms total=2196.930ms audio=24000 +[timing] call=47 tokens=28 final=0 token2mel=1821.994ms vocoder=389.097ms total=2211.102ms audio=24000 +[timing] call=48 tokens=28 final=0 token2mel=1825.848ms vocoder=382.629ms total=2208.488ms audio=24000 +[timing] call=49 tokens=4 final=1 token2mel=1862.430ms vocoder=126.245ms total=1988.684ms audio=7680 +Audio generation completed. +llama_perf_context_print: load time = 14730.90 ms +llama_perf_context_print: prompt eval time = 13109.86 ms / 171 tokens ( 76.67 ms per token, 13.04 tokens per second) +llama_perf_context_print: eval time = 21868.63 ms / 177 runs ( 123.55 ms per token, 8.09 tokens per second) +llama_perf_context_print: total time = 134277.18 ms / 348 tokens +llama_perf_context_print: graphs reused = 177 +Token2Wav (C++): session released diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full.profile.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full.profile.json new file mode 100644 index 000000000..9275574bd --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full.profile.json @@ -0,0 +1,29 @@ +{ + "command": [ + "C:\\Users\\zhout\\w2\\minicpmo_cpp_cpu_v3\\llama-omni-cli.exe", + "-m", + "C:\\Users\\zhout\\w2\\models\\MiniCPM-o-4_5-gguf\\MiniCPM-o-4_5-Q4_K_M.gguf", + "-ngl", + "0", + "-c", + "2048", + "--omni", + "--t2w-device", + "cpu", + "--t2w-wait-seconds", + "900", + "--ref-audio", + "C:\\Users\\zhout\\w2\\minicpmo_cpp_cpu_v3\\default_ref_audio.wav", + "--test", + "C:\\Users\\zhout\\w2\\minicpmo_cpp_cpu_v3\\fixture_", + "2" + ], + "cwd": "C:\\Users\\zhout\\w2\\minicpmo_cpp_cpu_v3", + "exit_code": 0, + "wall_s": 137.33765170001425, + "memory_sample_interval_ms": 100, + "memory_samples": 1365, + "peak_sampled_rss_bytes": 13104742400, + "peak_sampled_private_bytes": 13314060288, + "measurement_note": "sampled process values, not guaranteed loading peaks" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full.stderr.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full.stderr.log new file mode 100644 index 000000000..318aa81b9 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full.stderr.log @@ -0,0 +1,393 @@ +build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32 +llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf\MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest)) +llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output. +llama_model_loader: - kv 0: general.architecture str = qwen3 +llama_model_loader: - kv 1: general.type str = model +llama_model_loader: - kv 2: general.name str = Llm +llama_model_loader: - kv 3: general.size_label str = 8.2B +llama_model_loader: - kv 4: qwen3.block_count u32 = 36 +llama_model_loader: - kv 5: qwen3.context_length u32 = 40960 +llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096 +llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288 +llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32 +llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8 +llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000 +llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001 +llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128 +llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128 +llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2 +llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2 +llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ... +llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ... +llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",... +llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644 +llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645 +llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244 +llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643 +llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false +llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>... +llama_model_loader: - kv 25: general.quantization_version u32 = 2 +llama_model_loader: - kv 26: general.file_type u32 = 15 +llama_model_loader: - type f32: 145 tensors +llama_model_loader: - type q4_K: 217 tensors +llama_model_loader: - type q6_K: 37 tensors +print_info: file format = GGUF V3 (latest) +print_info: file type = Q4_K - Medium +print_info: file size = 4.68 GiB (4.90 BPW) +load: printing all EOG tokens: +load: - 151643 ('<|endoftext|>') +load: - 151645 ('<|im_end|>') +load: - 151662 ('<|fim_pad|>') +load: - 151663 ('<|repo_name|>') +load: - 151664 ('<|file_sep|>') +load: special tokens cache size = 106 +load: token to piece cache size = 0.9319 MB +print_info: arch = qwen3 +print_info: vocab_only = 0 +print_info: n_ctx_train = 40960 +print_info: n_embd = 4096 +print_info: n_layer = 36 +print_info: n_head = 32 +print_info: n_head_kv = 8 +print_info: n_rot = 128 +print_info: n_swa = 0 +print_info: is_swa_any = 0 +print_info: n_embd_head_k = 128 +print_info: n_embd_head_v = 128 +print_info: n_gqa = 4 +print_info: n_embd_k_gqa = 1024 +print_info: n_embd_v_gqa = 1024 +print_info: f_norm_eps = 0.0e+00 +print_info: f_norm_rms_eps = 1.0e-06 +print_info: f_clamp_kqv = 0.0e+00 +print_info: f_max_alibi_bias = 0.0e+00 +print_info: f_logit_scale = 0.0e+00 +print_info: f_attn_scale = 0.0e+00 +print_info: n_ff = 12288 +print_info: n_expert = 0 +print_info: n_expert_used = 0 +print_info: causal attn = 1 +print_info: pooling type = -1 +print_info: rope type = 2 +print_info: rope scaling = linear +print_info: freq_base_train = 1000000.0 +print_info: freq_scale_train = 1 +print_info: n_ctx_orig_yarn = 40960 +print_info: rope_finetuned = unknown +print_info: model type = 8B +print_info: model params = 8.19 B +print_info: general.name = Llm +print_info: vocab type = BPE +print_info: n_vocab = 151748 +print_info: n_merges = 151387 +print_info: BOS token = 151644 '<|im_start|>' +print_info: EOS token = 151645 '<|im_end|>' +print_info: EOT token = 151645 '<|im_end|>' +print_info: UNK token = 128244 '' +print_info: PAD token = 151643 '<|endoftext|>' +print_info: LF token = 198 'Ċ' +print_info: FIM PRE token = 151659 '<|fim_prefix|>' +print_info: FIM SUF token = 151661 '<|fim_suffix|>' +print_info: FIM MID token = 151660 '<|fim_middle|>' +print_info: FIM PAD token = 151662 '<|fim_pad|>' +print_info: FIM REP token = 151663 '<|repo_name|>' +print_info: FIM SEP token = 151664 '<|file_sep|>' +print_info: EOG token = 151643 '<|endoftext|>' +print_info: EOG token = 151645 '<|im_end|>' +print_info: EOG token = 151662 '<|fim_pad|>' +print_info: EOG token = 151663 '<|repo_name|>' +print_info: EOG token = 151664 '<|file_sep|>' +print_info: max token length = 256 +load_tensors: loading model tensors, this can take a while... (mmap = true) +load_tensors: CPU_REPACK model buffer size = 3199.50 MiB +load_tensors: CPU_Mapped model buffer size = 4761.17 MiB +..................................................................................... +llama_context: constructing llama_context +llama_context: n_seq_max = 1 +llama_context: n_ctx = 2048 +llama_context: n_ctx_per_seq = 2048 +llama_context: n_batch = 2048 +llama_context: n_ubatch = 512 +llama_context: causal_attn = 1 +llama_context: flash_attn = auto +llama_context: kv_unified = false +llama_context: freq_base = 1000000.0 +llama_context: freq_scale = 1 +llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized +llama_context: CPU output buffer size = 0.58 MiB +llama_kv_cache: CPU KV buffer size = 288.00 MiB +llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB +llama_context: Flash Attention was auto, set to enabled +llama_context: CPU compute buffer size = 304.38 MiB +llama_context: graph nodes = 1267 +llama_context: graph splits = 1 +llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest)) +llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output. +llama_model_loader: - kv 0: general.architecture str = llama +llama_model_loader: - kv 1: general.type str = model +llama_model_loader: - kv 2: general.name str = Tts +llama_model_loader: - kv 3: general.size_label str = 445M +llama_model_loader: - kv 4: llama.block_count u32 = 20 +llama_model_loader: - kv 5: llama.context_length u32 = 4096 +llama_model_loader: - kv 6: llama.embedding_length u32 = 768 +llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072 +llama_model_loader: - kv 8: llama.attention.head_count u32 = 12 +llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12 +llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000 +llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001 +llama_model_loader: - kv 12: llama.attention.key_length u32 = 64 +llama_model_loader: - kv 13: llama.attention.value_length u32 = 64 +llama_model_loader: - kv 14: general.file_type u32 = 1 +llama_model_loader: - kv 15: llama.vocab_size u32 = 158626 +llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64 +llama_model_loader: - kv 17: general.quantization_version u32 = 2 +llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2 +llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2 +llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ... +llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ... +llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",... +llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644 +llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645 +llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244 +llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643 +llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false +llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>... +llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false +llama_model_loader: - type f32: 50 tensors +llama_model_loader: - type f16: 143 tensors +print_info: file format = GGUF V3 (latest) +print_info: file type = F16 +print_info: file size = 1.07 GiB (20.70 BPW) +load: printing all EOG tokens: +load: - 151643 ('<|endoftext|>') +load: - 151645 ('<|im_end|>') +load: - 151662 ('<|fim_pad|>') +load: - 151663 ('<|repo_name|>') +load: - 151664 ('<|file_sep|>') +load: special tokens cache size = 106 +load: token to piece cache size = 0.9319 MB +print_info: arch = llama +print_info: vocab_only = 0 +print_info: n_ctx_train = 4096 +print_info: n_embd = 768 +print_info: n_layer = 20 +print_info: n_head = 12 +print_info: n_head_kv = 12 +print_info: n_rot = 64 +print_info: n_swa = 0 +print_info: is_swa_any = 0 +print_info: n_embd_head_k = 64 +print_info: n_embd_head_v = 64 +print_info: n_gqa = 1 +print_info: n_embd_k_gqa = 768 +print_info: n_embd_v_gqa = 768 +print_info: f_norm_eps = 0.0e+00 +print_info: f_norm_rms_eps = 1.0e-06 +print_info: f_clamp_kqv = 0.0e+00 +print_info: f_max_alibi_bias = 0.0e+00 +print_info: f_logit_scale = 0.0e+00 +print_info: f_attn_scale = 0.0e+00 +print_info: n_ff = 3072 +print_info: n_expert = 0 +print_info: n_expert_used = 0 +print_info: causal attn = 1 +print_info: pooling type = 0 +print_info: rope type = 0 +print_info: rope scaling = linear +print_info: freq_base_train = 10000.0 +print_info: freq_scale_train = 1 +print_info: n_ctx_orig_yarn = 4096 +print_info: rope_finetuned = unknown +print_info: model type = ?B +print_info: model params = 444.94 M +print_info: general.name = Tts +print_info: vocab type = BPE +print_info: n_vocab = 158626 +print_info: n_merges = 151387 +print_info: BOS token = 151644 '<|im_start|>' +print_info: EOS token = 151645 '<|im_end|>' +print_info: EOT token = 151645 '<|im_end|>' +print_info: UNK token = 128244 '' +print_info: PAD token = 151643 '<|endoftext|>' +print_info: LF token = 198 'Ċ' +print_info: FIM PRE token = 151659 '<|fim_prefix|>' +print_info: FIM SUF token = 151661 '<|fim_suffix|>' +print_info: FIM MID token = 151660 '<|fim_middle|>' +print_info: FIM PAD token = 151662 '<|fim_pad|>' +print_info: FIM REP token = 151663 '<|repo_name|>' +print_info: FIM SEP token = 151664 '<|file_sep|>' +print_info: EOG token = 151643 '<|endoftext|>' +print_info: EOG token = 151645 '<|im_end|>' +print_info: EOG token = 151662 '<|fim_pad|>' +print_info: EOG token = 151663 '<|repo_name|>' +print_info: EOG token = 151664 '<|file_sep|>' +print_info: max token length = 256 +load_tensors: loading model tensors, this can take a while... (mmap = true) +load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately +load_tensors: CPU_Mapped model buffer size = 592.48 MiB +.............................................................. +llama_init_from_model: model default pooling_type is [0], but [-1] was specified +llama_context: constructing llama_context +llama_context: n_seq_max = 1 +llama_context: n_ctx = 2048 +llama_context: n_ctx_per_seq = 2048 +llama_context: n_batch = 2048 +llama_context: n_ubatch = 512 +llama_context: causal_attn = 1 +llama_context: flash_attn = auto +llama_context: kv_unified = false +llama_context: freq_base = 10000.0 +llama_context: freq_scale = 1 +llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized +llama_context: CPU output buffer size = 0.61 MiB +llama_kv_cache: CPU KV buffer size = 120.00 MiB +llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB +llama_context: Flash Attention was auto, set to enabled +llama_context: CPU compute buffer size = 25.51 MiB +llama_context: graph nodes = 613 +llama_context: graph splits = 1 +vision_model_loader: model name: +vision_model_loader: description: image encoder for MiniCPM-V +vision_model_loader: GGUF version: 3 +vision_model_loader: alignment: 32 +vision_model_loader: n_tensors: 455 +vision_model_loader: n_kv: 20 + +vision_ctx: vision using CPU backend +load_hparams: model_type: 0 +load_hparams: n_embd: 1152 +load_hparams: n_head: 16 +load_hparams: n_ff: 4304 +load_hparams: n_layer: 27 +load_hparams: ffn_op: gelu +load_hparams: projection_dim: 0 + +--- vision hparams --- +load_hparams: image_size: 448 +load_hparams: patch_size: 14 +load_hparams: minicpmv_version: 100045 +load_hparams: proj_scale_factor: 0 +load_hparams: n_wa_pattern: 0 + +load_hparams: model size: 1044.36 MiB +load_hparams: metadata size: 0.16 MiB +load_tensors: ffn up/down are swapped +alloc_compute_meta: CPU compute buffer size = 100.30 MiB +init tts....init t2w....voc_hg2_model: CPU backend using 8 threads +audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000 +audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins +audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201 +audition_audio_preprocess: Generated 1 mel spectrogram chunk(s) +audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000 +build_whisper: Whisper encoder graph built (projector output, pre-pooling) +audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000 +audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500 +audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500) +audition_audio_batch_encode: Final output shape: [4096, 20] +audition_audio_batch_encode: Final output: 20 tokens x 4096 dims +encode_image_with_vision_chunks: step 1 of 1 encoded in 3538.25 ms +encode_image_with_vision_chunks: all 1 chunks encoded in 3560.67 ms (grid: 1x1) + +encode_image_with_vision_chunks: image encoded in 3560.68 ms by vision ( 3560.68 ms per chunk, 64 total tokens) +omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_cpp_cpu_v3\fixture_0001.jpg +stream_prefill: prefilled 1 vision chunks (64 tokens each) +audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000 +audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins +audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201 +audition_audio_preprocess: Generated 1 mel spectrogram chunk(s) +audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000 +build_whisper: Whisper encoder graph built (projector output, pre-pooling) +audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000 +audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=1, current_total=100, new_total=200, max_tokens=1500 +audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=200, max_tokens=1500) +audition_audio_batch_encode: Final output shape: [4096, 20] +audition_audio_batch_encode: Final output: 20 tokens x 4096 dims + +[timing] call=0 tokens=28 final=0 token2mel=3008.347ms vocoder=441.612ms total=3449.977ms audio=20160 +[timing] call=1 tokens=28 final=0 token2mel=2867.322ms vocoder=514.727ms total=3382.072ms audio=24000 +[timing] call=2 tokens=28 final=0 token2mel=2966.215ms vocoder=499.383ms total=3465.615ms audio=24000 +[timing] call=3 tokens=28 final=0 token2mel=2871.007ms vocoder=487.908ms total=3358.955ms audio=24000 +[timing] call=4 tokens=28 final=0 token2mel=2949.518ms vocoder=501.990ms total=3451.537ms audio=24000 +[timing] call=5 tokens=28 final=0 token2mel=2706.893ms vocoder=468.788ms total=3175.696ms audio=24000 +Waiting for audio generation to complete... +[timing] call=6 tokens=28 final=0 token2mel=2419.876ms vocoder=402.004ms total=2821.890ms audio=24000 +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_2.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_3.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_4.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_5.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_6.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_7.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_8.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_9.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_10.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_11.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_12.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_13.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_14.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_15.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_16.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_17.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_18.wav does not exist or is empty +TTS: no valid WAV files to merge +[timing] call=7 tokens=28 final=0 token2mel=1998.322ms vocoder=380.397ms total=2378.729ms audio=24000 +[timing] call=8 tokens=28 final=0 token2mel=1851.460ms vocoder=373.980ms total=2225.451ms audio=24000 +[timing] call=9 tokens=28 final=0 token2mel=1855.032ms vocoder=376.188ms total=2231.231ms audio=24000 +[timing] call=10 tokens=28 final=0 token2mel=1839.380ms vocoder=373.340ms total=2212.733ms audio=24000 +[timing] call=11 tokens=28 final=0 token2mel=1832.723ms vocoder=369.453ms total=2202.187ms audio=24000 +[timing] call=12 tokens=28 final=0 token2mel=1839.659ms vocoder=373.948ms total=2213.620ms audio=24000 +[timing] call=13 tokens=28 final=0 token2mel=1825.662ms vocoder=377.159ms total=2202.833ms audio=24000 +[timing] call=14 tokens=28 final=0 token2mel=1834.524ms vocoder=378.257ms total=2212.792ms audio=24000 +[timing] call=15 tokens=28 final=0 token2mel=1827.935ms vocoder=376.774ms total=2204.721ms audio=24000 +[timing] call=16 tokens=28 final=0 token2mel=1819.256ms vocoder=371.231ms total=2190.499ms audio=24000 +[timing] call=17 tokens=28 final=0 token2mel=1836.480ms vocoder=374.681ms total=2211.173ms audio=24000 +[timing] call=18 tokens=28 final=0 token2mel=1826.588ms vocoder=372.420ms total=2199.018ms audio=24000 +[timing] call=19 tokens=28 final=0 token2mel=1862.405ms vocoder=369.565ms total=2231.984ms audio=24000 +[timing] call=20 tokens=28 final=0 token2mel=1824.354ms vocoder=379.717ms total=2204.082ms audio=24000 +[timing] call=21 tokens=28 final=0 token2mel=1828.966ms vocoder=374.241ms total=2203.219ms audio=24000 +[timing] call=22 tokens=28 final=0 token2mel=1830.597ms vocoder=376.619ms total=2207.228ms audio=24000 +[timing] call=23 tokens=28 final=0 token2mel=1862.567ms vocoder=382.669ms total=2245.247ms audio=24000 +[timing] call=24 tokens=28 final=0 token2mel=1832.274ms vocoder=384.729ms total=2217.013ms audio=24000 +[timing] call=25 tokens=28 final=0 token2mel=1827.821ms vocoder=374.201ms total=2202.034ms audio=24000 +[timing] call=26 tokens=28 final=0 token2mel=1837.246ms vocoder=376.361ms total=2213.620ms audio=24000 +[timing] call=27 tokens=28 final=0 token2mel=1829.673ms vocoder=378.150ms total=2207.835ms audio=24000 +[timing] call=28 tokens=28 final=0 token2mel=1838.582ms vocoder=375.693ms total=2214.287ms audio=24000 +[timing] call=29 tokens=28 final=0 token2mel=1837.139ms vocoder=374.800ms total=2211.950ms audio=24000 +[timing] call=30 tokens=28 final=0 token2mel=1818.072ms vocoder=377.411ms total=2195.493ms audio=24000 +[timing] call=31 tokens=28 final=0 token2mel=1831.503ms vocoder=372.541ms total=2204.056ms audio=24000 +[timing] call=32 tokens=28 final=0 token2mel=1847.361ms vocoder=373.726ms total=2221.098ms audio=24000 +[timing] call=33 tokens=28 final=0 token2mel=1841.079ms vocoder=378.310ms total=2219.402ms audio=24000 +[timing] call=34 tokens=28 final=0 token2mel=1828.232ms vocoder=383.369ms total=2211.613ms audio=24000 +[timing] call=35 tokens=28 final=0 token2mel=1823.123ms vocoder=380.919ms total=2204.053ms audio=24000 +[timing] call=36 tokens=28 final=0 token2mel=1828.180ms vocoder=373.026ms total=2201.218ms audio=24000 +[timing] call=37 tokens=28 final=0 token2mel=1819.845ms vocoder=377.691ms total=2197.552ms audio=24000 +[timing] call=38 tokens=28 final=0 token2mel=1817.171ms vocoder=376.247ms total=2193.428ms audio=24000 +[timing] call=39 tokens=28 final=0 token2mel=1825.358ms vocoder=378.877ms total=2204.246ms audio=24000 +[timing] call=40 tokens=28 final=0 token2mel=1820.798ms vocoder=369.805ms total=2190.615ms audio=24000 +[timing] call=41 tokens=28 final=0 token2mel=1827.390ms vocoder=375.167ms total=2202.568ms audio=24000 +[timing] call=42 tokens=28 final=0 token2mel=1828.504ms vocoder=380.181ms total=2208.697ms audio=24000 +[timing] call=43 tokens=28 final=0 token2mel=1826.139ms vocoder=368.356ms total=2194.507ms audio=24000 +[timing] call=44 tokens=28 final=0 token2mel=1819.542ms vocoder=378.423ms total=2197.977ms audio=24000 +[timing] call=45 tokens=28 final=0 token2mel=1849.443ms vocoder=377.706ms total=2227.162ms audio=24000 +[timing] call=46 tokens=28 final=0 token2mel=1819.117ms vocoder=377.801ms total=2196.930ms audio=24000 +[timing] call=47 tokens=28 final=0 token2mel=1821.994ms vocoder=389.097ms total=2211.102ms audio=24000 +[timing] call=48 tokens=28 final=0 token2mel=1825.848ms vocoder=382.629ms total=2208.488ms audio=24000 +[timing] call=49 tokens=4 final=1 token2mel=1862.430ms vocoder=126.245ms total=1988.684ms audio=7680 +Audio generation completed. +llama_perf_context_print: load time = 14730.90 ms +llama_perf_context_print: prompt eval time = 13109.86 ms / 171 tokens ( 76.67 ms per token, 13.04 tokens per second) +llama_perf_context_print: eval time = 21868.63 ms / 177 runs ( 123.55 ms per token, 8.09 tokens per second) +llama_perf_context_print: total time = 134277.18 ms / 348 tokens +llama_perf_context_print: graphs reused = 177 +Token2Wav (C++): session released diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full.stdout.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full.stdout.log new file mode 100644 index 000000000..b86e787e8 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full.stdout.log @@ -0,0 +1,662 @@ +=== Model Paths === + Base dir: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf + LLM: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK] + Vision: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK] + Audio: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK] + TTS: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK] + Projector: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK] +=================== +=== Initializing Omni Context === + Media type: 2 (omni: audio+vision) + TTS enabled: yes + Context size: 2048 + GPU layers: 0 + Token2Wav device: cpu + Vision backend: metal + TTS bin dir: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/tts + Ref audio: C:\Users\zhout\w2\minicpmo_cpp_cpu_v3\default_ref_audio.wav +22:06:34.706 === omni_init start +22:06:34.706 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output +22:06:34.706 === omni_init: loading new LLM model +22:06:36.666 === omni_init: loading TTS model +22:06:36.666 TTS model: loading with n_gpu_layers=0 +22:06:36.921 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05 +22:06:36.921 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)... +22:06:37.318 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768] +22:06:37.323 TTS: head_code loaded, verifying first few values: +22:06:37.323 head_code_weight[0] = 0.01361084 (expect ~0.01385498) +22:06:37.323 head_code_weight[1] = -0.01660156 (expect ~-0.01647949) +22:06:37.323 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391) +22:06:37.394 TTS: weights loaded successfully +22:06:37.394 Projector: loading from C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf +22:06:37.400 Projector: loaded successfully +22:06:37.400 === omni_init: loading APM model +22:06:37.566 APM: init from C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf +22:06:37.887 Token2Wav: found models in C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/token2wav-gguf +22:06:37.887 Token2Wav: all model files found, initializing session... +22:06:37.887 Token2Wav: non-CUDA backend, vocoder using CPU for better performance +22:06:37.887 Token2Wav: using prompt_cache from C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf +22:06:38.287 Token2Wav: initialized successfully +22:06:38.287 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav +22:06:38.287 Token2Wav: 使用 C++ 实现 +22:06:38.287 === omni_init success: ctx_llama = 000002531cb7f960 +=== Running test case === + Audio prefix: C:\Users\zhout\w2\minicpmo_cpp_cpu_v3\fixture_ + Count: 2 +22:06:38.287 stream_prefill: n_past = 0 + voice_clone_prompt = <|im_start|>system +模仿音频样本的音色并生成新的内容。 +<|audio_start|> + assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|> +<|im_start|>user + +22:06:38.287 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_cpp_cpu_v3\fixture_0000.wav +22:06:39.442 system prompt ref_audio embedding: n_pos=20 +22:06:42.334 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除 +22:06:42.334 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill +22:06:42.334 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding) +22:06:42.334 n_past = 72 +22:06:42.334 + +c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048 + +prefill 0 (audio) : 4.04691 s +22:06:49.516 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_cpp_cpu_v3\fixture_0001.wav +22:06:49.712 stream_prefill(index=1): user audio embedding: n_pos=20 +22:06:50.867 + +c++ finish stream_prefill(index=1). n_past=161, n_keep=72, n_ctx=2048 + +prefill 1 (audio+vision) : 8.53188 s +22:06:50.867 📍 stream_decode 开始: n_past=161, n_keep=72, n_ctx=2048, duplex_mode=0 +22:06:50.867 stream_decode: create tts thread (simplex mode) +22:06:50.867 stream_decode: create t2w thread +22:06:50.867 wait prefill done +22:06:50.867 📍 [单工TTS] 添加 assistant prompt: "<|im_end|> +<|im_start|>assistant + + + + +<|tts_bos|>", n_past=161 +22:06:50.867 T2W thread (C++) started +22:06:50.870 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000 +22:06:50.870 TTS thread started +22:06:51.397 📍 [单工TTS] assistant prompt 完成, n_past=171 +22:06:51.397 LLM decode: max_tgt_len = 2048, n_predict = -1, n_ctx = 2048 +22:06:52.281 LLM->TTS: text='哎呀,这个问题挺有意思的!要是让我去', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[110030 104256 3837 105073 101174 113062 6313 104806 104029 85336] +22:06:52.281 TTS<-LLM: chunk_idx=0, text='哎呀,这个问题挺有意思的!要是让我去', n_tokens=10, hidden_size=40960, token_ids=[110030 104256 3837 105073 101174 113062 6313 104806 104029 85336] +22:06:52.281 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:06:52.281 TTS: before empty check - response.empty=0, response='哎呀,这个问题挺有意思的!要是让æˆ', llm_finish=0 +22:06:52.281 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:06:52.281 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:06:52.282 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:06:52.323 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt +22:06:52.324 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=10, tts_n_embd=768) +22:06:52.324 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=11) +22:06:52.324 TTS Simplex: first chunk - cleared KV cache +22:06:52.324 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer +22:06:52.430 TTS Simplex: prefill completed, n_past_tts=11 +22:06:52.430 TTS Simplex: sampler created +22:06:52.430 TTS simplex: is_audio_bos=true (first audio token) +22:06:52.472 TTS Simplex Phase1: token 1/500: rel_id=1490 +22:06:52.486 TTS Simplex Phase1: token 2/500: rel_id=4299 +22:06:52.499 TTS Simplex Phase1: token 3/500: rel_id=6486 +22:06:52.512 TTS Simplex Phase1: token 4/500: rel_id=4299 +22:06:52.527 TTS Simplex Phase1: token 5/500: rel_id=4299 +22:06:52.815 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25) +22:06:52.815 TTS Simplex Phase1: token 25/500: rel_id=2139 +22:06:52.815 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录 +22:06:52.815 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav +22:06:53.192 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 50, buffer=25) +22:06:53.192 TTS Simplex Phase1: token 50/500: rel_id=4607 +22:06:53.350 LLM->TTS: text='一个完全没去过的地方,那我肯定得', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[46944 100372 70927 112955 103958 3837 99212 35946 100736 49828] +22:06:53.407 TTS Simplex Phase1: EOS token at step 65 +22:06:53.407 TTS Simplex: chunk 结束,tts_token_buffer 剩余 14 tokens (保留等下一个 chunk) +22:06:53.407 TTS Simplex: generated 64 audio tokens for chunk 0 +22:06:53.407 TTS Simplex: chunk 0 first tokens: [1490 4299 6486 4299 4299 ], last tokens: [1945 4299 6486 6486 4299 ] +22:06:53.407 TTS Simplex: updated tts_n_past_accumulated=75, total_generated_tokens=64 +22:06:53.419 TTS<-LLM: chunk_idx=1, text='一个完全没去过的地方,那我肯定得', n_tokens=10, hidden_size=40960, token_ids=[46944 100372 70927 112955 103958 3837 99212 35946 100736 49828] +22:06:53.419 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:06:53.419 TTS: before empty check - response.empty=0, response='一个完全没去过的地方,那我肯定得', llm_finish=0 +22:06:53.419 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:06:53.419 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:06:53.419 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:06:53.460 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_1/merged_embeddings.txt +22:06:53.460 TTS Simplex: generating audio tokens for chunk 1 (n_tokens=10, tts_n_embd=768) +22:06:53.460 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=1, new_size=11) +22:06:53.460 TTS Simplex: chunk 1 - keeping KV cache, n_past_tts=75 +22:06:53.487 TTS Simplex: prefill completed, n_past_tts=86 +22:06:53.487 TTS Simplex: sampler created +22:06:53.506 TTS Simplex Phase1: token 1/500: rel_id=6486 +22:06:53.523 TTS Simplex Phase1: token 2/500: rel_id=6405 +22:06:53.537 TTS Simplex Phase1: token 3/500: rel_id=5838 +22:06:53.553 TTS Simplex Phase1: token 4/500: rel_id=5919 +22:06:53.569 TTS Simplex Phase1: token 5/500: rel_id=4218 +22:06:53.660 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 11, buffer=25) +22:06:53.883 TTS Simplex Phase1: token 25/500: rel_id=879 +22:06:54.057 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 36, buffer=25) +22:06:54.278 TTS Simplex Phase1: token 50/500: rel_id=5649 +22:06:54.447 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 61, buffer=25) +22:06:54.487 LLM->TTS: text='去北极啊!你想啊,那地方冰', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[85336 113081 103924 6313 107409 103924 3837 99212 100371 100038] +22:06:54.664 TTS Simplex Phase1: token 75/500: rel_id=5838 +22:06:54.768 TTS Simplex Phase1: EOS token at step 82 +22:06:54.768 TTS Simplex: chunk 结束,tts_token_buffer 剩余 20 tokens (保留等下一个 chunk) +22:06:54.768 TTS Simplex: generated 81 audio tokens for chunk 1 +22:06:54.768 TTS Simplex: chunk 1 first tokens: [6486 6405 5838 5919 4218 ], last tokens: [1545 1959 3750 19 5837 ] +22:06:54.768 TTS Simplex: updated tts_n_past_accumulated=167, total_generated_tokens=145 +22:06:54.770 TTS<-LLM: chunk_idx=2, text='去北极啊!你想啊,那地方冰', n_tokens=10, hidden_size=40960, token_ids=[85336 113081 103924 6313 107409 103924 3837 99212 100371 100038] +22:06:54.770 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:06:54.770 TTS: before empty check - response.empty=0, response='去北极啊!你想啊,那地方冰', llm_finish=0 +22:06:54.770 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:06:54.770 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:06:54.770 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:06:54.819 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_2/merged_embeddings.txt +22:06:54.819 TTS Simplex: generating audio tokens for chunk 2 (n_tokens=10, tts_n_embd=768) +22:06:54.819 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=2, new_size=11) +22:06:54.819 TTS Simplex: chunk 2 - keeping KV cache, n_past_tts=167 +22:06:54.848 TTS Simplex: prefill completed, n_past_tts=178 +22:06:54.848 TTS Simplex: sampler created +22:06:54.866 TTS Simplex Phase1: token 1/500: rel_id=497 +22:06:54.881 TTS Simplex Phase1: token 2/500: rel_id=701 +22:06:54.896 TTS Simplex Phase1: token 3/500: rel_id=2870 +22:06:54.911 TTS Simplex Phase1: token 4/500: rel_id=5086 +22:06:54.927 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 5, buffer=25) +22:06:54.927 TTS Simplex Phase1: token 5/500: rel_id=975 +22:06:55.273 TTS Simplex Phase1: token 25/500: rel_id=2085 +22:06:55.369 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 30, buffer=25) +22:06:55.746 TTS Simplex Phase1: token 50/500: rel_id=5402 +22:06:55.799 LLM->TTS: text='天雪地的,白茫茫的一片,', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[35727 100167 29490 9370 3837 99243 116059 99774 34718 3837] +22:06:55.836 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 55, buffer=25) +22:06:56.075 TTS Simplex Phase1: EOS token at step 68 +22:06:56.075 TTS Simplex: chunk 结束,tts_token_buffer 剩余 12 tokens (保留等下一个 chunk) +22:06:56.075 TTS Simplex: generated 67 audio tokens for chunk 2 +22:06:56.075 TTS Simplex: chunk 2 first tokens: [497 701 2870 5086 975 ], last tokens: [3972 3648 5835 5838 1458 ] +22:06:56.075 TTS Simplex: updated tts_n_past_accumulated=245, total_generated_tokens=212 +22:06:56.079 TTS<-LLM: chunk_idx=3, text='天雪地的,白茫茫的一片,', n_tokens=10, hidden_size=40960, token_ids=[35727 100167 29490 9370 3837 99243 116059 99774 34718 3837] +22:06:56.079 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:06:56.079 TTS: before empty check - response.empty=0, response='天雪地的,白茫茫的一片,', llm_finish=0 +22:06:56.079 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:06:56.079 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:06:56.079 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:06:56.133 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_3/merged_embeddings.txt +22:06:56.133 TTS Simplex: generating audio tokens for chunk 3 (n_tokens=10, tts_n_embd=768) +22:06:56.133 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=3, new_size=11) +22:06:56.133 TTS Simplex: chunk 3 - keeping KV cache, n_past_tts=245 +22:06:56.176 TTS Simplex: prefill completed, n_past_tts=256 +22:06:56.176 TTS Simplex: sampler created +22:06:56.199 TTS Simplex Phase1: token 1/500: rel_id=4299 +22:06:56.220 TTS Simplex Phase1: token 2/500: rel_id=3909 +22:06:56.245 TTS Simplex Phase1: token 3/500: rel_id=5850 +22:06:56.266 TTS Simplex Phase1: token 4/500: rel_id=4459 +22:06:56.267 🎉 首响时间 (First Audio Response): 5400ms +22:06:56.267 T2W线程: wav_0.wav | 0.84s audio | 3450.0ms inference | RTF=4.11 | t=5400ms +22:06:56.284 TTS Simplex Phase1: token 5/500: rel_id=4409 +22:06:56.414 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 13, buffer=25) +22:06:56.610 TTS Simplex Phase1: token 25/500: rel_id=4507 +22:06:56.826 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 38, buffer=25) +22:06:57.036 TTS Simplex Phase1: token 50/500: rel_id=4570 +22:06:57.040 LLM->TTS: text='连路都没有,走路都得小心翼翼的。', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[54926 45995 104338 3837 109214 71268 49828 114890 9370 1773] +22:06:57.197 TTS Simplex Phase1: EOS token at step 60 +22:06:57.197 TTS Simplex: chunk 结束,tts_token_buffer 剩余 21 tokens (保留等下一个 chunk) +22:06:57.197 TTS Simplex: generated 59 audio tokens for chunk 3 +22:06:57.197 TTS Simplex: chunk 3 first tokens: [4299 3909 5850 4459 4409 ], last tokens: [4314 2855 3404 4871 3987 ] +22:06:57.197 TTS Simplex: updated tts_n_past_accumulated=315, total_generated_tokens=271 +22:06:57.199 TTS<-LLM: chunk_idx=4, text='连路都没有,走路都得小心翼翼的。', n_tokens=10, hidden_size=40960, token_ids=[54926 45995 104338 3837 109214 71268 49828 114890 9370 1773] +22:06:57.199 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:06:57.199 TTS: before empty check - response.empty=0, response='连路都没有,走路都得小心翼翼的。', llm_finish=0 +22:06:57.199 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:06:57.199 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:06:57.199 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:06:57.244 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_4/merged_embeddings.txt +22:06:57.244 TTS Simplex: generating audio tokens for chunk 4 (n_tokens=10, tts_n_embd=768) +22:06:57.244 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=4, new_size=11) +22:06:57.244 TTS Simplex: chunk 4 - keeping KV cache, n_past_tts=315 +22:06:57.283 TTS Simplex: prefill completed, n_past_tts=326 +22:06:57.283 TTS Simplex: sampler created +22:06:57.300 TTS Simplex Phase1: token 1/500: rel_id=2234 +22:06:57.316 TTS Simplex Phase1: token 2/500: rel_id=4769 +22:06:57.332 TTS Simplex Phase1: token 3/500: rel_id=3455 +22:06:57.347 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 4, buffer=25) +22:06:57.347 TTS Simplex Phase1: token 4/500: rel_id=1268 +22:06:57.364 TTS Simplex Phase1: token 5/500: rel_id=4778 +22:06:57.709 TTS Simplex Phase1: token 25/500: rel_id=5958 +22:06:57.774 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 29, buffer=25) +22:06:58.116 TTS Simplex Phase1: token 50/500: rel_id=2112 +22:06:58.186 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 54, buffer=25) +22:06:58.276 LLM->TTS: text='但你说这地方多刺激!穿厚厚的羽', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[77288 105665 43288 100371 42140 104313 6313 99621 118100 101433] +22:06:58.446 TTS Simplex Phase1: EOS token at step 70 +22:06:58.446 TTS Simplex: chunk 结束,tts_token_buffer 剩余 15 tokens (保留等下一个 chunk) +22:06:58.446 TTS Simplex: generated 69 audio tokens for chunk 4 +22:06:58.446 TTS Simplex: chunk 4 first tokens: [2234 4769 3455 1268 4778 ], last tokens: [2264 4841 4417 5402 2212 ] +22:06:58.446 TTS Simplex: updated tts_n_past_accumulated=395, total_generated_tokens=340 +22:06:58.458 TTS<-LLM: chunk_idx=5, text='但你说这地方多刺激!穿厚厚的羽', n_tokens=10, hidden_size=40960, token_ids=[77288 105665 43288 100371 42140 104313 6313 99621 118100 101433] +22:06:58.458 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:06:58.458 TTS: before empty check - response.empty=0, response='但你说这地方多刺激!穿厚厚的羽', llm_finish=0 +22:06:58.458 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:06:58.458 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:06:58.458 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:06:58.505 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_5/merged_embeddings.txt +22:06:58.505 TTS Simplex: generating audio tokens for chunk 5 (n_tokens=10, tts_n_embd=768) +22:06:58.505 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=5, new_size=11) +22:06:58.505 TTS Simplex: chunk 5 - keeping KV cache, n_past_tts=395 +22:06:58.551 TTS Simplex: prefill completed, n_past_tts=406 +22:06:58.551 TTS Simplex: sampler created +22:06:58.575 TTS Simplex Phase1: token 1/500: rel_id=1217 +22:06:58.597 TTS Simplex Phase1: token 2/500: rel_id=272 +22:06:58.617 TTS Simplex Phase1: token 3/500: rel_id=5170 +22:06:58.639 TTS Simplex Phase1: token 4/500: rel_id=6374 +22:06:58.658 TTS Simplex Phase1: token 5/500: rel_id=321 +22:06:58.759 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 10, buffer=25) +22:06:59.073 TTS Simplex Phase1: token 25/500: rel_id=3648 +22:06:59.291 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 35, buffer=25) +22:06:59.610 TTS Simplex Phase1: token 50/500: rel_id=2764 +22:06:59.651 T2W线程: wav_1.wav | 1.00s audio | 3382.1ms inference | RTF=3.38 | t=8783ms +22:06:59.686 LLM->TTS: text='绒服,戴上防风手套,脚底下', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[108040 43209 3837 113142 99287 99208 113739 3837 100037 109237] +22:06:59.791 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 60, buffer=25) +22:07:00.057 TTS Simplex Phase1: token 75/500: rel_id=6048 +22:07:00.060 TTS Simplex Phase1: EOS token at step 76 +22:07:00.060 TTS Simplex: chunk 结束,tts_token_buffer 剩余 15 tokens (保留等下一个 chunk) +22:07:00.060 TTS Simplex: generated 75 audio tokens for chunk 5 +22:07:00.060 TTS Simplex: chunk 5 first tokens: [1217 272 5170 6374 321 ], last tokens: [6486 4299 4299 1518 6048 ] +22:07:00.060 TTS Simplex: updated tts_n_past_accumulated=481, total_generated_tokens=415 +22:07:00.062 TTS<-LLM: chunk_idx=6, text='绒服,戴上防风手套,脚底下', n_tokens=10, hidden_size=40960, token_ids=[108040 43209 3837 113142 99287 99208 113739 3837 100037 109237] +22:07:00.062 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:00.062 TTS: before empty check - response.empty=0, response='绒服,戴上防风手套,脚底下', llm_finish=0 +22:07:00.062 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:00.062 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:00.062 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:00.101 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_6/merged_embeddings.txt +22:07:00.101 TTS Simplex: generating audio tokens for chunk 6 (n_tokens=10, tts_n_embd=768) +22:07:00.101 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=6, new_size=11) +22:07:00.101 TTS Simplex: chunk 6 - keeping KV cache, n_past_tts=481 +22:07:00.140 TTS Simplex: prefill completed, n_past_tts=492 +22:07:00.141 TTS Simplex: sampler created +22:07:00.158 TTS Simplex Phase1: token 1/500: rel_id=1377 +22:07:00.174 TTS Simplex Phase1: token 2/500: rel_id=3898 +22:07:00.190 TTS Simplex Phase1: token 3/500: rel_id=2513 +22:07:00.208 TTS Simplex Phase1: token 4/500: rel_id=4961 +22:07:00.223 TTS Simplex Phase1: token 5/500: rel_id=4869 +22:07:00.307 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 10, buffer=25) +22:07:00.570 TTS Simplex Phase1: token 25/500: rel_id=6507 +22:07:00.762 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 35, buffer=25) +22:07:00.890 LLM->TTS: text='踩着雪板或者雪鞋,一步一步往前', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[105541 99164 100167 87531 100631 100167 102097 3837 117719 114796] +22:07:01.042 TTS Simplex Phase1: token 50/500: rel_id=6453 +22:07:01.217 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 60, buffer=25) +22:07:01.295 TTS Simplex Phase1: EOS token at step 65 +22:07:01.295 TTS Simplex: chunk 结束,tts_token_buffer 剩余 4 tokens (保留等下一个 chunk) +22:07:01.295 TTS Simplex: generated 64 audio tokens for chunk 6 +22:07:01.295 TTS Simplex: chunk 6 first tokens: [1377 3898 2513 4961 4869 ], last tokens: [5832 6084 4780 5672 3494 ] +22:07:01.295 TTS Simplex: updated tts_n_past_accumulated=556, total_generated_tokens=479 +22:07:01.296 TTS<-LLM: chunk_idx=7, text='踩着雪板或者雪鞋,一步一步往前', n_tokens=10, hidden_size=40960, token_ids=[105541 99164 100167 87531 100631 100167 102097 3837 117719 114796] +22:07:01.296 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:01.296 TTS: before empty check - response.empty=0, response='踩着雪板或者雪鞋,一步一步往前', llm_finish=0 +22:07:01.296 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:01.296 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:01.296 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:01.337 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_7/merged_embeddings.txt +22:07:01.337 TTS Simplex: generating audio tokens for chunk 7 (n_tokens=10, tts_n_embd=768) +22:07:01.337 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=7, new_size=11) +22:07:01.337 TTS Simplex: chunk 7 - keeping KV cache, n_past_tts=556 +22:07:01.386 TTS Simplex: prefill completed, n_past_tts=567 +22:07:01.386 TTS Simplex: sampler created +22:07:01.407 TTS Simplex Phase1: token 1/500: rel_id=4224 +22:07:01.425 TTS Simplex Phase1: token 2/500: rel_id=4218 +22:07:01.445 TTS Simplex Phase1: token 3/500: rel_id=3888 +22:07:01.463 TTS Simplex Phase1: token 4/500: rel_id=5835 +22:07:01.482 TTS Simplex Phase1: token 5/500: rel_id=5838 +22:07:01.765 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 21, buffer=25) +22:07:01.839 TTS Simplex Phase1: token 25/500: rel_id=3658 +22:07:02.159 LLM->TTS: text='挪,呼哧呼哧喘着粗气', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[103477 3837 99592 120367 99592 120367 103425 99164 102187 99180] +22:07:02.287 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 46, buffer=25) +22:07:02.377 TTS Simplex Phase1: token 50/500: rel_id=71 +22:07:02.539 TTS Simplex Phase1: EOS token at step 58 +22:07:02.539 TTS Simplex: chunk 结束,tts_token_buffer 剩余 11 tokens (保留等下一个 chunk) +22:07:02.539 TTS Simplex: generated 57 audio tokens for chunk 7 +22:07:02.539 TTS Simplex: chunk 7 first tokens: [4224 4218 3888 5835 5838 ], last tokens: [4678 1295 314 35 4540 ] +22:07:02.539 TTS Simplex: updated tts_n_past_accumulated=624, total_generated_tokens=536 +22:07:02.542 TTS<-LLM: chunk_idx=8, text='挪,呼哧呼哧喘着粗气', n_tokens=10, hidden_size=40960, token_ids=[103477 3837 99592 120367 99592 120367 103425 99164 102187 99180] +22:07:02.542 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:02.542 TTS: before empty check - response.empty=0, response='挪,呼哧呼哧喘着粗气', llm_finish=0 +22:07:02.542 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:02.542 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:02.542 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:02.591 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_8/merged_embeddings.txt +22:07:02.591 TTS Simplex: generating audio tokens for chunk 8 (n_tokens=10, tts_n_embd=768) +22:07:02.591 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=8, new_size=11) +22:07:02.591 TTS Simplex: chunk 8 - keeping KV cache, n_past_tts=624 +22:07:02.643 TTS Simplex: prefill completed, n_past_tts=635 +22:07:02.643 TTS Simplex: sampler created +22:07:02.668 TTS Simplex Phase1: token 1/500: rel_id=3009 +22:07:02.692 TTS Simplex Phase1: token 2/500: rel_id=1707 +22:07:02.712 TTS Simplex Phase1: token 3/500: rel_id=5838 +22:07:02.737 TTS Simplex Phase1: token 4/500: rel_id=5109 +22:07:02.758 TTS Simplex Phase1: token 5/500: rel_id=2922 +22:07:02.965 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 14, buffer=25) +22:07:03.118 T2W线程: wav_2.wav | 1.00s audio | 3465.6ms inference | RTF=3.47 | t=12250ms +22:07:03.198 TTS Simplex Phase1: token 25/500: rel_id=3599 +22:07:03.466 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 39, buffer=25) +22:07:03.534 LLM->TTS: text='。抬头看天,全是星星,连北极', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[1773 108149 50930 35727 3837 108743 109014 3837 54926 113081] +22:07:03.671 TTS Simplex Phase1: token 50/500: rel_id=3579 +22:07:03.928 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 64, buffer=25) +22:07:04.076 TTS Simplex Phase1: EOS token at step 73 +22:07:04.076 TTS Simplex: chunk 结束,tts_token_buffer 剩余 8 tokens (保留等下一个 chunk) +22:07:04.076 TTS Simplex: generated 72 audio tokens for chunk 8 +22:07:04.076 TTS Simplex: chunk 8 first tokens: [3009 1707 5838 5109 2922 ], last tokens: [3144 5970 4293 3493 1541 ] +22:07:04.076 TTS Simplex: updated tts_n_past_accumulated=707, total_generated_tokens=608 +22:07:04.078 TTS<-LLM: chunk_idx=9, text='。抬头看天,全是星星,连北极', n_tokens=10, hidden_size=40960, token_ids=[1773 108149 50930 35727 3837 108743 109014 3837 54926 113081] +22:07:04.078 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:04.078 TTS: before empty check - response.empty=0, response='。抬头看天,全是星星,连北极', llm_finish=0 +22:07:04.078 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:04.078 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:04.078 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:04.125 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_9/merged_embeddings.txt +22:07:04.125 TTS Simplex: generating audio tokens for chunk 9 (n_tokens=10, tts_n_embd=768) +22:07:04.125 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=9, new_size=11) +22:07:04.125 TTS Simplex: chunk 9 - keeping KV cache, n_past_tts=707 +22:07:04.174 TTS Simplex: prefill completed, n_past_tts=718 +22:07:04.174 TTS Simplex: sampler created +22:07:04.193 TTS Simplex Phase1: token 1/500: rel_id=1645 +22:07:04.210 TTS Simplex Phase1: token 2/500: rel_id=1605 +22:07:04.229 TTS Simplex Phase1: token 3/500: rel_id=140 +22:07:04.248 TTS Simplex Phase1: token 4/500: rel_id=3468 +22:07:04.267 TTS Simplex Phase1: token 5/500: rel_id=4915 +22:07:04.501 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 17, buffer=25) +22:07:04.649 TTS Simplex Phase1: token 25/500: rel_id=4299 +22:07:04.729 LLM->TTS: text='光都能看见,那叫一个美!不过', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[99225 104297 104356 3837 99212 99882 46944 57566 6313 100632] +22:07:04.967 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 42, buffer=25) +22:07:05.113 TTS Simplex Phase1: token 50/500: rel_id=6486 +22:07:05.463 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 67, buffer=25) +22:07:05.467 TTS Simplex Phase1: EOS token at step 68 +22:07:05.467 TTS Simplex: chunk 结束,tts_token_buffer 剩余 0 tokens (保留等下一个 chunk) +22:07:05.467 TTS Simplex: generated 67 audio tokens for chunk 9 +22:07:05.467 TTS Simplex: chunk 9 first tokens: [1645 1605 140 3468 4915 ], last tokens: [4509 4615 4444 5645 5645 ] +22:07:05.467 TTS Simplex: updated tts_n_past_accumulated=785, total_generated_tokens=675 +22:07:05.468 TTS<-LLM: chunk_idx=10, text='光都能看见,那叫一个美!不过', n_tokens=10, hidden_size=40960, token_ids=[99225 104297 104356 3837 99212 99882 46944 57566 6313 100632] +22:07:05.468 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:05.468 TTS: before empty check - response.empty=0, response='光都能看见,那叫一个美!不过', llm_finish=0 +22:07:05.469 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:05.469 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:05.469 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:05.512 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_10/merged_embeddings.txt +22:07:05.512 TTS Simplex: generating audio tokens for chunk 10 (n_tokens=10, tts_n_embd=768) +22:07:05.512 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=10, new_size=11) +22:07:05.512 TTS Simplex: chunk 10 - keeping KV cache, n_past_tts=785 +22:07:05.569 TTS Simplex: prefill completed, n_past_tts=796 +22:07:05.569 TTS Simplex: sampler created +22:07:05.595 TTS Simplex Phase1: token 1/500: rel_id=322 +22:07:05.615 TTS Simplex Phase1: token 2/500: rel_id=4967 +22:07:05.640 TTS Simplex Phase1: token 3/500: rel_id=6098 +22:07:05.660 TTS Simplex Phase1: token 4/500: rel_id=5534 +22:07:05.679 TTS Simplex Phase1: token 5/500: rel_id=4444 +22:07:06.070 LLM->TTS: text='呢,也挺难的,吃饭得靠', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[101036 3837 74763 101174 99349 9370 3837 104636 49828 99904] +22:07:06.117 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25) +22:07:06.117 TTS Simplex Phase1: token 25/500: rel_id=2381 +22:07:06.488 T2W线程: wav_3.wav | 1.00s audio | 3359.0ms inference | RTF=3.36 | t=15621ms +22:07:06.673 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 50, buffer=25) +22:07:06.673 TTS Simplex Phase1: token 50/500: rel_id=751 +22:07:07.175 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 75, buffer=25) +22:07:07.175 TTS Simplex Phase1: token 75/500: rel_id=5669 +22:07:07.281 TTS Simplex Phase1: EOS token at step 81 +22:07:07.281 TTS Simplex: chunk 结束,tts_token_buffer 剩余 5 tokens (保留等下一个 chunk) +22:07:07.281 TTS Simplex: generated 80 audio tokens for chunk 10 +22:07:07.281 TTS Simplex: chunk 10 first tokens: [322 4967 6098 5534 4444 ], last tokens: [1456 183 5078 4311 4068 ] +22:07:07.281 TTS Simplex: updated tts_n_past_accumulated=876, total_generated_tokens=755 +22:07:07.282 TTS<-LLM: chunk_idx=11, text='呢,也挺难的,吃饭得靠', n_tokens=10, hidden_size=40960, token_ids=[101036 3837 74763 101174 99349 9370 3837 104636 49828 99904] +22:07:07.282 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:07.282 TTS: before empty check - response.empty=0, response='呢,也挺难的,吃饭得靠', llm_finish=0 +22:07:07.282 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:07.282 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:07.282 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:07.326 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_11/merged_embeddings.txt +22:07:07.326 TTS Simplex: generating audio tokens for chunk 11 (n_tokens=10, tts_n_embd=768) +22:07:07.326 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=11, new_size=11) +22:07:07.326 TTS Simplex: chunk 11 - keeping KV cache, n_past_tts=876 +22:07:07.369 LLM->TTS: text='口哨,因为风声太大,说话听', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[39426 109760 3837 99519 99208 70074 102791 3837 104283 49187] +22:07:07.384 TTS Simplex: prefill completed, n_past_tts=887 +22:07:07.384 TTS Simplex: sampler created +22:07:07.406 TTS Simplex Phase1: token 1/500: rel_id=2273 +22:07:07.427 TTS Simplex Phase1: token 2/500: rel_id=8 +22:07:07.447 TTS Simplex Phase1: token 3/500: rel_id=278 +22:07:07.468 TTS Simplex Phase1: token 4/500: rel_id=386 +22:07:07.489 TTS Simplex Phase1: token 5/500: rel_id=1115 +22:07:07.792 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 20, buffer=25) +22:07:07.894 TTS Simplex Phase1: token 25/500: rel_id=4862 +22:07:08.301 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 45, buffer=25) +22:07:08.404 TTS Simplex Phase1: token 50/500: rel_id=1833 +22:07:08.611 LLM->TTS: text='不清。坐那儿吃点热汤,暖', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[106122 1773 99901 112358 99405 27442 99259 102022 3837 99856] +22:07:08.684 TTS Simplex Phase1: EOS token at step 66 +22:07:08.684 TTS Simplex: chunk 结束,tts_token_buffer 剩余 20 tokens (保留等下一个 chunk) +22:07:08.684 TTS Simplex: generated 65 audio tokens for chunk 11 +22:07:08.684 TTS Simplex: chunk 11 first tokens: [2273 8 278 386 1115 ], last tokens: [2922 2112 2949 6048 5319 ] +22:07:08.684 TTS Simplex: updated tts_n_past_accumulated=952, total_generated_tokens=820 +22:07:08.694 TTS<-LLM: chunk_idx=12, text='口哨,因为风声太大,说话听', n_tokens=10, hidden_size=40960, token_ids=[39426 109760 3837 99519 99208 70074 102791 3837 104283 49187] +22:07:08.694 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:08.694 TTS: before empty check - response.empty=0, response='口哨,因为风声太大,说话听', llm_finish=0 +22:07:08.695 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:08.695 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:08.695 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:08.740 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_12/merged_embeddings.txt +22:07:08.741 TTS Simplex: generating audio tokens for chunk 12 (n_tokens=10, tts_n_embd=768) +22:07:08.741 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=12, new_size=11) +22:07:08.741 TTS Simplex: chunk 12 - keeping KV cache, n_past_tts=952 +22:07:08.805 TTS Simplex: prefill completed, n_past_tts=963 +22:07:08.805 TTS Simplex: sampler created +22:07:08.827 TTS Simplex Phase1: token 1/500: rel_id=795 +22:07:08.850 TTS Simplex Phase1: token 2/500: rel_id=3875 +22:07:08.876 TTS Simplex Phase1: token 3/500: rel_id=4275 +22:07:08.899 TTS Simplex Phase1: token 4/500: rel_id=6534 +22:07:08.920 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 5, buffer=25) +22:07:08.920 TTS Simplex Phase1: token 5/500: rel_id=5510 +22:07:09.411 TTS Simplex Phase1: token 25/500: rel_id=5294 +22:07:09.521 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 30, buffer=25) +22:07:09.941 T2W线程: wav_4.wav | 1.00s audio | 3451.6ms inference | RTF=3.45 | t=19074ms +22:07:10.007 TTS Simplex Phase1: token 50/500: rel_id=5962 +22:07:10.087 LLM->TTS: text='暖身子,再看看远处的冰山,', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[99856 108233 3837 87256 101997 103388 9370 100038 57811 3837] +22:07:10.101 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 55, buffer=25) +22:07:10.245 TTS Simplex Phase1: EOS token at step 66 +22:07:10.245 TTS Simplex: chunk 结束,tts_token_buffer 剩余 10 tokens (保留等下一个 chunk) +22:07:10.245 TTS Simplex: generated 65 audio tokens for chunk 12 +22:07:10.245 TTS Simplex: chunk 12 first tokens: [795 3875 4275 6534 5510 ], last tokens: [2249 876 549 5192 6077 ] +22:07:10.245 TTS Simplex: updated tts_n_past_accumulated=1028, total_generated_tokens=885 +22:07:10.255 TTS<-LLM: chunk_idx=13, text='不清。坐那儿吃点热汤,暖', n_tokens=10, hidden_size=40960, token_ids=[106122 1773 99901 112358 99405 27442 99259 102022 3837 99856] +22:07:10.255 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:10.255 TTS: before empty check - response.empty=0, response='不清。坐那儿吃点热汤,暖', llm_finish=0 +22:07:10.255 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:10.255 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:10.255 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:10.300 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_13/merged_embeddings.txt +22:07:10.300 TTS Simplex: generating audio tokens for chunk 13 (n_tokens=10, tts_n_embd=768) +22:07:10.300 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=13, new_size=11) +22:07:10.300 TTS Simplex: chunk 13 - keeping KV cache, n_past_tts=1028 +22:07:10.362 TTS Simplex: prefill completed, n_past_tts=1039 +22:07:10.362 TTS Simplex: sampler created +22:07:10.382 TTS Simplex Phase1: token 1/500: rel_id=3890 +22:07:10.401 TTS Simplex Phase1: token 2/500: rel_id=1703 +22:07:10.422 TTS Simplex Phase1: token 3/500: rel_id=3889 +22:07:10.439 TTS Simplex Phase1: token 4/500: rel_id=2025 +22:07:10.460 TTS Simplex Phase1: token 5/500: rel_id=3648 +22:07:10.651 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 15, buffer=25) +22:07:10.847 TTS Simplex Phase1: token 25/500: rel_id=3603 +22:07:11.138 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 40, buffer=25) +22:07:11.335 TTS Simplex Phase1: token 50/500: rel_id=2459 +22:07:11.380 LLM->TTS: text='那才叫过瘾!你说这地方荒', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[99212 99306 99882 38182 108886 6313 105665 43288 100371 101293] +22:07:11.553 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 65, buffer=25) +22:07:11.600 TTS Simplex Phase1: EOS token at step 69 +22:07:11.600 TTS Simplex: chunk 结束,tts_token_buffer 剩余 3 tokens (保留等下一个 chunk) +22:07:11.600 TTS Simplex: generated 68 audio tokens for chunk 13 +22:07:11.600 TTS Simplex: chunk 13 first tokens: [3890 1703 3889 2025 3648 ], last tokens: [881 3714 6069 4852 2216 ] +22:07:11.600 TTS Simplex: updated tts_n_past_accumulated=1107, total_generated_tokens=953 +22:07:11.601 TTS<-LLM: chunk_idx=14, text='暖身子,再看看远处的冰山,', n_tokens=10, hidden_size=40960, token_ids=[99856 108233 3837 87256 101997 103388 9370 100038 57811 3837] +22:07:11.601 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:11.601 TTS: before empty check - response.empty=0, response='暖身子,再看看远处的冰山,', llm_finish=0 +22:07:11.601 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:11.601 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:11.601 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:11.642 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_14/merged_embeddings.txt +22:07:11.642 TTS Simplex: generating audio tokens for chunk 14 (n_tokens=10, tts_n_embd=768) +22:07:11.642 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=14, new_size=11) +22:07:11.642 TTS Simplex: chunk 14 - keeping KV cache, n_past_tts=1107 +22:07:11.710 TTS Simplex: prefill completed, n_past_tts=1118 +22:07:11.710 TTS Simplex: sampler created +22:07:11.730 TTS Simplex Phase1: token 1/500: rel_id=1275 +22:07:11.747 TTS Simplex Phase1: token 2/500: rel_id=2187 +22:07:11.767 TTS Simplex Phase1: token 3/500: rel_id=6075 +22:07:11.785 TTS Simplex Phase1: token 4/500: rel_id=6086 +22:07:11.803 TTS Simplex Phase1: token 5/500: rel_id=5672 +22:07:12.201 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 22, buffer=25) +22:07:12.277 TTS Simplex Phase1: token 25/500: rel_id=5322 +22:07:12.828 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 47, buffer=25) +22:07:12.906 TTS Simplex Phase1: token 50/500: rel_id=1725 +22:07:12.998 LLM->TTS: text='不荒?可就是这荒,才让人', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[16530 101293 11319 30440 99486 43288 101293 3837 99306 103973] +22:07:13.118 T2W线程: wav_5.wav | 1.00s audio | 3175.7ms inference | RTF=3.18 | t=22250ms +22:07:13.219 TTS Simplex Phase1: EOS token at step 68 +22:07:13.219 TTS Simplex: chunk 结束,tts_token_buffer 剩余 20 tokens (保留等下一个 chunk) +22:07:13.219 TTS Simplex: generated 67 audio tokens for chunk 14 +22:07:13.219 TTS Simplex: chunk 14 first tokens: [1275 2187 6075 6086 5672 ], last tokens: [1125 306 2243 2163 1686 ] +22:07:13.219 TTS Simplex: updated tts_n_past_accumulated=1185, total_generated_tokens=1020 +22:07:13.220 TTS<-LLM: chunk_idx=15, text='那才叫过瘾!你说这地方荒', n_tokens=10, hidden_size=40960, token_ids=[99212 99306 99882 38182 108886 6313 105665 43288 100371 101293] +22:07:13.220 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:13.220 TTS: before empty check - response.empty=0, response='那才叫过瘾!你说这地方荒', llm_finish=0 +22:07:13.220 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:13.220 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:13.220 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:13.258 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_15/merged_embeddings.txt +22:07:13.259 TTS Simplex: generating audio tokens for chunk 15 (n_tokens=10, tts_n_embd=768) +22:07:13.259 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=15, new_size=11) +22:07:13.259 TTS Simplex: chunk 15 - keeping KV cache, n_past_tts=1185 +22:07:13.332 TTS Simplex: prefill completed, n_past_tts=1196 +22:07:13.332 TTS Simplex: sampler created +22:07:13.352 TTS Simplex Phase1: token 1/500: rel_id=5021 +22:07:13.369 TTS Simplex Phase1: token 2/500: rel_id=4967 +22:07:13.389 TTS Simplex Phase1: token 3/500: rel_id=6424 +22:07:13.409 TTS Simplex Phase1: token 4/500: rel_id=5560 +22:07:13.429 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 5, buffer=25) +22:07:13.429 TTS Simplex Phase1: token 5/500: rel_id=6048 +22:07:13.834 TTS Simplex Phase1: token 25/500: rel_id=138 +22:07:13.939 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 30, buffer=25) +22:07:14.017 LLM: detected end token, set llm_generation_done=true +22:07:14.017 LLM->TTS: text='觉得活着真痛快!', n_tokens=6, hidden_size=24576, n_embd=4096, token_ids=[99801 107473 88051 100406 99234 6313] +22:07:14.245 TTS Simplex Phase1: token 50/500: rel_id=6486 +22:07:14.320 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 55, buffer=25) +22:07:14.586 TTS Simplex Phase1: EOS token at step 74 +22:07:14.586 TTS Simplex: chunk 结束,tts_token_buffer 剩余 18 tokens (保留等下一个 chunk) +22:07:14.586 TTS Simplex: generated 73 audio tokens for chunk 15 +22:07:14.586 TTS Simplex: chunk 15 first tokens: [5021 4967 6424 5560 6048 ], last tokens: [5023 3159 1704 5835 735 ] +22:07:14.586 TTS Simplex: updated tts_n_past_accumulated=1269, total_generated_tokens=1093 +22:07:14.596 TTS<-LLM: chunk_idx=16, text='不荒?可就是这荒,才让人', n_tokens=10, hidden_size=40960, token_ids=[16530 101293 11319 30440 99486 43288 101293 3837 99306 103973] +22:07:14.596 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +22:07:14.596 TTS: before empty check - response.empty=0, response='不荒?可就是这荒,才让人', llm_finish=0 +22:07:14.596 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +22:07:14.596 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +22:07:14.596 📍 Decode 结束: n_past=348, 剩余空间=1700, 无需滑窗 +22:07:14.596 📍 轮次 1 结束,记录边界于 n_past=348 +22:07:14.596 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +22:07:14.635 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_16/merged_embeddings.txt +22:07:14.635 TTS Simplex: generating audio tokens for chunk 16 (n_tokens=10, tts_n_embd=768) +22:07:14.635 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=16, new_size=11) +22:07:14.635 TTS Simplex: chunk 16 - keeping KV cache, n_past_tts=1269 +22:07:14.702 TTS Simplex: prefill completed, n_past_tts=1280 +22:07:14.702 TTS Simplex: sampler created +22:07:14.721 TTS Simplex Phase1: token 1/500: rel_id=2112 +22:07:14.740 TTS Simplex Phase1: token 2/500: rel_id=4515 +22:07:14.758 TTS Simplex Phase1: token 3/500: rel_id=957 +22:07:14.774 TTS Simplex Phase1: token 4/500: rel_id=2327 +22:07:14.793 TTS Simplex Phase1: token 5/500: rel_id=1680 +22:07:14.831 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 7, buffer=25) +22:07:15.001 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=353 +22:07:15.152 TTS Simplex Phase1: token 25/500: rel_id=728 +22:07:15.275 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 32, buffer=25) +22:07:15.591 TTS Simplex Phase1: token 50/500: rel_id=5092 +22:07:15.722 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 57, buffer=25) +22:07:15.916 TTS Simplex Phase1: EOS token at step 68 +22:07:15.916 TTS Simplex: chunk 结束,tts_token_buffer 剩余 10 tokens (保留等下一个 chunk) +22:07:15.916 TTS Simplex: generated 67 audio tokens for chunk 16 +22:07:15.916 TTS Simplex: chunk 16 first tokens: [2112 4515 957 2327 1680 ], last tokens: [5759 4865 4871 4961 1957 ] +22:07:15.916 TTS Simplex: updated tts_n_past_accumulated=1347, total_generated_tokens=1160 +22:07:15.917 TTS<-LLM: chunk_idx=17, text='觉得活着真痛快!', n_tokens=6, hidden_size=24576, token_ids=[99801 107473 88051 100406 99234 6313] +22:07:15.917 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=6 +22:07:15.917 TTS: before empty check - response.empty=0, response='觉得活着真痛快!', llm_finish=1 +22:07:15.917 TTS: DEBUG before has_llm_data - token_ids.size=6, hidden_states.size=24576, n_embd=4096 +22:07:15.917 TTS: has_llm_data=1, token_ids=6, hidden_states=24576, n_embd=4096, llm_finish=1 +22:07:15.917 TTS: n_tokens_orig=6, n_tokens_filtered=6 (filtered 0 special tokens) +22:07:15.940 T2W线程: wav_6.wav | 1.00s audio | 2821.9ms inference | RTF=2.82 | t=25073ms +22:07:15.951 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_17/merged_embeddings.txt +22:07:15.951 TTS Simplex: generating audio tokens for chunk 17 (n_tokens=6, tts_n_embd=768) +22:07:15.951 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=17, new_size=7) +22:07:15.951 TTS Simplex: chunk 17 - keeping KV cache, n_past_tts=1347 +22:07:15.990 TTS Simplex: prefill completed, n_past_tts=1354 +22:07:15.990 TTS Simplex: sampler created +22:07:16.005 TTS Simplex Phase1: token 1/500: rel_id=4134 +22:07:16.019 TTS Simplex Phase1: token 2/500: rel_id=5835 +22:07:16.033 TTS Simplex Phase1: token 3/500: rel_id=5838 +22:07:16.047 TTS Simplex Phase1: token 4/500: rel_id=3651 +22:07:16.061 TTS Simplex Phase1: token 5/500: rel_id=1869 +22:07:16.210 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 15, buffer=25) +22:07:16.357 TTS Simplex Phase1: token 25/500: rel_id=4520 +22:07:16.584 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 40, buffer=25) +22:07:16.732 TTS Simplex Phase1: token 50/500: rel_id=4956 +22:07:16.809 TTS Simplex Phase1: EOS token at step 56 +22:07:16.809 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed +22:07:16.810 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=1409 +22:07:16.821 TTS Simplex Phase2: text_eos_embed injected, n_past=1410 +22:07:16.833 TTS Simplex Phase2: audio_bos injected, n_past=1411, starting final generation +22:07:16.982 TTS Simplex Phase2: yield 25 tokens 到 T2W +22:07:17.013 TTS Simplex Phase2: EOS at step 12 (final end) +22:07:17.013 TTS Simplex: chunk 结束,tts_token_buffer 剩余 1 tokens (保留等下一个 chunk) +22:07:17.013 TTS Simplex: is_final_text_chunk=true, flush 剩余 1 tokens 从 tts_token_buffer +22:07:17.013 TTS Simplex: generated 66 audio tokens for chunk 17 +22:07:17.013 TTS Simplex: chunk 17 first tokens: [4134 5835 5838 3651 1869 ], last tokens: [4299 6486 6486 4299 4218 ] +22:07:17.013 TTS Simplex: updated tts_n_past_accumulated=1423, total_generated_tokens=1226 +22:07:17.013 TTS: finished processing all chunks +22:07:17.014 TTS: 单工模式轮次结束,下一轮 round_idx=1 +22:07:17.014 TTS: sent is_final=true to T2W queue (turn end) +22:07:18.320 T2W线程: wav_7.wav | 1.00s audio | 2378.7ms inference | RTF=2.38 | t=27452ms +22:07:20.546 T2W线程: wav_8.wav | 1.00s audio | 2225.5ms inference | RTF=2.23 | t=29679ms +22:07:22.778 T2W线程: wav_9.wav | 1.00s audio | 2231.2ms inference | RTF=2.23 | t=31911ms +22:07:24.992 T2W线程: wav_10.wav | 1.00s audio | 2212.8ms inference | RTF=2.21 | t=34124ms +22:07:27.195 T2W线程: wav_11.wav | 1.00s audio | 2202.2ms inference | RTF=2.20 | t=36327ms +22:07:29.409 T2W线程: wav_12.wav | 1.00s audio | 2213.6ms inference | RTF=2.21 | t=38542ms +22:07:31.621 T2W线程: wav_13.wav | 1.00s audio | 2202.8ms inference | RTF=2.20 | t=40754ms +22:07:33.834 T2W线程: wav_14.wav | 1.00s audio | 2212.8ms inference | RTF=2.21 | t=42967ms +22:07:36.040 T2W线程: wav_15.wav | 1.00s audio | 2204.7ms inference | RTF=2.20 | t=45172ms +22:07:38.231 T2W线程: wav_16.wav | 1.00s audio | 2190.5ms inference | RTF=2.19 | t=47364ms +22:07:40.443 T2W线程: wav_17.wav | 1.00s audio | 2211.2ms inference | RTF=2.21 | t=49576ms +22:07:42.643 T2W线程: wav_18.wav | 1.00s audio | 2199.0ms inference | RTF=2.20 | t=51775ms +22:07:44.876 T2W线程: wav_19.wav | 1.00s audio | 2232.0ms inference | RTF=2.23 | t=54008ms +22:07:47.081 T2W线程: wav_20.wav | 1.00s audio | 2204.1ms inference | RTF=2.20 | t=56213ms +22:07:49.285 T2W线程: wav_21.wav | 1.00s audio | 2203.2ms inference | RTF=2.20 | t=58417ms +22:07:51.493 T2W线程: wav_22.wav | 1.00s audio | 2207.2ms inference | RTF=2.21 | t=60626ms +22:07:53.739 T2W线程: wav_23.wav | 1.00s audio | 2245.3ms inference | RTF=2.25 | t=62871ms +22:07:55.957 T2W线程: wav_24.wav | 1.00s audio | 2217.0ms inference | RTF=2.22 | t=65089ms +22:07:58.160 T2W线程: wav_25.wav | 1.00s audio | 2202.1ms inference | RTF=2.20 | t=67292ms +22:08:00.374 T2W线程: wav_26.wav | 1.00s audio | 2213.6ms inference | RTF=2.21 | t=69507ms +22:08:02.583 T2W线程: wav_27.wav | 1.00s audio | 2207.9ms inference | RTF=2.21 | t=71715ms +22:08:04.798 T2W线程: wav_28.wav | 1.00s audio | 2214.3ms inference | RTF=2.21 | t=73930ms +22:08:07.010 T2W线程: wav_29.wav | 1.00s audio | 2212.0ms inference | RTF=2.21 | t=76143ms +22:08:09.207 T2W线程: wav_30.wav | 1.00s audio | 2195.5ms inference | RTF=2.20 | t=78339ms +22:08:11.411 T2W线程: wav_31.wav | 1.00s audio | 2204.1ms inference | RTF=2.20 | t=80544ms +22:08:13.633 T2W线程: wav_32.wav | 1.00s audio | 2221.1ms inference | RTF=2.22 | t=82766ms +22:08:15.854 T2W线程: wav_33.wav | 1.00s audio | 2219.4ms inference | RTF=2.22 | t=84986ms +22:08:18.066 T2W线程: wav_34.wav | 1.00s audio | 2211.6ms inference | RTF=2.21 | t=87199ms +22:08:20.271 T2W线程: wav_35.wav | 1.00s audio | 2204.1ms inference | RTF=2.20 | t=89403ms +22:08:22.473 T2W线程: wav_36.wav | 1.00s audio | 2201.2ms inference | RTF=2.20 | t=91605ms +22:08:24.671 T2W线程: wav_37.wav | 1.00s audio | 2197.6ms inference | RTF=2.20 | t=93803ms +22:08:26.865 T2W线程: wav_38.wav | 1.00s audio | 2193.4ms inference | RTF=2.19 | t=95998ms +22:08:29.070 T2W线程: wav_39.wav | 1.00s audio | 2204.3ms inference | RTF=2.20 | t=98203ms +22:08:31.262 T2W线程: wav_40.wav | 1.00s audio | 2190.6ms inference | RTF=2.19 | t=100394ms +22:08:33.465 T2W线程: wav_41.wav | 1.00s audio | 2202.6ms inference | RTF=2.20 | t=102597ms +22:08:35.674 T2W线程: wav_42.wav | 1.00s audio | 2208.7ms inference | RTF=2.21 | t=104807ms +22:08:37.870 T2W线程: wav_43.wav | 1.00s audio | 2194.5ms inference | RTF=2.19 | t=107002ms +22:08:40.069 T2W线程: wav_44.wav | 1.00s audio | 2198.0ms inference | RTF=2.20 | t=109201ms +22:08:42.297 T2W线程: wav_45.wav | 1.00s audio | 2227.2ms inference | RTF=2.23 | t=111429ms +22:08:44.495 T2W线程: wav_46.wav | 1.00s audio | 2197.0ms inference | RTF=2.20 | t=113627ms +22:08:46.707 T2W线程: wav_47.wav | 1.00s audio | 2211.1ms inference | RTF=2.21 | t=115839ms +22:08:48.916 T2W线程: wav_48.wav | 1.00s audio | 2208.5ms inference | RTF=2.21 | t=118048ms +22:08:50.905 T2W线程: wav_49.wav | 0.32s audio | 1988.7ms inference | RTF=6.21 | t=120038ms +22:08:50.905 T2W线程: 写入结束标记 ./tools/omni/output/round_000/tts_wav/generation_done.flag (last_wav=49) +22:08:50.905 T2W线程: 轮次结束后更新输出目录为 ./tools/omni/output/round_001/tts_wav +22:08:50.944 omni_stop_threads: stop signals sent +22:08:50.944 T2W(C++) 线程: 停止 +tts thread end +t2w thread end diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full_merged.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full_merged.wav new file mode 100644 index 000000000..87b295256 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full_merged.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full_report.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full_report.json new file mode 100644 index 000000000..ee49296c0 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/full_report.json @@ -0,0 +1,341 @@ +{ + "scope": "standalone MiniCPM-o 4.5 GGUF audio+image input to text+speech on native-Windows-11-HX370-CPU", + "status": "scoped_complete_path_pass", + "quality": "synthetic red-square/tone response not established as semantically correct", + "model_revision": "db25077c33951fe163b42986fba0132e279872a2", + "artifacts": { + "MiniCPM-o-4_5-Q4_K_M.gguf": { + "bytes": 5026714400, + "sha256": "1237a97ee081b8abebc47aa7dad565701e8f5f904cdc92f6723ac4281bbc0932" + }, + "audio/MiniCPM-o-4_5-audio-F16.gguf": { + "bytes": 660167904, + "sha256": "d5b188ac7feaf98e17175c3f9bd14bf269301bfd187439fdaa3e3a494fc32ef7" + }, + "vision/MiniCPM-o-4_5-vision-F16.gguf": { + "bytes": 1095113184, + "sha256": "1453678cc4e4fe18de241952962e234f265cb8dda780773526103ab8ba82f421" + }, + "tts/MiniCPM-o-4_5-tts-F16.gguf": { + "bytes": 1157244416, + "sha256": "c7be3748a863dd6966ae7eed42600b7f41ca67affb03729ff245247f0e5ea088" + }, + "tts/MiniCPM-o-4_5-projector-F16.gguf": { + "bytes": 14948640, + "sha256": "4b1b5b377358a5e594a304ff6ea5d52df606a9ba7d886c4299d232f0c67dd1fd" + }, + "token2wav-gguf/encoder.gguf": { + "bytes": 151339008, + "sha256": "7f8d265da594eaf5e1de2db8f5f1867dbcb0bb75ef5878fadf2952347116f4d0" + }, + "token2wav-gguf/flow_matching.gguf": { + "bytes": 458250240, + "sha256": "eda6069f3edeb5dd3a87fbf2aedb2ddd1b46f3273926c4fcf09b24476a39cab8" + }, + "token2wav-gguf/flow_extra.gguf": { + "bytes": 13663328, + "sha256": "c67611aa7d02500fe395a7798bf0bfdfb55c74d37ba93934ca74d82b4e63f78d" + }, + "token2wav-gguf/hifigan2.gguf": { + "bytes": 83242816, + "sha256": "1b8b3bf5d8d3066aeee4324fdcdd41aefce170d0ee907645858de408d82835c2" + }, + "token2wav-gguf/prompt_cache.gguf": { + "bytes": 211613152, + "sha256": "81fe6f541ebe0b67db06a1e395df928da47991dc9637c2cf47d6c59d5b979f2c" + } + }, + "runtime_binary_sha256": "55eb866533dabe7e09ceba2c9174060b950b35a214f231e6908c55dce5ed78e8", + "input_image_sha256": "22c7ccea466a3f551c512045e6316c7597408d4e0a20205502f55784d977aa8d", + "input_audio_sha256": "cf4bb5cd9acbfbf67596d4a53310652b61ef4b7ede1d54eb03ef4882ca40223a", + "response_text": "哎呀,这个问题挺有意思的!要是让我去一个完全没去过的地方,那我肯定得去北极啊!你想啊,那地方冰天雪地的,白茫茫的一片,连路都没有,走路都得小心翼翼的。但你说这地方多刺激!穿厚厚的羽绒服,戴上防风手套,脚底下踩着雪板或者雪鞋,一步一步往前挪,呼哧呼哧喘着粗气。抬头看天,全是星星,连北极光都能看见,那叫一个美!不过呢,也挺难的,吃饭得靠口哨,因为风声太大,说话听不清。坐那儿吃点热汤,暖暖身子,再看看远处的冰山,那才叫过瘾!你说这地方荒不荒?可就是这荒,才让人觉得活着真痛快!", + "audio_chunks": [ + { + "name": "wav_0.wav", + "frames": 20160, + "sha256": "ccaf11f4d508f6714ee40f6cbc10f0443ce3a5a1c817e1098c9492fde006e5ef" + }, + { + "name": "wav_1.wav", + "frames": 24000, + "sha256": "24f4927c3ee76c1f3dbe530be2f9e409353694693fa200682b70a175ae043a45" + }, + { + "name": "wav_2.wav", + "frames": 24000, + "sha256": "6d5e2017555de66b7b5d10f2d9405ab7aa838f4919f8cd481b50ad60144391a1" + }, + { + "name": "wav_3.wav", + "frames": 24000, + "sha256": "80435ac30f252004b3d3aeda4a04add0948b8b200b7bcfb14059d3e7058425f7" + }, + { + "name": "wav_4.wav", + "frames": 24000, + "sha256": "6573999fb18bb302e18a15e5716ca98ffd4f4d8860a107303886af47bd8f45c3" + }, + { + "name": "wav_5.wav", + "frames": 24000, + "sha256": "1b2237ec3731e5cf3132c8ea0a0f1d4d050b5e26e99434092c76cde7818074a1" + }, + { + "name": "wav_6.wav", + "frames": 24000, + "sha256": "824b4e215c9602087b993547361abc9657b8c8f39ab3cc24fbf3e724e8bd8a79" + }, + { + "name": "wav_7.wav", + "frames": 24000, + "sha256": "fef914a2fe781eda722b07cfe0720776ee2e5a319c8229cda805285925e607bc" + }, + { + "name": "wav_8.wav", + "frames": 24000, + "sha256": "0ce28877d81c1a760929495c3ba4369466c8ef1bf8f96e1df1a3e781a154dde2" + }, + { + "name": "wav_9.wav", + "frames": 24000, + "sha256": "6601959926fe73677365ce3c5f650cf9cc88b0521af7e9cff7332a36ba5e1a05" + }, + { + "name": "wav_10.wav", + "frames": 24000, + "sha256": "908c73e428c8d5558b2f6dbf3468e151bcae61a5ddc329a4b89bbc68917ccac4" + }, + { + "name": "wav_11.wav", + "frames": 24000, + "sha256": "485b6d0a5bd286741de6252a1ce453117717e6171f707be9984767c82875cf8d" + }, + { + "name": "wav_12.wav", + "frames": 24000, + "sha256": "a4121fd0b15a2755a80703c52859737df7fcbcb310f725cf504bedfb941b0605" + }, + { + "name": "wav_13.wav", + "frames": 24000, + "sha256": "300623668516f1a049f1d99e5ade0b93e8a73deb298e9e04854b983f0fd76f81" + }, + { + "name": "wav_14.wav", + "frames": 24000, + "sha256": "0a9a9a08eea009460590bb032d33edffe0153193e50c366a743ead46e2d0e2a9" + }, + { + "name": "wav_15.wav", + "frames": 24000, + "sha256": "baab0f1f8d00de92073d4ffa9834ca7da9cedbf575f39f4a9cebde680381bcf0" + }, + { + "name": "wav_16.wav", + "frames": 24000, + "sha256": "af52c89f21ac5f948e33787e605df8e883579632f1036ea6bcdbd9c7a8fbdcda" + }, + { + "name": "wav_17.wav", + "frames": 24000, + "sha256": "ec70aa4c48e88ffed9505a68058b499b58ca4adc8ea6644a4799ab144997f405" + }, + { + "name": "wav_18.wav", + "frames": 24000, + "sha256": "cec1bc909334fcc6de69af4a826f9fc77425077e33990b7b532ca25910adb01c" + }, + { + "name": "wav_19.wav", + "frames": 24000, + "sha256": "cb5423b0db3a5528470da14b21eee3dd465daf243378e067c4d976e1876c387b" + }, + { + "name": "wav_20.wav", + "frames": 24000, + "sha256": "bb48ff18018f36906ff8bcac0291444b1000d2fee6ec928f82d916b96f3eaa81" + }, + { + "name": "wav_21.wav", + "frames": 24000, + "sha256": "3ef0c77893e626ea65aed16aff60034b960d633c6bb175350ebb27cfebe7c3c3" + }, + { + "name": "wav_22.wav", + "frames": 24000, + "sha256": "44751508ac8a2f6a5e00744c8025eccd4f47f950b5c8fda3d9aac896594a9e77" + }, + { + "name": "wav_23.wav", + "frames": 24000, + "sha256": "14520c03ab4e42f4477003de37394f634d0159f34416c8a977614d2ba17bab29" + }, + { + "name": "wav_24.wav", + "frames": 24000, + "sha256": "a8897359ccf0fe7209747b1969c040697f84e6cbd2bfb9af0812802e937f250c" + }, + { + "name": "wav_25.wav", + "frames": 24000, + "sha256": "8a558610b0452664e8426bd52e18d939d5b8a6e5cb30f716b50b0085b1ff53c6" + }, + { + "name": "wav_26.wav", + "frames": 24000, + "sha256": "ebb83e4ce6c6c5e38af3e4efe1052ec36650a7b45b7110e7ad4c1ee7eaadff85" + }, + { + "name": "wav_27.wav", + "frames": 24000, + "sha256": "571c311f90e702ccc36710282d6fe076facbe6d7d9cce0e75fef3a0aec182465" + }, + { + "name": "wav_28.wav", + "frames": 24000, + "sha256": "963516c1d2997c807577d4e6f070442a9ef245e9abdfb0c59d38e1586cfd03cd" + }, + { + "name": "wav_29.wav", + "frames": 24000, + "sha256": "95895af80fe40af98a478470a7e2bbad628af3bf21ae584326aa861116a41c24" + }, + { + "name": "wav_30.wav", + "frames": 24000, + "sha256": "417baf3112430c5d91b72ebb7719c62516f7a22941895a42ced4480eb61e22d8" + }, + { + "name": "wav_31.wav", + "frames": 24000, + "sha256": "0cea7e377d403c76bdd5239338a86c9d7c256ce88bb6a07aa5e890f71d9dc72d" + }, + { + "name": "wav_32.wav", + "frames": 24000, + "sha256": "22019ed1005e7c8c804f31075ad3b44b24dbf518f9a32df2e3fdf6b46aa93b1e" + }, + { + "name": "wav_33.wav", + "frames": 24000, + "sha256": "450c5669164ed7907e9349284d4a13af87e59b7767545de71521d84dd4ab505e" + }, + { + "name": "wav_34.wav", + "frames": 24000, + "sha256": "f7afa07c68e4015d79e14dfabb819c8e77940e395546730567b01f74b902ff2d" + }, + { + "name": "wav_35.wav", + "frames": 24000, + "sha256": "e5059b3194c5388d78e5fa0bf62f21ef311e5fd6e2d68f27728bde89dafa26ca" + }, + { + "name": "wav_36.wav", + "frames": 24000, + "sha256": "5dfb632767047359bc87b2cc4c1b832043742c1ff38ddb309f77bcb9564c99bf" + }, + { + "name": "wav_37.wav", + "frames": 24000, + "sha256": "b8b3a87ec594ba197964e01340d4f67d57b0ad1bb892c8f7b6e2ccac61790955" + }, + { + "name": "wav_38.wav", + "frames": 24000, + "sha256": "06aeeebd73a91f80f7259cd69e70c95aad06eccd5dafa57cfdee49d12ea765cf" + }, + { + "name": "wav_39.wav", + "frames": 24000, + "sha256": "d19073d56e22d2498d5d88ed53c6129773db0c88629770cebe2822e17c1dd10f" + }, + { + "name": "wav_40.wav", + "frames": 24000, + "sha256": "674f787916d660663af553222e6f7475de281150e45442b17bacd086f92539a9" + }, + { + "name": "wav_41.wav", + "frames": 24000, + "sha256": "bb712e6f0962193139dcef6bc32b14806fb95bfe50d0233a80bc3074767a5747" + }, + { + "name": "wav_42.wav", + "frames": 24000, + "sha256": "17cf982832ae9495d57ae0ddc6062a9a371bded22843bf47528053a7e7feec6c" + }, + { + "name": "wav_43.wav", + "frames": 24000, + "sha256": "605c0400cfe18ef70c5df7aa4444352f260fd111715c59857c2759e72215219c" + }, + { + "name": "wav_44.wav", + "frames": 24000, + "sha256": "737571d20af2ab45afe8794de001ad5f8005e8726999cc03541d1efb2bb009b1" + }, + { + "name": "wav_45.wav", + "frames": 24000, + "sha256": "ff061aad11f2079d6262060581e9a692391b024f5344e3f9cdb01e4ae5b8e4e2" + }, + { + "name": "wav_46.wav", + "frames": 24000, + "sha256": "b7fcad9b9e0a175343089b3ab4e84c5659fd683139ef82a3c72a8a5c6ed1af11" + }, + { + "name": "wav_47.wav", + "frames": 24000, + "sha256": "3ece4590e97ed99ffd2ab023a5916f7acb48c5428a6e109dc568ee9da4d525ba" + }, + { + "name": "wav_48.wav", + "frames": 24000, + "sha256": "4e5d26b5a0d61000c3c6394fa7f7ff6ef912726382668704b0e65ccfea82a29a" + }, + { + "name": "wav_49.wav", + "frames": 7680, + "sha256": "bd7c0b1674ff6cebcd2c9fa5dc3aac7fa75e72eb141c87b3c1635e848b14a510" + } + ], + "audio_frames": 1179840, + "audio_duration_s": 49.16, + "audio_rms_pcm16": 2572.517821545514, + "pcm_sha256": "f24c45ec32bb0b7d32486546e91148f41b8348d563bbc8fc2c6e8babb3da098a", + "merged_wav_sha256": "a38e7fdea006f4b785b8ee857aeb4c3b4b0f4a7a2039c6e34f6723c105c8da02", + "peak_rss_kib_from_time": null, + "wall_clock_from_time": null, + "sampled_process_profile": { + "command": [ + "C:\\Users\\zhout\\w2\\minicpmo_cpp_cpu_v3\\llama-omni-cli.exe", + "-m", + "C:\\Users\\zhout\\w2\\models\\MiniCPM-o-4_5-gguf\\MiniCPM-o-4_5-Q4_K_M.gguf", + "-ngl", + "0", + "-c", + "2048", + "--omni", + "--t2w-device", + "cpu", + "--t2w-wait-seconds", + "900", + "--ref-audio", + "C:\\Users\\zhout\\w2\\minicpmo_cpp_cpu_v3\\default_ref_audio.wav", + "--test", + "C:\\Users\\zhout\\w2\\minicpmo_cpp_cpu_v3\\fixture_", + "2" + ], + "cwd": "C:\\Users\\zhout\\w2\\minicpmo_cpp_cpu_v3", + "exit_code": 0, + "wall_s": 137.33765170001425, + "memory_sample_interval_ms": 100, + "memory_samples": 1365, + "peak_sampled_rss_bytes": 13104742400, + "peak_sampled_private_bytes": 13314060288, + "measurement_note": "sampled process values, not guaranteed loading peaks" + }, + "upstream_merge_name_mismatch": true +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/response_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/response_text.txt new file mode 100644 index 000000000..f895a5577 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/response_text.txt @@ -0,0 +1 @@ +哎呀,这个问题挺有意思的!要是让我去一个完全没去过的地方,那我肯定得去北极啊!你想啊,那地方冰天雪地的,白茫茫的一片,连路都没有,走路都得小心翼翼的。但你说这地方多刺激!穿厚厚的羽绒服,戴上防风手套,脚底下踩着雪板或者雪鞋,一步一步往前挪,呼哧呼哧喘着粗气。抬头看天,全是星星,连北极光都能看见,那叫一个美!不过呢,也挺难的,吃饭得靠口哨,因为风声太大,说话听不清。坐那儿吃点热汤,暖暖身子,再看看远处的冰山,那才叫过瘾!你说这地方荒不荒?可就是这荒,才让人觉得活着真痛快! diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_0/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_0/llm_text.txt new file mode 100644 index 000000000..33fc12778 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_0/llm_text.txt @@ -0,0 +1 @@ +哎呀,这个问题挺有意思的!要是让我去 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_1/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_1/llm_text.txt new file mode 100644 index 000000000..c77732b98 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_1/llm_text.txt @@ -0,0 +1 @@ +一个完全没去过的地方,那我肯定得 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_10/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_10/llm_text.txt new file mode 100644 index 000000000..ecb1ac75f --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_10/llm_text.txt @@ -0,0 +1 @@ +光都能看见,那叫一个美!不过 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_11/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_11/llm_text.txt new file mode 100644 index 000000000..479a83e4e --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_11/llm_text.txt @@ -0,0 +1 @@ +呢,也挺难的,吃饭得靠 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_12/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_12/llm_text.txt new file mode 100644 index 000000000..f7b2e1037 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_12/llm_text.txt @@ -0,0 +1 @@ +口哨,因为风声太大,说话听 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_13/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_13/llm_text.txt new file mode 100644 index 000000000..e5e169798 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_13/llm_text.txt @@ -0,0 +1 @@ +不清。坐那儿吃点热汤,暖 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_14/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_14/llm_text.txt new file mode 100644 index 000000000..1427964bd --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_14/llm_text.txt @@ -0,0 +1 @@ +暖身子,再看看远处的冰山, \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_15/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_15/llm_text.txt new file mode 100644 index 000000000..900bfaac8 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_15/llm_text.txt @@ -0,0 +1 @@ +那才叫过瘾!你说这地方荒 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_16/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_16/llm_text.txt new file mode 100644 index 000000000..263d0d379 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_16/llm_text.txt @@ -0,0 +1 @@ +不荒?可就是这荒,才让人 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_17/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_17/llm_text.txt new file mode 100644 index 000000000..8ee5d86be --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_17/llm_text.txt @@ -0,0 +1 @@ +觉得活着真痛快! \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_2/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_2/llm_text.txt new file mode 100644 index 000000000..aa99cdcfe --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_2/llm_text.txt @@ -0,0 +1 @@ +去北极啊!你想啊,那地方冰 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_3/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_3/llm_text.txt new file mode 100644 index 000000000..34f13f642 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_3/llm_text.txt @@ -0,0 +1 @@ +天雪地的,白茫茫的一片, \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_4/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_4/llm_text.txt new file mode 100644 index 000000000..6b97dde77 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_4/llm_text.txt @@ -0,0 +1 @@ +连路都没有,走路都得小心翼翼的。 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_5/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_5/llm_text.txt new file mode 100644 index 000000000..07b4505ff --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_5/llm_text.txt @@ -0,0 +1 @@ +但你说这地方多刺激!穿厚厚的羽 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_6/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_6/llm_text.txt new file mode 100644 index 000000000..cbd0f1599 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_6/llm_text.txt @@ -0,0 +1 @@ +绒服,戴上防风手套,脚底下 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_7/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_7/llm_text.txt new file mode 100644 index 000000000..70ce97659 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_7/llm_text.txt @@ -0,0 +1 @@ +踩着雪板或者雪鞋,一步一步往前 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_8/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_8/llm_text.txt new file mode 100644 index 000000000..4ec7c65d2 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_8/llm_text.txt @@ -0,0 +1 @@ +挪,呼哧呼哧喘着粗气 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_9/llm_text.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_9/llm_text.txt new file mode 100644 index 000000000..2e7017910 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/llm_debug/chunk_9/llm_text.txt @@ -0,0 +1 @@ +。抬头看天,全是星星,连北极 \ No newline at end of file diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_0.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_0.bin new file mode 100644 index 000000000..a802146cf Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_0.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_0.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_0.txt new file mode 100644 index 000000000..08092a434 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_0.txt @@ -0,0 +1 @@ +1490,4299,6486,4299,4299,1708,3653,2924,2195,4526,5021,2582,2303,5189,5105,2918,3161,5429,3008,1788,3648,5919,3003,1869,2139,4758,2415,4605,4611,3474,2585,4366,3601,4514,835,1752,2274,2698,484,60,4947,2699,4805,4826,716,1118,3320,5667,5019,4607,6142,6455,4185,1938,306,2192,3647,3890,1946,1945,4299,6486,6486,4299 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_1.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_1.bin new file mode 100644 index 000000000..35ba0152f Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_1.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_1.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_1.txt new file mode 100644 index 000000000..a215526cd --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_1.txt @@ -0,0 +1 @@ +6486,6405,5838,5919,4218,4218,3408,2753,3083,2630,5238,5319,3720,3724,3157,5999,4700,4952,2861,4373,1457,710,596,110,879,5648,4756,2391,6317,3482,5021,1059,180,4970,1451,1423,974,731,4492,5937,4998,3111,3128,4487,2638,4314,932,2573,4857,5649,4756,5541,3372,5334,4852,663,2912,2297,1038,2252,147,60,5669,4940,3077,6534,3618,2756,3161,2675,4637,2037,3888,5835,5838,2922,1545,1959,3750,19,5837 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_10.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_10.bin new file mode 100644 index 000000000..4b0fc6adb Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_10.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_10.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_10.txt new file mode 100644 index 000000000..e68657e0c --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_10.txt @@ -0,0 +1 @@ +322,4967,6098,5534,4444,5402,2481,2663,20,1235,2121,4299,3891,3648,5835,5916,3651,2112,1560,80,386,4567,4314,2163,2381,548,566,2004,5648,2023,3320,1125,654,5831,5753,5032,5040,3339,1275,2819,617,3906,272,4151,264,165,5832,5923,4379,751,1726,5648,3238,2573,8,14,1489,4299,6486,4218,1950,5934,2934,5266,5265,5995,5189,960,4676,2321,5753,704,161,3481,5669,1456,183,5078,4311,4068 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_11.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_11.bin new file mode 100644 index 000000000..53ef4ccc8 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_11.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_11.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_11.txt new file mode 100644 index 000000000..6bbeaa95a --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_11.txt @@ -0,0 +1 @@ +2273,8,278,386,1115,4299,6486,6486,6486,6486,4218,3651,5838,3648,1701,4299,4299,2163,1426,4373,582,669,5102,5081,4862,19,3906,2189,3161,3413,2441,3494,1460,1735,2014,1294,1295,4813,2418,2220,4947,4965,26,3910,1476,1463,1460,2,3666,1833,2242,5266,3890,1946,1703,1702,1704,5835,5838,5838,2922,2112,2949,6048,5319 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_12.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_12.bin new file mode 100644 index 000000000..0c3453048 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_12.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_12.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_12.txt new file mode 100644 index 000000000..e20c85e9c --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_12.txt @@ -0,0 +1 @@ +795,3875,4275,6534,5510,5105,20,1806,1272,59,386,813,162,5355,5752,5054,489,405,2688,1439,2174,3709,5319,5319,5294,6238,6239,4295,2135,2056,1947,3726,5838,5109,2922,1303,2031,3454,4913,4508,6500,2657,143,233,4356,6534,3600,5093,6419,5962,6048,2340,2333,4880,4074,297,5835,5832,5998,5272,2249,876,549,5192,6077 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_13.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_13.bin new file mode 100644 index 000000000..848f0c980 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_13.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_13.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_13.txt new file mode 100644 index 000000000..b7f9569bb --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_13.txt @@ -0,0 +1 @@ +3890,1703,3889,2025,3648,5919,4056,2031,5940,6048,3861,6554,5081,4984,5028,5038,6157,5837,141,60,4947,2697,5526,4317,3603,1856,2004,5405,4407,339,4778,4465,4716,5688,6486,6486,4299,3975,3972,5835,5838,5838,3651,3732,2112,5649,5644,3557,2894,2459,3909,2225,3809,1622,958,1599,6048,5322,3018,4615,69,4850,8,881,3714,6069,4852,2216 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_14.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_14.bin new file mode 100644 index 000000000..08be726c8 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_14.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_14.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_14.txt new file mode 100644 index 000000000..b7dee61a8 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_14.txt @@ -0,0 +1 @@ +1275,2187,6075,6086,5672,4951,4959,4224,1944,3645,3648,1461,4299,1726,1479,362,974,4376,3747,2206,4700,1544,773,5319,5322,156,4487,4392,5934,6099,5653,5419,4439,2216,11,1704,3645,5835,5838,1545,4245,6374,2255,5192,222,165,5106,5842,2288,1725,84,5845,2192,2807,4291,4127,194,737,1564,1527,6291,3582,1125,306,2243,2163,1686 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_15.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_15.bin new file mode 100644 index 000000000..dce1d603a Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_15.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_15.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_15.txt new file mode 100644 index 000000000..0a87185bd --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_15.txt @@ -0,0 +1 @@ +5021,4967,6424,5560,6048,4593,4568,5834,4466,4474,741,1704,5835,5838,3651,1464,4299,5937,3666,5188,5994,5995,5914,5837,138,6377,2916,3659,116,150,5647,4850,6158,5081,1419,654,6559,5090,2567,2339,4939,3481,557,305,35,2237,1523,4299,6486,6486,6486,4299,3651,5835,5838,3651,2922,1788,4218,3913,5615,2834,3712,6049,3861,6554,5081,5051,5023,3159,1704,5835,735 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_16.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_16.bin new file mode 100644 index 000000000..8de2bfec5 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_16.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_16.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_16.txt new file mode 100644 index 000000000..15fde8730 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_16.txt @@ -0,0 +1 @@ +2112,4515,957,2327,1680,57,5020,5020,3076,6510,2846,1217,509,2779,5028,5028,5054,5752,5034,4317,4356,5831,4947,5028,728,572,2684,4871,4952,5609,4308,6486,6486,4299,4218,3975,4056,4299,2112,243,405,2449,155,2139,4920,4756,2580,5340,5076,5092,5825,5967,5238,1535,1527,3054,4850,2411,2558,2760,5028,2915,5759,4865,4871,4961,1957 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_17.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_17.bin new file mode 100644 index 000000000..7f15e33c8 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_17.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_17.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_17.txt new file mode 100644 index 000000000..97d11e6e6 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_17.txt @@ -0,0 +1 @@ +4134,5835,5838,3651,1869,2058,5648,2922,3658,1547,3157,5336,5996,5672,1661,1661,3044,5937,4929,3381,4130,221,2324,309,4520,4727,2675,2765,3492,4218,4135,2112,5028,5028,2841,2186,710,2648,870,3150,3146,1680,4512,2426,4485,5202,6261,54,5589,4956,5065,4319,4318,651,2682,5356,3731,3650,1466,1463,1788,4299,6486,6486,4299,4218 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_2.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_2.bin new file mode 100644 index 000000000..9e958d284 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_2.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_2.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_2.txt new file mode 100644 index 000000000..d80b3b563 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_2.txt @@ -0,0 +1 @@ +497,701,2870,5086,975,165,2931,44,1563,312,4940,4560,1806,2263,305,1122,4756,3084,5343,2163,954,2330,548,323,2085,6377,6134,1041,2024,1295,35,5189,5269,5265,5915,3899,1702,4299,6486,6486,6486,6486,6405,4218,1959,3185,3455,5642,5182,5402,4677,4499,3647,1712,1712,1703,3890,5834,3656,1712,1702,4299,3972,3648,5835,5838,1458 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_3.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_3.bin new file mode 100644 index 000000000..0576299db Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_3.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_3.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_3.txt new file mode 100644 index 000000000..e4f7b95b9 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_3.txt @@ -0,0 +1 @@ +4299,3909,5850,4459,4409,1923,66,4940,4778,6453,3618,2756,2675,4955,1395,2139,1695,5102,5047,5286,768,4785,4967,4490,4507,4753,4996,942,971,62,1842,78,5668,4778,1596,63,2270,3161,2432,2028,1701,3645,5832,1458,2112,2139,469,1463,737,4570,3339,6498,5671,4945,4314,2855,3404,4871,3987 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_4.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_4.bin new file mode 100644 index 000000000..fce1b87c5 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_4.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_4.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_4.txt new file mode 100644 index 000000000..aafa9522a --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_4.txt @@ -0,0 +1 @@ +2234,4769,3455,1268,4778,2166,3837,4947,4912,4517,2192,2216,768,1707,3648,5838,3651,2112,1815,161,2582,2297,5473,6255,5958,5094,5829,2827,300,2819,2897,4311,2125,116,368,4742,4993,2411,569,575,602,2087,4299,6486,4299,4218,3645,3975,4299,2112,6379,6455,316,518,629,1937,1665,5827,5829,5095,1032,389,5006,297,2264,4841,4417,5402,2212 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_5.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_5.bin new file mode 100644 index 000000000..93d5eb7fd Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_5.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_5.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_5.txt new file mode 100644 index 000000000..458827e04 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_5.txt @@ -0,0 +1 @@ +1217,272,5170,6374,321,2483,4643,4886,5641,5641,5669,5668,4940,2266,1275,56,2918,2189,4385,981,6486,6486,4299,4218,3648,5835,5835,2922,1545,2166,63,4540,2373,6099,2699,3239,6291,1413,5816,954,5244,3153,4569,4768,69,786,3482,4778,6534,2764,3407,2450,1833,478,728,4754,1032,6455,6373,5634,5177,1506,6379,2994,4211,404,62,1763,1735,4299,6486,4299,4299,1518,6048 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_6.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_6.bin new file mode 100644 index 000000000..f3ea8d415 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_6.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_6.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_6.txt new file mode 100644 index 000000000..f3eb9661d --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_6.txt @@ -0,0 +1 @@ +1377,3898,2513,4961,4869,4944,5038,5057,2897,4863,2860,5000,1110,2495,5342,4130,1861,1859,1855,2171,692,5776,5802,6534,6507,6537,2186,1457,719,5077,2791,3888,5832,5838,2922,2112,1761,4406,5192,2411,5322,2334,3728,2768,3519,6534,1301,491,2861,6453,2857,5068,5529,6048,5319,614,710,1107,297,5832,6084,4780,5672,3494 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_7.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_7.bin new file mode 100644 index 000000000..e793b004d Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_7.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_7.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_7.txt new file mode 100644 index 000000000..a6974e9d6 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_7.txt @@ -0,0 +1 @@ +4224,4218,3888,5835,5838,2922,1788,4191,4919,161,1946,5053,468,63,5021,1295,6130,4678,4553,5917,5914,2377,6379,4374,3658,899,870,3154,2987,4833,5568,1942,971,4564,2166,2620,6077,1955,692,3570,2850,5086,1599,3875,4603,4509,4839,1185,962,71,5401,6374,4678,1295,314,35,4540 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_8.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_8.bin new file mode 100644 index 000000000..6321a9e2f Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_8.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_8.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_8.txt new file mode 100644 index 000000000..bd44bff1c --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_8.txt @@ -0,0 +1 @@ +3009,1707,5838,5109,2922,2436,2112,1968,3482,1295,4939,3153,2166,5814,5829,5826,4534,2753,890,2166,2160,5102,5102,3640,3599,1220,749,1995,4673,330,269,2219,5934,5937,2774,1403,701,2870,4946,4942,2029,1701,3891,3645,5832,3159,1303,654,5028,3579,4373,5830,1206,3705,5319,3054,3881,5825,2769,5028,4345,5827,1686,5322,5319,3063,5333,3144,5970,4293,3493,1541 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_9.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_9.bin new file mode 100644 index 000000000..d58b073dd Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_9.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_9.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_9.txt new file mode 100644 index 000000000..061a4a4be --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/audio_tokens_chunk_9.txt @@ -0,0 +1 @@ +1645,1605,140,3468,4915,3321,1398,5826,237,5651,5159,4407,4749,4857,2501,791,2113,4299,6486,6486,6486,6486,4299,4299,4299,4299,4299,2112,864,5835,1466,4463,147,27,4961,5093,606,165,5844,5269,122,1644,60,4947,5641,4598,4460,4500,5121,6486,3975,5838,1464,2112,2706,4836,3813,916,818,8,2402,5319,4509,4615,4444,5645,5645 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/generation_done.flag b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/generation_done.flag new file mode 100644 index 000000000..95f9650f0 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/generation_done.flag @@ -0,0 +1 @@ +49 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_0.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_0.wav new file mode 100644 index 000000000..6abcf4a93 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_0.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_1.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_1.wav new file mode 100644 index 000000000..4499ae4a9 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_1.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_10.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_10.wav new file mode 100644 index 000000000..445000701 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_10.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_11.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_11.wav new file mode 100644 index 000000000..f2541bc63 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_11.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_12.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_12.wav new file mode 100644 index 000000000..8a3c75c7f Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_12.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_13.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_13.wav new file mode 100644 index 000000000..fa58c301f Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_13.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_14.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_14.wav new file mode 100644 index 000000000..ec137d5f5 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_14.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_15.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_15.wav new file mode 100644 index 000000000..d2a0604aa Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_15.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_16.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_16.wav new file mode 100644 index 000000000..483a30dd9 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_16.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_17.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_17.wav new file mode 100644 index 000000000..c20192002 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_17.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_18.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_18.wav new file mode 100644 index 000000000..97fc0da57 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_18.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_19.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_19.wav new file mode 100644 index 000000000..7621129ee Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_19.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_2.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_2.wav new file mode 100644 index 000000000..c42d90896 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_2.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_20.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_20.wav new file mode 100644 index 000000000..a8f0dccce Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_20.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_21.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_21.wav new file mode 100644 index 000000000..84f3c0fdd Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_21.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_22.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_22.wav new file mode 100644 index 000000000..132fb5266 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_22.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_23.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_23.wav new file mode 100644 index 000000000..9cf496645 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_23.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_24.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_24.wav new file mode 100644 index 000000000..26fb0991d Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_24.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_25.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_25.wav new file mode 100644 index 000000000..72170bf9e Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_25.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_26.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_26.wav new file mode 100644 index 000000000..5ef53dc40 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_26.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_27.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_27.wav new file mode 100644 index 000000000..ffcaf760b Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_27.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_28.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_28.wav new file mode 100644 index 000000000..ad6b8e5be Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_28.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_29.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_29.wav new file mode 100644 index 000000000..186fec563 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_29.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_3.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_3.wav new file mode 100644 index 000000000..b6c040110 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_3.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_30.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_30.wav new file mode 100644 index 000000000..a149d49a6 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_30.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_31.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_31.wav new file mode 100644 index 000000000..0a733d038 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_31.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_32.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_32.wav new file mode 100644 index 000000000..a94851e32 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_32.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_33.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_33.wav new file mode 100644 index 000000000..76da139d0 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_33.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_34.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_34.wav new file mode 100644 index 000000000..dd92a29b3 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_34.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_35.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_35.wav new file mode 100644 index 000000000..bca3c960a Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_35.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_36.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_36.wav new file mode 100644 index 000000000..38de3a477 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_36.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_37.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_37.wav new file mode 100644 index 000000000..1c03fa2df Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_37.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_38.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_38.wav new file mode 100644 index 000000000..235c2c493 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_38.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_39.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_39.wav new file mode 100644 index 000000000..06e53066c Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_39.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_4.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_4.wav new file mode 100644 index 000000000..ad230c875 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_4.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_40.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_40.wav new file mode 100644 index 000000000..890aff3dd Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_40.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_41.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_41.wav new file mode 100644 index 000000000..141d0ab5c Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_41.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_42.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_42.wav new file mode 100644 index 000000000..b86e839ea Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_42.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_43.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_43.wav new file mode 100644 index 000000000..141fe6484 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_43.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_44.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_44.wav new file mode 100644 index 000000000..fa2e278cb Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_44.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_45.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_45.wav new file mode 100644 index 000000000..9c3a0551b Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_45.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_46.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_46.wav new file mode 100644 index 000000000..1ce6e940a Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_46.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_47.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_47.wav new file mode 100644 index 000000000..1194307d6 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_47.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_48.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_48.wav new file mode 100644 index 000000000..cfd5e3cbc Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_48.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_49.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_49.wav new file mode 100644 index 000000000..2014e01eb Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_49.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_5.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_5.wav new file mode 100644 index 000000000..f4f6354d9 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_5.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_6.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_6.wav new file mode 100644 index 000000000..b3bad623e Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_6.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_7.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_7.wav new file mode 100644 index 000000000..58836460d Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_7.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_8.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_8.wav new file mode 100644 index 000000000..b76320731 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_8.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_9.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_9.wav new file mode 100644 index 000000000..9cd437add Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_9.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_timing.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_timing.txt new file mode 100644 index 000000000..478e4b1af --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/round_000/tts_wav/wav_timing.txt @@ -0,0 +1,3 @@ +# WAV file generation timing log +# Format: chunk_index, elapsed_time_ms (since stream_decode start), file_size_bytes, request_duration_ms +# Time 0 is when stream_decode() function starts diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/speech_asr_proxy.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/speech_asr_proxy.json new file mode 100644 index 000000000..6254f0b71 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/speech_asr_proxy.json @@ -0,0 +1,18 @@ +{ + "scope": "Whisper Mandarin ASR proxy for generated speech; no input-task or perceptual-quality claim", + "asr_model": "openai/whisper-tiny", + "asr_revision": "169d4a4341b33bc18d8881c4b69c2e104e1cc0af", + "asr_weights_sha256": "7ebd0e69e78190ffe1438491fa05cc1f5c1aa3a4c4db3bc1723adbb551ea2395", + "transformers": "4.57.3", + "torch": "2.4.1+cpu", + "wav_sha256": "a38e7fdea006f4b785b8ee857aeb4c3b4b0f4a7a2039c6e34f6723c105c8da02", + "wav_duration_s": 49.16, + "reference_text": "哎呀,这个问题挺有意思的!要是让我去一个完全没去过的地方,那我肯定得去北极啊!你想啊,那地方冰天雪地的,白茫茫的一片,连路都没有,走路都得小心翼翼的。但你说这地方多刺激!穿厚厚的羽绒服,戴上防风手套,脚底下踩着雪板或者雪鞋,一步一步往前挪,呼哧呼哧喘着粗气。抬头看天,全是星星,连北极光都能看见,那叫一个美!不过呢,也挺难的,吃饭得靠口哨,因为风声太大,说话听不清。坐那儿吃点热汤,暖暖身子,再看看远处的冰山,那才叫过瘾!你说这地方荒不荒?可就是这荒,才让人觉得活着真痛快!", + "transcript": "哎呀,这个问题挺有意思的。要是让我去一个完全没去过的地方,难我肯定得去北极啊。你想啊。那地方冰天雪地的白茫茫的一片,别路都没有。走路都得小心一一单。但你说这地方多刺激,传后后的雨容符,带上房风手套,脚底下踩着雪板或者雪鞋,一步一步往前挪,胡植胡植传着出气。排透看天 全是星星連北極光都能看見 那叫一個美不過呢 也挺難的 吃飯得靠口事兒因為風聲太大 說話聽不清 做那吃點熱湯 暖暖身子在看看遠處的冰山 那才叫過言你說 這地方荒不荒可就是這荒 才讓人覺得活著真痛快", + "asr_segments_25_s": 2, + "character_error_rate_raw": 0.2524271844660194, + "character_error_rate_t2s_normalized": 0.13592233009708737, + "normalization": "OpenCC 0.1.7 t2s; punctuation ignored", + "load_s": 0.7400863000657409, + "inference_s": 3.526489199954085 +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/speech_asr_proxy.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/speech_asr_proxy.log new file mode 100644 index 000000000..b62395a47 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/speech_asr_proxy.log @@ -0,0 +1,18 @@ +{ + "scope": "Whisper Mandarin ASR proxy for generated speech; no input-task or perceptual-quality claim", + "asr_model": "openai/whisper-tiny", + "asr_revision": "169d4a4341b33bc18d8881c4b69c2e104e1cc0af", + "asr_weights_sha256": "7ebd0e69e78190ffe1438491fa05cc1f5c1aa3a4c4db3bc1723adbb551ea2395", + "transformers": "4.57.3", + "torch": "2.4.1+cpu", + "wav_sha256": "a38e7fdea006f4b785b8ee857aeb4c3b4b0f4a7a2039c6e34f6723c105c8da02", + "wav_duration_s": 49.16, + "reference_text": "��ѽ���������ͦ����˼�ģ�Ҫ������ȥһ����ȫûȥ���ĵط������ҿ϶���ȥ�����������밡���ǵط�����ѩ�صģ���ãã��һƬ����·��û�У���·����С�������ġ�����˵��ط���̼������������޷������Ϸ������ף��ŵ��²���ѩ�����ѩЬ��һ��һ����ǰŲ��������괭�Ŵ�����̧ͷ���죬ȫ�����ǣ��������ⶼ�ܿ������ǽ�һ�����������أ�Ҳͦ�ѵģ��Է��ÿ����ڣ���Ϊ����̫��˵�������塣���Ƕ��Ե�������ůů���ӣ��ٿ���Զ���ı�ɽ���DzŽй�񫣡��˵��ط��IJ��ģ��ɾ�����ģ������˾��û�����ʹ�죡", + "transcript": "��ѽ,�������ͦ����˼�ġ�Ҫ������ȥһ����ȫûȥ���ĵط�,���ҿ϶���ȥ�����������밡���ǵط�����ѩ�صİ�ãã��һƬ,��·��û�С���·����С��һһ��������˵��ط���̼�,���������ݷ�,���Ϸ�������,�ŵ��²���ѩ�����ѩЬ,һ��һ����ǰŲ,��ֲ��ֲ���ų�������͸���� ȫ�������B���O�ⶼ�ܿ�Ҋ �ǽ�һ�������^�� Ҳͦ�y�� ��ÿ����ƒ�����L•̫�� �fԒ ���� ���dz��c�ᜫ ůů�����ڿ����h̎�ı�ɽ �DzŽ��^�����f �@�ط��IJ��Ŀɾ����@�� ��׌���X�û�����ʹ��", + "asr_segments_25_s": 2, + "character_error_rate_raw": 0.2524271844660194, + "character_error_rate_t2s_normalized": 0.13592233009708737, + "normalization": "OpenCC 0.1.7 t2s; punctuation ignored", + "load_s": 0.7400863000657409, + "inference_s": 3.526489199954085 +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/README.md b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/README.md new file mode 100644 index 000000000..8b2ae161e --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/README.md @@ -0,0 +1,5 @@ +# Native Windows MiniCPM-o C++ CPU attempt 1 — incomplete audio + +The pinned `openbmb/MiniCPM-o-4_5-gguf` ten-file set and the `tc-mb/llama.cpp-omni` CLI cross-built for native Windows CPU loaded and processed index 1 containing a synthetic JPEG red square and 2 s/440 Hz audio. Text was generated, but the full speech path **failed its completion check**. The CLI exited with status 0 after 615.19 s even though only 15 contiguous `wav_N.wav` chunks existed and `generation_done.flag` was absent. The raw [stdout](full.stdout.log), [stderr](full.stderr.log), [process profile](full.profile.json), and [partial WAV chunks](tts_wav/) are preserved. Sampled process RSS/private-byte maxima were 9.74/9.95 GB at 100 ms intervals; these are not guaranteed loading peaks. + +The C++ CLI waited at most 120 s for the audio completion marker, then stopped its worker threads without turning the missing marker into a nonzero exit. Its optional merger also searched for `tts_output_chunk_N.wav`, while the vocoder wrote `wav_N.wav`. Both defects are visible in the raw logs. The follow-up CLI patch makes the wait bound configurable and returns status 2 on timeout; the retry uses a separate x86-64-v3 build and work directory. No result from this attempt is classified as a complete native Windows path. diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/full.profile.json b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/full.profile.json new file mode 100644 index 000000000..b94732b51 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/full.profile.json @@ -0,0 +1,27 @@ +{ + "command": [ + "C:\\Users\\zhout\\w2\\minicpmo_cpp_cpu\\llama-omni-cli.exe", + "-m", + "C:\\Users\\zhout\\w2\\models\\MiniCPM-o-4_5-gguf\\MiniCPM-o-4_5-Q4_K_M.gguf", + "-ngl", + "0", + "-c", + "2048", + "--omni", + "--t2w-device", + "cpu", + "--ref-audio", + "C:\\Users\\zhout\\w2\\minicpmo_cpp_cpu\\default_ref_audio.wav", + "--test", + "C:\\Users\\zhout\\w2\\minicpmo_cpp_cpu\\fixture_", + "2" + ], + "cwd": "C:\\Users\\zhout\\w2\\minicpmo_cpp_cpu", + "exit_code": 0, + "wall_s": 615.1948444000445, + "memory_sample_interval_ms": 100, + "memory_samples": 6120, + "peak_sampled_rss_bytes": 9741307904, + "peak_sampled_private_bytes": 9946738688, + "measurement_note": "sampled process values, not guaranteed loading peaks" +} diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/full.stderr.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/full.stderr.log new file mode 100644 index 000000000..a44fabeb1 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/full.stderr.log @@ -0,0 +1,347 @@ +build: 64 (5202b7b) with x86_64-w64-mingw32-gcc-posix (GCC) 13-posix for x86_64-w64-mingw32 +llama_model_loader: loaded meta data with 27 key-value pairs and 399 tensors from C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf\MiniCPM-o-4_5-Q4_K_M.gguf (version GGUF V3 (latest)) +llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output. +llama_model_loader: - kv 0: general.architecture str = qwen3 +llama_model_loader: - kv 1: general.type str = model +llama_model_loader: - kv 2: general.name str = Llm +llama_model_loader: - kv 3: general.size_label str = 8.2B +llama_model_loader: - kv 4: qwen3.block_count u32 = 36 +llama_model_loader: - kv 5: qwen3.context_length u32 = 40960 +llama_model_loader: - kv 6: qwen3.embedding_length u32 = 4096 +llama_model_loader: - kv 7: qwen3.feed_forward_length u32 = 12288 +llama_model_loader: - kv 8: qwen3.attention.head_count u32 = 32 +llama_model_loader: - kv 9: qwen3.attention.head_count_kv u32 = 8 +llama_model_loader: - kv 10: qwen3.rope.freq_base f32 = 1000000.000000 +llama_model_loader: - kv 11: qwen3.attention.layer_norm_rms_epsilon f32 = 0.000001 +llama_model_loader: - kv 12: qwen3.attention.key_length u32 = 128 +llama_model_loader: - kv 13: qwen3.attention.value_length u32 = 128 +llama_model_loader: - kv 14: tokenizer.ggml.model str = gpt2 +llama_model_loader: - kv 15: tokenizer.ggml.pre str = qwen2 +llama_model_loader: - kv 16: tokenizer.ggml.tokens arr[str,151748] = ["!", "\"", "#", "$", "%", "&", "'", ... +llama_model_loader: - kv 17: tokenizer.ggml.token_type arr[i32,151748] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ... +llama_model_loader: - kv 18: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",... +llama_model_loader: - kv 19: tokenizer.ggml.bos_token_id u32 = 151644 +llama_model_loader: - kv 20: tokenizer.ggml.eos_token_id u32 = 151645 +llama_model_loader: - kv 21: tokenizer.ggml.unknown_token_id u32 = 128244 +llama_model_loader: - kv 22: tokenizer.ggml.padding_token_id u32 = 151643 +llama_model_loader: - kv 23: tokenizer.ggml.add_bos_token bool = false +llama_model_loader: - kv 24: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>... +llama_model_loader: - kv 25: general.quantization_version u32 = 2 +llama_model_loader: - kv 26: general.file_type u32 = 15 +llama_model_loader: - type f32: 145 tensors +llama_model_loader: - type q4_K: 217 tensors +llama_model_loader: - type q6_K: 37 tensors +print_info: file format = GGUF V3 (latest) +print_info: file type = Q4_K - Medium +print_info: file size = 4.68 GiB (4.90 BPW) +load: printing all EOG tokens: +load: - 151643 ('<|endoftext|>') +load: - 151645 ('<|im_end|>') +load: - 151662 ('<|fim_pad|>') +load: - 151663 ('<|repo_name|>') +load: - 151664 ('<|file_sep|>') +load: special tokens cache size = 106 +load: token to piece cache size = 0.9319 MB +print_info: arch = qwen3 +print_info: vocab_only = 0 +print_info: n_ctx_train = 40960 +print_info: n_embd = 4096 +print_info: n_layer = 36 +print_info: n_head = 32 +print_info: n_head_kv = 8 +print_info: n_rot = 128 +print_info: n_swa = 0 +print_info: is_swa_any = 0 +print_info: n_embd_head_k = 128 +print_info: n_embd_head_v = 128 +print_info: n_gqa = 4 +print_info: n_embd_k_gqa = 1024 +print_info: n_embd_v_gqa = 1024 +print_info: f_norm_eps = 0.0e+00 +print_info: f_norm_rms_eps = 1.0e-06 +print_info: f_clamp_kqv = 0.0e+00 +print_info: f_max_alibi_bias = 0.0e+00 +print_info: f_logit_scale = 0.0e+00 +print_info: f_attn_scale = 0.0e+00 +print_info: n_ff = 12288 +print_info: n_expert = 0 +print_info: n_expert_used = 0 +print_info: causal attn = 1 +print_info: pooling type = -1 +print_info: rope type = 2 +print_info: rope scaling = linear +print_info: freq_base_train = 1000000.0 +print_info: freq_scale_train = 1 +print_info: n_ctx_orig_yarn = 40960 +print_info: rope_finetuned = unknown +print_info: model type = 8B +print_info: model params = 8.19 B +print_info: general.name = Llm +print_info: vocab type = BPE +print_info: n_vocab = 151748 +print_info: n_merges = 151387 +print_info: BOS token = 151644 '<|im_start|>' +print_info: EOS token = 151645 '<|im_end|>' +print_info: EOT token = 151645 '<|im_end|>' +print_info: UNK token = 128244 '' +print_info: PAD token = 151643 '<|endoftext|>' +print_info: LF token = 198 'Ċ' +print_info: FIM PRE token = 151659 '<|fim_prefix|>' +print_info: FIM SUF token = 151661 '<|fim_suffix|>' +print_info: FIM MID token = 151660 '<|fim_middle|>' +print_info: FIM PAD token = 151662 '<|fim_pad|>' +print_info: FIM REP token = 151663 '<|repo_name|>' +print_info: FIM SEP token = 151664 '<|file_sep|>' +print_info: EOG token = 151643 '<|endoftext|>' +print_info: EOG token = 151645 '<|im_end|>' +print_info: EOG token = 151662 '<|fim_pad|>' +print_info: EOG token = 151663 '<|repo_name|>' +print_info: EOG token = 151664 '<|file_sep|>' +print_info: max token length = 256 +load_tensors: loading model tensors, this can take a while... (mmap = true) +load_tensors: CPU_Mapped model buffer size = 4788.17 MiB +..................................................................................... +llama_context: constructing llama_context +llama_context: n_seq_max = 1 +llama_context: n_ctx = 2048 +llama_context: n_ctx_per_seq = 2048 +llama_context: n_batch = 2048 +llama_context: n_ubatch = 512 +llama_context: causal_attn = 1 +llama_context: flash_attn = auto +llama_context: kv_unified = false +llama_context: freq_base = 1000000.0 +llama_context: freq_scale = 1 +llama_context: n_ctx_per_seq (2048) < n_ctx_train (40960) -- the full capacity of the model will not be utilized +llama_context: CPU output buffer size = 0.58 MiB +llama_kv_cache: CPU KV buffer size = 288.00 MiB +llama_kv_cache: size = 288.00 MiB ( 2048 cells, 36 layers, 1/1 seqs), K (f16): 144.00 MiB, V (f16): 144.00 MiB +llama_context: Flash Attention was auto, set to enabled +llama_context: CPU compute buffer size = 304.38 MiB +llama_context: graph nodes = 1267 +llama_context: graph splits = 1 +llama_model_loader: loaded meta data with 30 key-value pairs and 193 tensors from C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf (version GGUF V3 (latest)) +llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output. +llama_model_loader: - kv 0: general.architecture str = llama +llama_model_loader: - kv 1: general.type str = model +llama_model_loader: - kv 2: general.name str = Tts +llama_model_loader: - kv 3: general.size_label str = 445M +llama_model_loader: - kv 4: llama.block_count u32 = 20 +llama_model_loader: - kv 5: llama.context_length u32 = 4096 +llama_model_loader: - kv 6: llama.embedding_length u32 = 768 +llama_model_loader: - kv 7: llama.feed_forward_length u32 = 3072 +llama_model_loader: - kv 8: llama.attention.head_count u32 = 12 +llama_model_loader: - kv 9: llama.attention.head_count_kv u32 = 12 +llama_model_loader: - kv 10: llama.rope.freq_base f32 = 10000.000000 +llama_model_loader: - kv 11: llama.attention.layer_norm_rms_epsilon f32 = 0.000001 +llama_model_loader: - kv 12: llama.attention.key_length u32 = 64 +llama_model_loader: - kv 13: llama.attention.value_length u32 = 64 +llama_model_loader: - kv 14: general.file_type u32 = 1 +llama_model_loader: - kv 15: llama.vocab_size u32 = 158626 +llama_model_loader: - kv 16: llama.rope.dimension_count u32 = 64 +llama_model_loader: - kv 17: general.quantization_version u32 = 2 +llama_model_loader: - kv 18: tokenizer.ggml.model str = gpt2 +llama_model_loader: - kv 19: tokenizer.ggml.pre str = qwen2 +llama_model_loader: - kv 20: tokenizer.ggml.tokens arr[str,158626] = ["!", "\"", "#", "$", "%", "&", "'", ... +llama_model_loader: - kv 21: tokenizer.ggml.token_type arr[i32,158626] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ... +llama_model_loader: - kv 22: tokenizer.ggml.merges arr[str,151387] = ["Ġ Ġ", "ĠĠ ĠĠ", "i n", "Ġ t",... +llama_model_loader: - kv 23: tokenizer.ggml.bos_token_id u32 = 151644 +llama_model_loader: - kv 24: tokenizer.ggml.eos_token_id u32 = 151645 +llama_model_loader: - kv 25: tokenizer.ggml.unknown_token_id u32 = 128244 +llama_model_loader: - kv 26: tokenizer.ggml.padding_token_id u32 = 151643 +llama_model_loader: - kv 27: tokenizer.ggml.add_bos_token bool = false +llama_model_loader: - kv 28: tokenizer.chat_template str = {%- if tools %}\n {{- '<|im_start|>... +llama_model_loader: - kv 29: tokenizer.ggml.add_space_prefix bool = false +llama_model_loader: - type f32: 50 tensors +llama_model_loader: - type f16: 143 tensors +print_info: file format = GGUF V3 (latest) +print_info: file type = F16 +print_info: file size = 1.07 GiB (20.70 BPW) +load: printing all EOG tokens: +load: - 151643 ('<|endoftext|>') +load: - 151645 ('<|im_end|>') +load: - 151662 ('<|fim_pad|>') +load: - 151663 ('<|repo_name|>') +load: - 151664 ('<|file_sep|>') +load: special tokens cache size = 106 +load: token to piece cache size = 0.9319 MB +print_info: arch = llama +print_info: vocab_only = 0 +print_info: n_ctx_train = 4096 +print_info: n_embd = 768 +print_info: n_layer = 20 +print_info: n_head = 12 +print_info: n_head_kv = 12 +print_info: n_rot = 64 +print_info: n_swa = 0 +print_info: is_swa_any = 0 +print_info: n_embd_head_k = 64 +print_info: n_embd_head_v = 64 +print_info: n_gqa = 1 +print_info: n_embd_k_gqa = 768 +print_info: n_embd_v_gqa = 768 +print_info: f_norm_eps = 0.0e+00 +print_info: f_norm_rms_eps = 1.0e-06 +print_info: f_clamp_kqv = 0.0e+00 +print_info: f_max_alibi_bias = 0.0e+00 +print_info: f_logit_scale = 0.0e+00 +print_info: f_attn_scale = 0.0e+00 +print_info: n_ff = 3072 +print_info: n_expert = 0 +print_info: n_expert_used = 0 +print_info: causal attn = 1 +print_info: pooling type = 0 +print_info: rope type = 0 +print_info: rope scaling = linear +print_info: freq_base_train = 10000.0 +print_info: freq_scale_train = 1 +print_info: n_ctx_orig_yarn = 4096 +print_info: rope_finetuned = unknown +print_info: model type = ?B +print_info: model params = 444.94 M +print_info: general.name = Tts +print_info: vocab type = BPE +print_info: n_vocab = 158626 +print_info: n_merges = 151387 +print_info: BOS token = 151644 '<|im_start|>' +print_info: EOS token = 151645 '<|im_end|>' +print_info: EOT token = 151645 '<|im_end|>' +print_info: UNK token = 128244 '' +print_info: PAD token = 151643 '<|endoftext|>' +print_info: LF token = 198 'Ċ' +print_info: FIM PRE token = 151659 '<|fim_prefix|>' +print_info: FIM SUF token = 151661 '<|fim_suffix|>' +print_info: FIM MID token = 151660 '<|fim_middle|>' +print_info: FIM PAD token = 151662 '<|fim_pad|>' +print_info: FIM REP token = 151663 '<|repo_name|>' +print_info: FIM SEP token = 151664 '<|file_sep|>' +print_info: EOG token = 151643 '<|endoftext|>' +print_info: EOG token = 151645 '<|im_end|>' +print_info: EOG token = 151662 '<|fim_pad|>' +print_info: EOG token = 151663 '<|repo_name|>' +print_info: EOG token = 151664 '<|file_sep|>' +print_info: max token length = 256 +load_tensors: loading model tensors, this can take a while... (mmap = true) +load_tensors: skipping TTS tensor emb_code.0.weight (size = 20158464 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor emb_text.weight (size = 467140608 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_semantic.linear1.weight (size = 12582912 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_semantic.linear1.bias (size = 3072 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_semantic.linear2.weight (size = 2359296 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_semantic.linear2.bias (size = 3072 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_spk.linear1.weight (size = 6291456 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_spk.linear1.bias (size = 3072 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_spk.linear2.weight (size = 1179648 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor projector_spk.linear2.bias (size = 3072 bytes) -- will be loaded separately +load_tensors: skipping TTS tensor head_code.0.weight (size = 20158464 bytes) -- will be loaded separately +load_tensors: CPU_Mapped model buffer size = 592.48 MiB +.............................................................. +llama_init_from_model: model default pooling_type is [0], but [-1] was specified +llama_context: constructing llama_context +llama_context: n_seq_max = 1 +llama_context: n_ctx = 2048 +llama_context: n_ctx_per_seq = 2048 +llama_context: n_batch = 2048 +llama_context: n_ubatch = 512 +llama_context: causal_attn = 1 +llama_context: flash_attn = auto +llama_context: kv_unified = false +llama_context: freq_base = 10000.0 +llama_context: freq_scale = 1 +llama_context: n_ctx_per_seq (2048) < n_ctx_train (4096) -- the full capacity of the model will not be utilized +llama_context: CPU output buffer size = 0.61 MiB +llama_kv_cache: CPU KV buffer size = 120.00 MiB +llama_kv_cache: size = 120.00 MiB ( 2048 cells, 20 layers, 1/1 seqs), K (f16): 60.00 MiB, V (f16): 60.00 MiB +llama_context: Flash Attention was auto, set to enabled +llama_context: CPU compute buffer size = 25.51 MiB +llama_context: graph nodes = 613 +llama_context: graph splits = 1 +vision_model_loader: model name: +vision_model_loader: description: image encoder for MiniCPM-V +vision_model_loader: GGUF version: 3 +vision_model_loader: alignment: 32 +vision_model_loader: n_tensors: 455 +vision_model_loader: n_kv: 20 + +vision_ctx: vision using CPU backend +load_hparams: model_type: 0 +load_hparams: n_embd: 1152 +load_hparams: n_head: 16 +load_hparams: n_ff: 4304 +load_hparams: n_layer: 27 +load_hparams: ffn_op: gelu +load_hparams: projection_dim: 0 + +--- vision hparams --- +load_hparams: image_size: 448 +load_hparams: patch_size: 14 +load_hparams: minicpmv_version: 100045 +load_hparams: proj_scale_factor: 0 +load_hparams: n_wa_pattern: 0 + +load_hparams: model size: 1044.36 MiB +load_hparams: metadata size: 0.16 MiB +load_tensors: ffn up/down are swapped +alloc_compute_meta: CPU compute buffer size = 100.30 MiB +init tts....init t2w....voc_hg2_model: CPU backend using 8 threads +audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000 +audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins +audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201 +audition_audio_preprocess: Generated 1 mel spectrogram chunk(s) +audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000 +build_whisper: Whisper encoder graph built (projector output, pre-pooling) +audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000 +audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=0, current_total=0, new_total=100, max_tokens=1500 +audition_audio_batch_encode: KV cache iter incremented to 1 (total_tokens=100, max_tokens=1500) +audition_audio_batch_encode: Final output shape: [4096, 20] +audition_audio_batch_encode: Final output: 20 tokens x 4096 dims +encode_image_with_vision_chunks: step 1 of 1 encoded in 86825.27 ms +encode_image_with_vision_chunks: all 1 chunks encoded in 86844.85 ms (grid: 1x1) + +encode_image_with_vision_chunks: image encoded in 86844.85 ms by vision (86844.85 ms per chunk, 64 total tokens) +omni_image_embed_make_chunks_with_filename: created 1 vision chunks from C:\Users\zhout\w2\minicpmo_cpp_cpu\fixture_0001.jpg +stream_prefill: prefilled 1 vision chunks (64 tokens each) +audition_audio_preprocess: Decoded audio - sample_rate=16000, n_samples=32000 +audition_get_mel_filters: Retrieved mel filters from model: 80 mel bins x 201 fft bins +audition_audio_preprocess: Using mel filters - n_mel=80, n_fft=201 +audition_audio_preprocess: Generated 1 mel spectrogram chunk(s) +audition_audio_preprocess: Mel spectrogram ready - n_len=200, n_mel=80, total_size=16000 +build_whisper: Whisper encoder graph built (projector output, pre-pooling) +audition_audio_batch_encode: Audio input data - n_step=200, n_mel=80, total_elements=16000 +audition_audio_batch_encode: Before incrementing iter: input_frames=200, n_tokens=100, current_iter=1, current_total=100, new_total=200, max_tokens=1500 +audition_audio_batch_encode: KV cache iter incremented to 2 (total_tokens=200, max_tokens=1500) +audition_audio_batch_encode: Final output shape: [4096, 20] +audition_audio_batch_encode: Final output: 20 tokens x 4096 dims + +[timing] call=0 tokens=28 final=0 token2mel=31525.708ms vocoder=1776.402ms total=33302.139ms audio=20160 +Waiting for audio generation to complete... +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_0.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_1.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_2.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_3.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_4.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_5.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_6.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_7.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_8.wav does not exist or is empty +TTS: chunk file ./tools/omni/output/round_000/tts_wav/tts_output_chunk_9.wav does not exist or is empty +TTS: no valid WAV files to merge +[timing] call=1 tokens=28 final=0 token2mel=30432.205ms vocoder=1974.513ms total=32406.732ms audio=24000 +[timing] call=2 tokens=28 final=0 token2mel=25556.728ms vocoder=1878.240ms total=27434.979ms audio=24000 +[timing] call=3 tokens=28 final=0 token2mel=25402.185ms vocoder=1878.328ms total=27280.524ms audio=24000 +[timing] call=4 tokens=28 final=0 token2mel=25296.191ms vocoder=1881.274ms total=27177.478ms audio=24000 +[timing] call=5 tokens=28 final=0 token2mel=25272.029ms vocoder=1876.484ms total=27148.523ms audio=24000 +[timing] call=6 tokens=28 final=0 token2mel=25308.797ms vocoder=1901.507ms total=27210.316ms audio=24000 +[timing] call=7 tokens=28 final=0 token2mel=25250.724ms vocoder=1896.539ms total=27147.276ms audio=24000 +[timing] call=8 tokens=28 final=0 token2mel=25243.683ms vocoder=1902.342ms total=27146.037ms audio=24000 +[timing] call=9 tokens=28 final=0 token2mel=25236.563ms vocoder=1882.978ms total=27119.552ms audio=24000 +[timing] call=10 tokens=28 final=0 token2mel=25210.446ms vocoder=1882.224ms total=27092.683ms audio=24000 +[timing] call=11 tokens=28 final=0 token2mel=25245.570ms vocoder=1885.475ms total=27131.056ms audio=24000 +[timing] call=12 tokens=28 final=0 token2mel=25260.142ms vocoder=1887.058ms total=27147.212ms audio=24000 +[timing] call=13 tokens=28 final=0 token2mel=25288.979ms vocoder=1862.812ms total=27151.803ms audio=24000 +[timing] call=14 tokens=28 final=0 token2mel=25367.192ms vocoder=1869.590ms total=27236.797ms audio=24000 +llama_perf_context_print: load time = 186693.57 ms +llama_perf_context_print: prompt eval time = 185045.77 ms / 171 tokens ( 1082.14 ms per token, 0.92 tokens per second) +llama_perf_context_print: eval time = 60070.47 ms / 86 runs ( 698.49 ms per token, 1.43 tokens per second) +llama_perf_context_print: total time = 613871.29 ms / 257 tokens +llama_perf_context_print: graphs reused = 86 +Token2Wav (C++): session released diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/full.stdout.log b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/full.stdout.log new file mode 100644 index 000000000..df2e64e02 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/full.stdout.log @@ -0,0 +1,377 @@ +=== Model Paths === + Base dir: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf + LLM: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf\MiniCPM-o-4_5-Q4_K_M.gguf [OK] + Vision: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/vision/MiniCPM-o-4_5-vision-F16.gguf [OK] + Audio: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf [OK] + TTS: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-tts-F16.gguf [OK] + Projector: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf [OK] +=================== +=== Initializing Omni Context === + Media type: 2 (omni: audio+vision) + TTS enabled: yes + Context size: 2048 + GPU layers: 0 + Token2Wav device: cpu + Vision backend: metal + TTS bin dir: C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/tts + Ref audio: C:\Users\zhout\w2\minicpmo_cpp_cpu\default_ref_audio.wav +21:53:27.038 === omni_init start +21:53:27.038 media_type = 2, duplex_mode = 0, base_output_dir = ./tools/omni/output +21:53:27.038 === omni_init: loading new LLM model +21:53:27.502 === omni_init: loading TTS model +21:53:27.503 TTS model: loading with n_gpu_layers=0 +21:53:27.769 TTS sampler: temp=0.80, top_p=0.85, top_k=25, rep_penalty=1.05 +21:53:27.769 TTS: loading weights from GGUF (emb_code, emb_text, projector_semantic, head_code)... +21:53:28.222 TTS: head_code shape: dim0=6562, dim1=768, will transpose to [6562, 768] +21:53:28.227 TTS: head_code loaded, verifying first few values: +21:53:28.227 head_code_weight[0] = 0.01361084 (expect ~0.01385498) +21:53:28.227 head_code_weight[1] = -0.01660156 (expect ~-0.01647949) +21:53:28.227 head_code_weight[768] = 0.04101562 (this is weight[1, 0], expect ~0.04150391) +21:53:28.310 TTS: weights loaded successfully +21:53:28.310 Projector: loading from C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/tts/MiniCPM-o-4_5-projector-F16.gguf +21:53:28.316 Projector: loaded successfully +21:53:28.316 === omni_init: loading APM model +21:53:28.502 APM: init from C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/audio/MiniCPM-o-4_5-audio-F16.gguf +21:53:28.807 Token2Wav: found models in C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/token2wav-gguf +21:53:28.808 Token2Wav: all model files found, initializing session... +21:53:28.808 Token2Wav: non-CUDA backend, vocoder using CPU for better performance +21:53:28.808 Token2Wav: using prompt_cache from C:\Users\zhout\w2\models\MiniCPM-o-4_5-gguf/token2wav-gguf/prompt_cache.gguf +21:53:29.151 Token2Wav: initialized successfully +21:53:29.151 Python T2W: script_dir=./tools/omni/pyt2w, model_dir=./tools/omni/pyt2w/token2wav +21:53:29.151 Token2Wav: 使用 C++ 实现 +21:53:29.151 === omni_init success: ctx_llama = 000001cc11b7ea60 +=== Running test case === + Audio prefix: C:\Users\zhout\w2\minicpmo_cpp_cpu\fixture_ + Count: 2 +21:53:29.151 stream_prefill: n_past = 0 + voice_clone_prompt = <|im_start|>system +模仿音频样本的音色并生成新的内容。 +<|audio_start|> + assistant_prompt = <|audio_end|>你的任务是用这种声音模式来当一个助手。请认真、高质量地回复用户的问题。请用高自然度的方式和用户聊天。<|im_end|> +<|im_start|>user + +21:53:29.151 system prompt ref_audio: C:\Users\zhout\w2\minicpmo_cpp_cpu\fixture_0000.wav +21:53:42.152 system prompt ref_audio embedding: n_pos=20 +21:54:10.285 🔒 n_keep 设置为 72 (system prompt tokens),这部分永远不会被滑动窗口删除 +21:54:10.285 stream_prefill(index=0): system prompt 初始化完成,ref_audio 已在其中 prefill +21:54:10.285 [SW] system_prompt registered: preserve_length=72 (will be protected from sliding) +21:54:10.285 n_past = 72 +21:54:10.285 + +c++ finish stream_prefill(index=0). n_past=72, n_keep=72, n_ctx=2048 + +prefill 0 (audio) : 41.1345 s +21:56:11.738 stream_prefill(index=1): processing user audio: C:\Users\zhout\w2\minicpmo_cpp_cpu\fixture_0001.wav +21:56:17.370 stream_prefill(index=1): user audio embedding: n_pos=20 +21:56:28.993 + +c++ finish stream_prefill(index=1). n_past=161, n_keep=72, n_ctx=2048 + +prefill 1 (audio+vision) : 138.707 s +21:56:28.993 📍 stream_decode 开始: n_past=161, n_keep=72, n_ctx=2048, duplex_mode=0 +21:56:28.993 stream_decode: create tts thread (simplex mode) +21:56:28.993 stream_decode: create t2w thread +21:56:28.993 wait prefill done +21:56:28.993 📍 [单工TTS] 添加 assistant prompt: "<|im_end|> +<|im_start|>assistant + + + + +<|tts_bos|>", n_past=161 +21:56:28.994 T2W thread (C++) started +21:56:28.996 TTS: 创建单工模式输出目录: ./tools/omni/output/round_000 +21:56:28.996 TTS thread started +21:56:34.197 📍 [单工TTS] assistant prompt 完成, n_past=171 +21:56:34.197 LLM decode: max_tgt_len = 2048, n_predict = -1, n_ctx = 2048 +21:56:40.112 LLM->TTS: text='我昨天晚上看了一部特别好看的科幻片。', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[35946 104373 104030 115475 32948 100654 112942 110000 34718 1773] +21:56:40.112 TTS<-LLM: chunk_idx=0, text='我昨天晚上看了一部特别好看的科幻片。', n_tokens=10, hidden_size=40960, token_ids=[35946 104373 104030 115475 32948 100654 112942 110000 34718 1773] +21:56:40.112 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +21:56:40.112 TTS: before empty check - response.empty=0, response='我昨天晚上看了一部特别好看的科幻ç‰', llm_finish=0 +21:56:40.112 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +21:56:40.112 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +21:56:40.113 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +21:56:40.157 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_0/merged_embeddings.txt +21:56:40.157 TTS Simplex: generating audio tokens for chunk 0 (n_tokens=10, tts_n_embd=768) +21:56:40.157 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=0, new_size=11) +21:56:40.157 TTS Simplex: first chunk - cleared KV cache +21:56:40.157 TTS Simplex: first chunk - cleared tts_all_generated_tokens and tts_token_buffer +21:56:40.599 TTS Simplex: prefill completed, n_past_tts=11 +21:56:40.599 TTS Simplex: sampler created +21:56:40.599 TTS simplex: is_audio_bos=true (first audio token) +21:56:41.060 TTS Simplex Phase1: token 1/500: rel_id=3683 +21:56:41.111 TTS Simplex Phase1: token 2/500: rel_id=1948 +21:56:41.156 TTS Simplex Phase1: token 3/500: rel_id=4131 +21:56:41.204 TTS Simplex Phase1: token 4/500: rel_id=4212 +21:56:41.250 TTS Simplex Phase1: token 5/500: rel_id=4299 +21:56:42.230 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 25, buffer=25) +21:56:42.230 TTS Simplex Phase1: token 25/500: rel_id=3688 +21:56:42.230 T2W线程(C++): 轮次切换 (-1 -> 0),更新输出目录 +21:56:42.230 T2W线程(C++): 新输出目录 ./tools/omni/output/round_000/tts_wav +21:56:43.481 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 50, buffer=25) +21:56:43.481 TTS Simplex Phase1: token 50/500: rel_id=5085 +21:56:44.121 TTS Simplex Phase1: EOS token at step 63 +21:56:44.121 TTS Simplex: chunk 结束,tts_token_buffer 剩余 12 tokens (保留等下一个 chunk) +21:56:44.121 TTS Simplex: generated 62 audio tokens for chunk 0 +21:56:44.121 TTS Simplex: chunk 0 first tokens: [3683 1948 4131 4212 4299 ], last tokens: [643 81 2271 5843 1479 ] +21:56:44.121 TTS Simplex: updated tts_n_past_accumulated=73, total_generated_tokens=62 +21:56:46.817 LLM->TTS: text='剧情特别紧张,感觉全程没停过。', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[105461 100654 104432 3837 100681 105088 70927 94375 38182 1773] +21:56:46.817 TTS<-LLM: chunk_idx=1, text='剧情特别紧张,感觉全程没停过。', n_tokens=10, hidden_size=40960, token_ids=[105461 100654 104432 3837 100681 105088 70927 94375 38182 1773] +21:56:46.817 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +21:56:46.817 TTS: before empty check - response.empty=0, response='剧情特别紧张,感觉全程没停过。', llm_finish=0 +21:56:46.817 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +21:56:46.817 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +21:56:46.817 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +21:56:46.867 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_1/merged_embeddings.txt +21:56:46.867 TTS Simplex: generating audio tokens for chunk 1 (n_tokens=10, tts_n_embd=768) +21:56:46.867 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=1, new_size=11) +21:56:46.867 TTS Simplex: chunk 1 - keeping KV cache, n_past_tts=73 +21:56:47.302 TTS Simplex: prefill completed, n_past_tts=84 +21:56:47.302 TTS Simplex: sampler created +21:56:47.359 TTS Simplex Phase1: token 1/500: rel_id=20 +21:56:47.418 TTS Simplex Phase1: token 2/500: rel_id=397 +21:56:47.479 TTS Simplex Phase1: token 3/500: rel_id=246 +21:56:47.556 TTS Simplex Phase1: token 4/500: rel_id=162 +21:56:47.618 TTS Simplex Phase1: token 5/500: rel_id=2520 +21:56:48.089 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 13, buffer=25) +21:56:48.789 TTS Simplex Phase1: token 25/500: rel_id=5835 +21:56:49.554 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 38, buffer=25) +21:56:50.208 TTS Simplex Phase1: token 50/500: rel_id=1275 +21:56:50.884 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 63, buffer=25) +21:56:51.565 TTS Simplex Phase1: token 75/500: rel_id=3066 +21:56:52.309 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 88, buffer=25) +21:56:52.894 TTS Simplex Phase1: EOS token at step 99 +21:56:52.894 TTS Simplex: chunk 结束,tts_token_buffer 剩余 10 tokens (保留等下一个 chunk) +21:56:52.894 TTS Simplex: generated 98 audio tokens for chunk 1 +21:56:52.894 TTS Simplex: chunk 1 first tokens: [20 397 246 162 2520 ], last tokens: [4704 348 1481 4235 2050 ] +21:56:52.894 TTS Simplex: updated tts_n_past_accumulated=182, total_generated_tokens=160 +21:56:54.148 LLM->TTS: text='主角在太空站里发现了一个奇怪的信号', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[101622 18493 108481 70790 69249 99879 104059 106097 9370 104757] +21:56:54.148 TTS<-LLM: chunk_idx=2, text='主角在太空站里发现了一个奇怪的信号', n_tokens=10, hidden_size=40960, token_ids=[101622 18493 108481 70790 69249 99879 104059 106097 9370 104757] +21:56:54.148 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +21:56:54.148 TTS: before empty check - response.empty=0, response='主角在太空站里发现了一个奇怪的信å�', llm_finish=0 +21:56:54.148 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +21:56:54.148 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +21:56:54.148 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +21:56:54.198 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_2/merged_embeddings.txt +21:56:54.198 TTS Simplex: generating audio tokens for chunk 2 (n_tokens=10, tts_n_embd=768) +21:56:54.198 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=2, new_size=11) +21:56:54.198 TTS Simplex: chunk 2 - keeping KV cache, n_past_tts=182 +21:56:54.661 TTS Simplex: prefill completed, n_past_tts=193 +21:56:54.661 TTS Simplex: sampler created +21:56:54.714 TTS Simplex Phase1: token 1/500: rel_id=654 +21:56:54.768 TTS Simplex Phase1: token 2/500: rel_id=2915 +21:56:54.821 TTS Simplex Phase1: token 3/500: rel_id=2897 +21:56:54.878 TTS Simplex Phase1: token 4/500: rel_id=599 +21:56:54.933 TTS Simplex Phase1: token 5/500: rel_id=518 +21:56:55.477 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 15, buffer=25) +21:56:56.054 TTS Simplex Phase1: token 25/500: rel_id=1943 +21:56:56.906 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 40, buffer=25) +21:56:57.480 TTS Simplex Phase1: token 50/500: rel_id=3618 +21:56:58.154 TTS Simplex Phase1: EOS token at step 63 +21:56:58.154 TTS Simplex: chunk 结束,tts_token_buffer 剩余 22 tokens (保留等下一个 chunk) +21:56:58.154 TTS Simplex: generated 62 audio tokens for chunk 2 +21:56:58.154 TTS Simplex: chunk 2 first tokens: [654 2915 2897 599 518 ], last tokens: [1478 2753 2914 342 4601 ] +21:56:58.154 TTS Simplex: updated tts_n_past_accumulated=255, total_generated_tokens=222 +21:57:00.985 LLM->TTS: text=',然后就开始一路冒险。里面的特效做得特别', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[3837 101889 106138 102351 107658 1773 107172 112074 106630 100654] +21:57:00.985 TTS<-LLM: chunk_idx=3, text=',然后就开始一路冒险。里面的特效做得特别', n_tokens=10, hidden_size=40960, token_ids=[3837 101889 106138 102351 107658 1773 107172 112074 106630 100654] +21:57:00.985 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +21:57:00.985 TTS: before empty check - response.empty=0, response=',然后就开始一路冒险。里面的特效å�', llm_finish=0 +21:57:00.985 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +21:57:00.985 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +21:57:00.985 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +21:57:01.033 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_3/merged_embeddings.txt +21:57:01.033 TTS Simplex: generating audio tokens for chunk 3 (n_tokens=10, tts_n_embd=768) +21:57:01.033 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=3, new_size=11) +21:57:01.033 TTS Simplex: chunk 3 - keeping KV cache, n_past_tts=255 +21:57:01.534 TTS Simplex: prefill completed, n_past_tts=266 +21:57:01.534 TTS Simplex: sampler created +21:57:01.597 TTS Simplex Phase1: token 1/500: rel_id=1275 +21:57:01.653 TTS Simplex Phase1: token 2/500: rel_id=5645 +21:57:01.708 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 3, buffer=25) +21:57:01.708 TTS Simplex Phase1: token 3/500: rel_id=4676 +21:57:01.763 TTS Simplex Phase1: token 4/500: rel_id=4974 +21:57:01.820 TTS Simplex Phase1: token 5/500: rel_id=1862 +21:57:02.993 TTS Simplex Phase1: token 25/500: rel_id=4219 +21:57:03.159 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 28, buffer=25) +21:57:04.473 TTS Simplex Phase1: token 50/500: rel_id=1293 +21:57:04.663 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 53, buffer=25) +21:57:05.966 TTS Simplex Phase1: token 75/500: rel_id=6405 +21:57:06.137 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 78, buffer=25) +21:57:06.886 TTS Simplex Phase1: EOS token at step 91 +21:57:06.886 TTS Simplex: chunk 结束,tts_token_buffer 剩余 12 tokens (保留等下一个 chunk) +21:57:06.886 TTS Simplex: generated 90 audio tokens for chunk 3 +21:57:06.886 TTS Simplex: chunk 3 first tokens: [1275 5645 4676 4974 1862 ], last tokens: [368 4379 1482 4439 144 ] +21:57:06.886 TTS Simplex: updated tts_n_past_accumulated=356, total_generated_tokens=312 +21:57:08.084 LLM->TTS: text='真实,我都以为自己在看纪录片。最', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[100267 3837 107108 100762 99283 18493 50930 112867 1773 31235] +21:57:08.084 TTS<-LLM: chunk_idx=4, text='真实,我都以为自己在看纪录片。最', n_tokens=10, hidden_size=40960, token_ids=[100267 3837 107108 100762 99283 18493 50930 112867 1773 31235] +21:57:08.084 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +21:57:08.084 TTS: before empty check - response.empty=0, response='真实,我都以为自己在看纪录片。最', llm_finish=0 +21:57:08.084 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +21:57:08.084 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +21:57:08.084 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +21:57:08.139 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_4/merged_embeddings.txt +21:57:08.139 TTS Simplex: generating audio tokens for chunk 4 (n_tokens=10, tts_n_embd=768) +21:57:08.139 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=4, new_size=11) +21:57:08.139 TTS Simplex: chunk 4 - keeping KV cache, n_past_tts=356 +21:57:08.641 TTS Simplex: prefill completed, n_past_tts=367 +21:57:08.641 TTS Simplex: sampler created +21:57:08.709 TTS Simplex Phase1: token 1/500: rel_id=297 +21:57:08.775 TTS Simplex Phase1: token 2/500: rel_id=2997 +21:57:08.840 TTS Simplex Phase1: token 3/500: rel_id=2763 +21:57:08.898 TTS Simplex Phase1: token 4/500: rel_id=5086 +21:57:08.956 TTS Simplex Phase1: token 5/500: rel_id=2333 +21:57:09.436 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 13, buffer=25) +21:57:10.206 TTS Simplex Phase1: token 25/500: rel_id=2408 +21:57:11.030 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 38, buffer=25) +21:57:11.772 TTS Simplex Phase1: token 50/500: rel_id=144 +21:57:12.573 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 63, buffer=25) +21:57:13.324 TTS Simplex Phase1: token 75/500: rel_id=5856 +21:57:13.327 TTS Simplex Phase1: EOS token at step 76 +21:57:13.327 TTS Simplex: chunk 结束,tts_token_buffer 剩余 12 tokens (保留等下一个 chunk) +21:57:13.327 TTS Simplex: generated 75 audio tokens for chunk 4 +21:57:13.327 TTS Simplex: chunk 4 first tokens: [297 2997 2763 5086 2333 ], last tokens: [228 162 2916 5188 5856 ] +21:57:13.327 TTS Simplex: updated tts_n_past_accumulated=442, total_generated_tokens=387 +21:57:15.372 LLM->TTS: text='刺激的是最后十分钟,飞船要撞进黑洞', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[104313 100146 100161 115443 3837 115625 30534 101340 41299 118718] +21:57:15.372 TTS<-LLM: chunk_idx=5, text='刺激的是最后十分钟,飞船要撞进黑洞', n_tokens=10, hidden_size=40960, token_ids=[104313 100146 100161 115443 3837 115625 30534 101340 41299 118718] +21:57:15.372 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +21:57:15.372 TTS: before empty check - response.empty=0, response='刺激的是最后十分钟,飞船要撞进黑æ´', llm_finish=0 +21:57:15.372 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +21:57:15.372 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +21:57:15.372 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +21:57:15.429 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_5/merged_embeddings.txt +21:57:15.429 TTS Simplex: generating audio tokens for chunk 5 (n_tokens=10, tts_n_embd=768) +21:57:15.429 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=5, new_size=11) +21:57:15.429 TTS Simplex: chunk 5 - keeping KV cache, n_past_tts=442 +21:57:15.534 🎉 首响时间 (First Audio Response): 46540ms +21:57:15.534 T2W线程: wav_0.wav | 0.84s audio | 33302.2ms inference | RTF=39.65 | t=46540ms +21:57:15.971 TTS Simplex: prefill completed, n_past_tts=453 +21:57:15.971 TTS Simplex: sampler created +21:57:16.034 TTS Simplex Phase1: token 1/500: rel_id=1806 +21:57:16.097 TTS Simplex Phase1: token 2/500: rel_id=4919 +21:57:16.158 TTS Simplex Phase1: token 3/500: rel_id=5019 +21:57:16.217 TTS Simplex Phase1: token 4/500: rel_id=4605 +21:57:16.280 TTS Simplex Phase1: token 5/500: rel_id=3744 +21:57:16.782 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 13, buffer=25) +21:57:17.540 TTS Simplex Phase1: token 25/500: rel_id=1977 +21:57:18.393 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 38, buffer=25) +21:57:19.201 TTS Simplex Phase1: token 50/500: rel_id=4616 +21:57:20.043 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 63, buffer=25) +21:57:20.830 TTS Simplex Phase1: token 75/500: rel_id=3891 +21:57:21.688 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 88, buffer=25) +21:57:21.891 TTS Simplex Phase1: EOS token at step 92 +21:57:21.891 TTS Simplex: chunk 结束,tts_token_buffer 剩余 3 tokens (保留等下一个 chunk) +21:57:21.891 TTS Simplex: generated 91 audio tokens for chunk 5 +21:57:21.891 TTS Simplex: chunk 5 first tokens: [1806 4919 5019 4605 3744 ], last tokens: [35 4886 4568 5054 1677 ] +21:57:21.891 TTS Simplex: updated tts_n_past_accumulated=544, total_generated_tokens=478 +21:57:22.696 LLM->TTS: text='了,大家拼命求生。我差点被', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[34187 3837 99466 108068 30918 21287 1773 35946 109082 99250] +21:57:22.696 TTS<-LLM: chunk_idx=6, text='了,大家拼命求生。我差点被', n_tokens=10, hidden_size=40960, token_ids=[34187 3837 99466 108068 30918 21287 1773 35946 109082 99250] +21:57:22.696 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +21:57:22.696 TTS: before empty check - response.empty=0, response='了,大家拼命求生。我差点被', llm_finish=0 +21:57:22.696 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +21:57:22.696 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +21:57:22.696 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +21:57:22.753 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_6/merged_embeddings.txt +21:57:22.753 TTS Simplex: generating audio tokens for chunk 6 (n_tokens=10, tts_n_embd=768) +21:57:22.753 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=6, new_size=11) +21:57:22.753 TTS Simplex: chunk 6 - keeping KV cache, n_past_tts=544 +21:57:23.296 TTS Simplex: prefill completed, n_past_tts=555 +21:57:23.296 TTS Simplex: sampler created +21:57:23.364 TTS Simplex Phase1: token 1/500: rel_id=5967 +21:57:23.429 TTS Simplex Phase1: token 2/500: rel_id=6553 +21:57:23.493 TTS Simplex Phase1: token 3/500: rel_id=5030 +21:57:23.556 TTS Simplex Phase1: token 4/500: rel_id=3179 +21:57:23.622 TTS Simplex Phase1: token 5/500: rel_id=4182 +21:57:24.766 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 22, buffer=25) +21:57:24.993 TTS Simplex Phase1: token 25/500: rel_id=6486 +21:57:26.463 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 47, buffer=25) +21:57:26.650 TTS Simplex Phase1: token 50/500: rel_id=1629 +21:57:27.696 TTS Simplex Phase1: EOS token at step 66 +21:57:27.696 TTS Simplex: chunk 结束,tts_token_buffer 剩余 18 tokens (保留等下一个 chunk) +21:57:27.696 TTS Simplex: generated 65 audio tokens for chunk 6 +21:57:27.696 TTS Simplex: chunk 6 first tokens: [5967 6553 5030 3179 4182 ], last tokens: [4299 4218 3891 3645 5832 ] +21:57:27.696 TTS Simplex: updated tts_n_past_accumulated=620, total_generated_tokens=543 +21:57:29.836 LLM->TTS: text='吓到,手心都出汗了。你觉得', n_tokens=10, hidden_size=40960, n_embd=4096, token_ids=[102636 26939 3837 44934 63109 71268 117601 34187 1773 110043] +21:57:29.836 TTS<-LLM: chunk_idx=7, text='吓到,手心都出汗了。你觉得', n_tokens=10, hidden_size=40960, token_ids=[102636 26939 3837 44934 63109 71268 117601 34187 1773 110043] +21:57:29.836 TTS: after queue pop - speek_done=0, llm_finish=0, llm_text.empty=0, token_ids.size=10 +21:57:29.836 TTS: before empty check - response.empty=0, response='吓到,手心都出汗了。你觉得', llm_finish=0 +21:57:29.836 TTS: DEBUG before has_llm_data - token_ids.size=10, hidden_states.size=40960, n_embd=4096 +21:57:29.836 TTS: has_llm_data=1, token_ids=10, hidden_states=40960, n_embd=4096, llm_finish=0 +21:57:29.836 TTS: n_tokens_orig=10, n_tokens_filtered=10 (filtered 0 special tokens) +21:57:29.893 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_7/merged_embeddings.txt +21:57:29.893 TTS Simplex: generating audio tokens for chunk 7 (n_tokens=10, tts_n_embd=768) +21:57:29.893 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=7, new_size=11) +21:57:29.893 TTS Simplex: chunk 7 - keeping KV cache, n_past_tts=620 +21:57:30.468 TTS Simplex: prefill completed, n_past_tts=631 +21:57:30.468 TTS Simplex: sampler created +21:57:30.536 TTS Simplex Phase1: token 1/500: rel_id=3888 +21:57:30.611 TTS Simplex Phase1: token 2/500: rel_id=3405 +21:57:30.680 TTS Simplex Phase1: token 3/500: rel_id=2112 +21:57:30.748 TTS Simplex Phase1: token 4/500: rel_id=2158 +21:57:30.812 TTS Simplex Phase1: token 5/500: rel_id=2915 +21:57:30.937 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 7, buffer=25) +21:57:32.186 TTS Simplex Phase1: token 25/500: rel_id=54 +21:57:32.669 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 32, buffer=25) +21:57:33.948 TTS Simplex Phase1: token 50/500: rel_id=4293 +21:57:34.290 LLM: detected end token, set llm_generation_done=true +21:57:34.290 LLM->TTS: text='这样的片子好看吗?', n_tokens=5, hidden_size=20480, n_embd=4096, token_ids=[101893 115378 102790 101037 11319] +21:57:34.290 📍 Decode 结束: n_past=257, 剩余空间=1791, 无需滑窗 +21:57:34.290 📍 轮次 1 结束,记录边界于 n_past=257 +21:57:34.444 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 57, buffer=25) +21:57:34.942 TTS Simplex Phase1: EOS token at step 65 +21:57:34.942 TTS Simplex: chunk 结束,tts_token_buffer 剩余 7 tokens (保留等下一个 chunk) +21:57:34.942 TTS Simplex: generated 64 audio tokens for chunk 7 +21:57:34.942 TTS Simplex: chunk 7 first tokens: [3888 3405 2112 2158 2915 ], last tokens: [560 488 1216 1945 4299 ] +21:57:34.942 TTS Simplex: updated tts_n_past_accumulated=695, total_generated_tokens=607 +21:57:34.952 TTS<-LLM: chunk_idx=8, text='这样的片子好看吗?', n_tokens=5, hidden_size=20480, token_ids=[101893 115378 102790 101037 11319] +21:57:34.952 TTS: after queue pop - speek_done=0, llm_finish=1, llm_text.empty=0, token_ids.size=5 +21:57:34.952 TTS: before empty check - response.empty=0, response='这样的片子好看吗?', llm_finish=1 +21:57:34.952 TTS: DEBUG before has_llm_data - token_ids.size=5, hidden_states.size=20480, n_embd=4096 +21:57:34.952 TTS: has_llm_data=1, token_ids=5, hidden_states=20480, n_embd=4096, llm_finish=1 +21:57:34.952 TTS: n_tokens_orig=5, n_tokens_filtered=5 (filtered 0 special tokens) +21:57:34.982 TTS: saved merged embeddings (text) to ./tools/omni/output/round_000/llm_debug/chunk_8/merged_embeddings.txt +21:57:34.982 TTS Simplex: generating audio tokens for chunk 8 (n_tokens=5, tts_n_embd=768) +21:57:34.982 TTS Simplex: 在 prefill 前添加 audio_bos (chunk_idx=8, new_size=6) +21:57:34.982 TTS Simplex: chunk 8 - keeping KV cache, n_past_tts=695 +21:57:35.341 TTS Simplex: prefill completed, n_past_tts=701 +21:57:35.341 TTS Simplex: sampler created +21:57:35.411 TTS Simplex Phase1: token 1/500: rel_id=6486 +21:57:35.479 TTS Simplex Phase1: token 2/500: rel_id=6486 +21:57:35.545 TTS Simplex Phase1: token 3/500: rel_id=4299 +21:57:35.618 TTS Simplex Phase1: token 4/500: rel_id=4299 +21:57:35.695 TTS Simplex Phase1: token 5/500: rel_id=4299 +21:57:36.676 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 18, buffer=25) +21:57:37.167 TTS Simplex Phase1: token 25/500: rel_id=1801 +21:57:37.700 📍 为下一轮准备: eval <|im_end|>\n<|im_start|>user\n, n_past=262 +21:57:38.294 TTS Simplex Phase1: yield 25 tokens 到 T2W (step 43, buffer=25) +21:57:38.354 TTS Simplex Phase1: EOS token at step 45 +21:57:38.354 TTS Simplex: is_final_text_chunk=true, will enter Phase 2 for text_eos_embed +21:57:38.354 TTS Simplex Phase2: injecting text_eos_embed + audio_bos at n_past=745 +21:57:38.419 TTS Simplex Phase2: text_eos_embed injected, n_past=746 +21:57:38.477 TTS Simplex Phase2: audio_bos injected, n_past=747, starting final generation +21:57:39.226 TTS Simplex Phase2: EOS at step 12 (final end) +21:57:39.226 TTS Simplex: chunk 结束,tts_token_buffer 剩余 12 tokens (保留等下一个 chunk) +21:57:39.226 TTS Simplex: is_final_text_chunk=true, flush 剩余 12 tokens 从 tts_token_buffer +21:57:39.226 TTS Simplex: generated 55 audio tokens for chunk 8 +21:57:39.226 TTS Simplex: chunk 8 first tokens: [6486 6486 4299 4299 4299 ], last tokens: [4299 6486 4299 4299 6082 ] +21:57:39.226 TTS Simplex: updated tts_n_past_accumulated=759, total_generated_tokens=662 +21:57:39.227 TTS: finished processing all chunks +21:57:39.227 TTS: 单工模式轮次结束,下一轮 round_idx=1 +21:57:39.227 TTS: sent is_final=true to T2W queue (turn end) +21:57:47.941 T2W线程: wav_1.wav | 1.00s audio | 32406.8ms inference | RTF=32.41 | t=78948ms +21:58:15.377 T2W线程: wav_2.wav | 1.00s audio | 27435.0ms inference | RTF=27.43 | t=106383ms +21:58:42.658 T2W线程: wav_3.wav | 1.00s audio | 27280.5ms inference | RTF=27.28 | t=133665ms +21:59:09.836 T2W线程: wav_4.wav | 1.00s audio | 27177.5ms inference | RTF=27.18 | t=160843ms +21:59:36.986 T2W线程: wav_5.wav | 1.00s audio | 27148.5ms inference | RTF=27.15 | t=187992ms +21:59:49.917 omni_stop_threads: stop signals sent +tts thread end +22:00:04.197 T2W线程: wav_6.wav | 1.00s audio | 27210.3ms inference | RTF=27.21 | t=215203ms +22:00:31.345 T2W线程: wav_7.wav | 1.00s audio | 27147.3ms inference | RTF=27.15 | t=242351ms +22:00:58.491 T2W线程: wav_8.wav | 1.00s audio | 27146.1ms inference | RTF=27.15 | t=269498ms +22:01:25.612 T2W线程: wav_9.wav | 1.00s audio | 27119.6ms inference | RTF=27.12 | t=296618ms +22:01:52.705 T2W线程: wav_10.wav | 1.00s audio | 27092.7ms inference | RTF=27.09 | t=323711ms +22:02:19.837 T2W线程: wav_11.wav | 1.00s audio | 27131.1ms inference | RTF=27.13 | t=350843ms +22:02:46.985 T2W线程: wav_12.wav | 1.00s audio | 27147.2ms inference | RTF=27.15 | t=377991ms +22:03:14.138 T2W线程: wav_13.wav | 1.00s audio | 27151.8ms inference | RTF=27.15 | t=405144ms +22:03:41.375 T2W线程: wav_14.wav | 1.00s audio | 27236.8ms inference | RTF=27.24 | t=432381ms +22:03:41.375 T2W(C++) 线程: 停止 +t2w thread end diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_0.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_0.bin new file mode 100644 index 000000000..b794d1ec9 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_0.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_0.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_0.txt new file mode 100644 index 000000000..4edf03a26 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_0.txt @@ -0,0 +1 @@ +3683,1948,4131,4212,4299,6486,4299,4218,2032,2185,1457,308,4920,1369,644,144,42,2807,4538,5041,5800,5429,1544,1907,3688,5322,205,2999,4871,4883,4964,6422,2139,0,2349,5103,4456,5446,2450,2249,3481,5344,2166,714,5014,60,81,2511,2853,5085,2163,1698,2834,2192,5589,6318,1301,643,81,2271,5843,1479 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_1.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_1.bin new file mode 100644 index 000000000..6bc69f38e Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_1.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_1.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_1.txt new file mode 100644 index 000000000..ec046a14c --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_1.txt @@ -0,0 +1 @@ +20,397,246,162,2520,5090,2905,5028,4943,2270,1882,2154,5271,4947,5021,2303,4460,4393,1713,6486,4299,4299,4218,3972,5835,5835,3972,4299,4299,2031,5001,5568,6072,3401,2742,4675,87,1322,6179,3345,54,2997,2754,5085,2810,2169,1214,404,4597,1275,4918,3482,998,1807,798,5322,923,4133,2687,4883,3424,4299,4218,3645,4299,3975,5835,5832,3972,2112,3,199,2921,1482,3066,3146,4533,4998,3813,914,4577,6018,5967,891,4978,4963,6502,2125,89,467,5100,2670,2463,4704,348,1481,4235,2050 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_2.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_2.bin new file mode 100644 index 000000000..ba8d510bf Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_2.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_2.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_2.txt new file mode 100644 index 000000000..0cbff2420 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_2.txt @@ -0,0 +1 @@ +654,2915,2897,599,518,1219,4299,4299,6486,6486,6486,4218,4299,6405,6486,4299,4299,2031,5886,4122,6557,2099,2742,4119,1943,1199,4595,6373,4460,4540,300,5106,5835,4565,1308,651,3588,5772,6258,5241,4576,5266,2189,1586,1504,566,1295,1619,6534,3618,6158,5914,4417,5645,2229,4570,2936,1478,2753,2914,342,4601 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_3.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_3.bin new file mode 100644 index 000000000..fa020dbd5 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_3.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_3.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_3.txt new file mode 100644 index 000000000..78ac7c69d --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_3.txt @@ -0,0 +1 @@ +1275,5645,4676,4974,1862,1858,672,5077,5188,147,73,2255,5645,4676,4749,4967,1724,505,4941,5589,5591,1220,494,503,4219,4299,4299,4218,3888,3645,1707,5940,959,3161,4872,4876,5086,2742,3156,5095,246,162,5832,6002,3149,6048,3063,1052,1294,1293,1294,2428,3771,5823,5100,2128,4312,5594,2771,614,4401,4915,4677,647,8,2,1495,1458,4299,6486,6486,4299,4218,4218,6405,4299,4218,4218,4218,4146,3801,2267,2753,1645,1884,368,4379,1482,4439,144 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_4.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_4.bin new file mode 100644 index 000000000..a0c7cfaf1 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_4.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_4.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_4.txt new file mode 100644 index 000000000..8c257c6c3 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_4.txt @@ -0,0 +1 @@ +297,2997,2763,5086,2333,4674,4650,4469,4943,2822,552,4914,5099,2738,549,2486,1032,0,4941,5094,4754,2169,969,629,2408,2976,3141,203,3020,5939,6021,6048,6051,1533,1688,947,920,1782,4218,3888,3888,6075,6075,4131,3406,4299,2158,3644,2903,144,63,5096,5097,4615,4912,3481,1693,1451,224,4598,156,6379,5652,4527,5658,1294,1528,6373,2225,5192,228,162,2916,5188,5856 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_5.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_5.bin new file mode 100644 index 000000000..b3a7f8911 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_5.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_5.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_5.txt new file mode 100644 index 000000000..0dc1d1a71 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_5.txt @@ -0,0 +1 @@ +1806,4919,5019,4605,3744,5798,1457,2175,3837,4785,528,386,8,2228,2234,2935,6486,6486,4299,6486,4218,6162,5835,2112,1977,4918,2583,5344,2591,2004,6374,6373,5644,4689,4451,3237,4929,3482,786,65,218,5950,6048,5238,3803,804,4920,2574,4611,4616,3412,4941,5061,5101,2099,6048,6048,795,1927,6534,227,835,3751,5979,4124,2894,2897,2861,4237,6486,4299,4218,3645,3648,3891,4299,4134,6534,6534,2395,2420,4859,3705,3861,1305,983,35,4886,4568,5054,1677 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_6.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_6.bin new file mode 100644 index 000000000..aa36266aa Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_6.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_6.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_6.txt new file mode 100644 index 000000000..ca79dc421 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_6.txt @@ -0,0 +1 @@ +5967,6553,5030,3179,4182,4443,5021,836,2430,2511,2196,4607,5830,2427,54,5085,5047,6422,4154,2099,1217,1946,1225,4212,6486,6486,4218,3888,3645,4299,4299,1029,4375,6076,88,4921,2195,6157,2160,3084,4947,4885,6258,6255,4830,2780,1808,2742,3111,1629,2186,4370,5968,5319,3152,596,4880,5609,4227,6486,4299,4218,3891,3645,5832 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_7.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_7.bin new file mode 100644 index 000000000..4bc6d884f Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_7.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_7.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_7.txt new file mode 100644 index 000000000..be0970f59 --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_7.txt @@ -0,0 +1 @@ +3888,3405,2112,2158,2915,2404,2976,5322,5835,6075,5994,2299,63,3086,1865,1440,959,4778,5401,6377,4695,5269,6157,3890,54,64,2030,656,598,2031,4131,3645,1545,5940,6048,6048,5322,2639,1457,2183,4431,4919,2724,4803,6018,4419,2912,1935,6048,4293,2158,2915,2714,5589,6085,6077,2918,3908,6095,560,488,1216,1945,4299 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_8.bin b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_8.bin new file mode 100644 index 000000000..f6ea14e2a Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_8.bin differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_8.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_8.txt new file mode 100644 index 000000000..4b5ec60cd --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/audio_tokens_chunk_8.txt @@ -0,0 +1 @@ +6486,6486,4299,4299,4299,4299,4299,4218,4299,1806,5857,4913,555,4839,1943,2341,297,4484,2415,5163,3144,4830,4570,2684,1801,991,217,2163,5271,4947,2564,4406,5853,6384,4682,2683,5589,1223,710,243,165,5841,5266,4619,4311,4311,2675,4871,4880,3421,4299,6486,4299,4299,6082 diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_0.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_0.wav new file mode 100644 index 000000000..32902c71c Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_0.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_1.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_1.wav new file mode 100644 index 000000000..9789fd4cf Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_1.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_10.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_10.wav new file mode 100644 index 000000000..08cc3fee3 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_10.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_11.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_11.wav new file mode 100644 index 000000000..fc389479e Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_11.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_12.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_12.wav new file mode 100644 index 000000000..81046260a Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_12.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_13.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_13.wav new file mode 100644 index 000000000..00d75b86e Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_13.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_14.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_14.wav new file mode 100644 index 000000000..73b9ba915 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_14.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_2.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_2.wav new file mode 100644 index 000000000..b76233958 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_2.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_3.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_3.wav new file mode 100644 index 000000000..dcf41c94d Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_3.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_4.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_4.wav new file mode 100644 index 000000000..e9c324af0 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_4.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_5.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_5.wav new file mode 100644 index 000000000..f52fb9d53 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_5.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_6.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_6.wav new file mode 100644 index 000000000..8ed649f5e Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_6.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_7.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_7.wav new file mode 100644 index 000000000..a611eb691 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_7.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_8.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_8.wav new file mode 100644 index 000000000..adccdc4d9 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_8.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_9.wav b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_9.wav new file mode 100644 index 000000000..055138ca5 Binary files /dev/null and b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_9.wav differ diff --git a/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_timing.txt b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_timing.txt new file mode 100644 index 000000000..478e4b1af --- /dev/null +++ b/benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/tts_wav/wav_timing.txt @@ -0,0 +1,3 @@ +# WAV file generation timing log +# Format: chunk_index, elapsed_time_ms (since stream_decode start), file_size_bytes, request_duration_ms +# Time 0 is when stream_decode() function starts diff --git a/benchmarks/edge_harness/results/e2e_profiling_20260922/evidence/summary/README.md b/benchmarks/edge_harness/results/e2e_profiling_20260922/evidence/summary/README.md index adc4d3ba4..c1093e105 100644 --- a/benchmarks/edge_harness/results/e2e_profiling_20260922/evidence/summary/README.md +++ b/benchmarks/edge_harness/results/e2e_profiling_20260922/evidence/summary/README.md @@ -1,6 +1,6 @@ # E2E check and profiling -All 60 pairings have a disposition. The timing tables below remain the 2026-09-22 measurements. The configuration matrix and affected per-cell reasons incorporate the [2026-09-23 scoped recovery runs](../../../e2e_recovery_20260923/README.md) and [WSL CPU/native Windows expansion](../../../e2e_expansion_20260923/README.md). The expansion adds separate 20-request serial MiniCPM-o text-to-speech profiles on WSL CPU and native Windows GPU, a Spark output-head component profile on the HX370 AMD NPU, complete Spark text-request profiles through standalone llama.cpp and a bounded Omni whole-session stage on native Windows CPU and Radeon 890M, native Windows CPU Qwen3-TTS text-to-WAV profiles through both standalone PyTorch and a bounded Omni whole-session stage, and a hybrid CPU+Radeon 890M Qwen3-TTS profile likewise repeated through a bounded Omni whole-session stage. Profiling completion does not imply full release qualification. +All 60 pairings have a disposition. The timing tables below remain the 2026-09-22 measurements. The configuration matrix and affected per-cell reasons incorporate the [2026-09-23 scoped recovery runs](../../../e2e_recovery_20260923/README.md) and [WSL CPU/native Windows expansion](../../../e2e_expansion_20260923/README.md). The expansion adds separate 20-request serial MiniCPM-o text-to-speech profiles on WSL CPU and native Windows GPU, a Spark output-head component profile on the HX370 AMD NPU, complete Spark text-request profiles through standalone llama.cpp and a bounded Omni whole-session stage on native Windows CPU and Radeon 890M, native Windows CPU Qwen3-TTS text-to-WAV profiles through both standalone PyTorch and a bounded Omni whole-session stage, and a hybrid CPU+Radeon 890M Qwen3-TTS profile likewise repeated through a bounded Omni whole-session stage. A separate pinned GGUF MiniCPM-o run adds one combined synthetic image+audio to text+speech path on WSL CPU and native Windows CPU; the latter is a standalone C++ route, not an Omni stage. Profiling completion does not imply full release qualification. ## Configuration × model @@ -9,7 +9,7 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i | Device | Spark-X2.5 | Qwen3-TTS 0.6B CustomVoice | Qwen3.8-27B | MiniCPM-o 4.5 | InternVLA-A1 | |---|---|---|---|---|---| | PC HX370: CPU / WSL | profile completed | scoped E2E: short stream | NOT E2E | scoped E2E: text/image/audio → speech | synthetic policy pass | -| PC HX370: CPU / native Windows | scoped E2E: Omni Spark text | scoped E2E: Omni CPU text → complete WAV | NOT E2E | NOT E2E | synthetic policy pass | +| PC HX370: CPU / native Windows | scoped E2E: Omni Spark text | scoped E2E: Omni CPU text → complete WAV | NOT E2E | scoped E2E: standalone GGUF image+audio → text+speech | synthetic policy pass | | PC HX370 + RTX 5090 Laptop / WSL | profile completed | profile completed | scoped E2E: text + image | scoped E2E: text/image/audio → speech | synthetic policy pass | | PC HX370 + RTX 5090 Laptop / Windows | profile completed | profile completed | NOT E2E | scoped E2E: text/image/audio → speech | synthetic policy pass | | PC HX370 + Radeon 890M / Windows worker | scoped E2E: Omni Spark text | scoped E2E: Omni Radeon talker/codec + CPU predictor | NOT E2E | NOT E2E | NOT E2E | @@ -28,12 +28,12 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i | PC HX370: CPU / WSL | Spark-X2.5 | PROFILE_COMPLETED | not fully qualified: reference-quality and remaining reliability/performance gates must be reviewed | Qualify a matching vLLM 0.29 CPU build and token parity separately. | | PC HX370: CPU / WSL | Qwen3-TTS 0.6B CustomVoice | SCOPED_E2E | The 2026-09-23 compatibility fix enabled real-weight two-frame PCM and four short-stream requests, including cancellation recovery. One measured request generated 3.04 s of audio in 17.02 s (RTF 5.60) with four simulated playback underruns. The CPU wheel remains vLLM 0.28 versus Omni 0.29. | Qualify a matching CPU runtime, speech quality, uninterrupted playback and sustained load; [recovery evidence](../../../e2e_recovery_20260923/README.md). | | PC HX370: CPU / WSL | Qwen3.8-27B | NOT_E2E_PROFILEABLE | No compatible CPU artifact/deployment for this model was found in the checked model roots. Available Qwen 27B FP8/NVFP4 CUDA artifacts do not establish a CPU route. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. | -| PC HX370: CPU / WSL | MiniCPM-o 4.5 | SCOPED_E2E | The verified checkpoint completed real three-stage text, one synthetic image and one synthetic audio input to text+speech on the vLLM 0.28 CPU backend in separate bounded plans. The 448×448 red square was described correctly with a nonzero 5.2 s WAV in one 37.70 s request; the 2 s/440 Hz tone was described as “A loud and high pitched beep” with a nonzero 2.16 s WAV in one 17.30 s request. CPU wording/token IDs differ from the WSL GPU runs, with no task-quality threshold established. A separate 1-warmup/20-measured serial **text** run had request wall p50 21.86 s/p95 22.97 s. WSL swap reached 5.75 GB during that text profile; manual snapshots in the multimodal runs showed heavy swap use but do not prove peak memory. Both multimodal runs force-killed stage 0 at shutdown and reported shared-memory cleanup warnings. | Validate real image/audio suites, speech intelligibility, video input, concurrency, interruption, admission/loading peak, clean shutdown and sustained thermal behavior before broader CPU qualification; [CPU evidence](../../../e2e_expansion_20260923/README.md). | +| PC HX370: CPU / WSL | MiniCPM-o 4.5 | SCOPED_E2E | The verified BF16 checkpoint completed real three-stage text, one synthetic image and one synthetic audio input to text+speech on the vLLM 0.28 CPU backend in separate bounded plans. The 448×448 red square was described correctly with a nonzero 5.2 s WAV in one 37.70 s request; the 2 s/440 Hz tone was described as “A loud and high pitched beep” with a nonzero 2.16 s WAV in one 17.30 s request. CPU wording/token IDs differ from the WSL GPU runs, with no task-quality threshold established. A separate 1-warmup/20-measured serial **text** run had request wall p50 21.86 s/p95 22.97 s. WSL swap reached 5.75 GB during that text profile; manual snapshots in the multimodal runs showed heavy swap use but do not prove peak memory. Both multimodal runs force-killed stage 0 at shutdown and reported shared-memory cleanup warnings. Separately, a pinned Q4_K_M/F16 GGUF set ran one **combined** synthetic image+tone input to text and 9.24 s of speech through standalone C++ on WSL CPU in 40.70 s, with 13,369,604 KiB (~12.75 GiB) maximum RSS; its generic response did not establish input-grounded quality, and its optional WAV merger used the wrong chunk filename. The actual ten WAV chunks were verified and assembled without changing PCM. | Validate real image/audio suites, speech intelligibility, video input, concurrency, interruption, admission/loading peak, clean shutdown and sustained thermal behavior; check the C++ GGUF route's semantic quality and Omni binding separately. [vLLM CPU evidence](../../../e2e_expansion_20260923/README.md), [C++ CPU raw evidence](../../../e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/README.md). | | PC HX370: CPU / WSL | InternVLA-A1 | SYNTHETIC_POLICY_PASS | The Place_Markpen checkpoint strict-loaded in CPU-only PyTorch and produced finite `[1, 50, 32]` actions from zero observations/noise in one 3.25 s forward. Compared with the same CUDA checkpoint/input, relative L2 error was 1.30% and cosine similarity 0.999917; no task-quality tolerance is established. | Validate real observations against reference actions, units/timestamps, repeated latency and memory before robot-task qualification; [CPU evidence](../../../e2e_expansion_20260923/README.md). | | PC HX370: CPU / native Windows | Spark-X2.5 | SCOPED_E2E_OMNI_COMPLETE_REQUEST | The pinned Spark-X2.5-1.7B Q4_K_M GGUF ran in native Windows llama.cpp CPU (`-dev none -ngl 0`) as a whole-session Omni StageRuntime/StagePool backend. `Paris` and the correct `1511` inventory answer passed; one warmup plus 20 serial complete requests were 20/20 correct, nearest-rank wall p50/p95 6.93/7.05 s. The public AsyncOmni short request passed. The stage verifies artifact hashes and CPU placement (0/29 layers offloaded), reserves 4 GiB host RAM, emits a terminal text event and releases reservation after in-flight cancellation. The separate prior standalone profile was 6.65/6.86 s. No vLLM CPU attention repair, incremental stream, restart-after-cancel, loading peak or sustained power/thermal gate is claimed. | Validate broader text/token quality, streaming and cancellation recovery, memory peak and sustained load; [Omni raw evidence](../../../e2e_expansion_20260923/evidence/spark_omni_llamacpp/README.md), [standalone evidence](../../../e2e_expansion_20260923/evidence/spark_radeon890m_llamacpp/README.md). | | PC HX370: CPU / native Windows | Qwen3-TTS 0.6B CustomVoice | SCOPED_E2E_OMNI_COMPLETE_REQUEST | The pinned 0.6B CustomVoice BF16/SDPA checkpoint ran wholly on CPU through an isolated Qwen wrapper worker owned by one bounded Omni StageRuntime stage. Two named 24 kHz WAVs matched the earlier standalone PCM SHA256 values exactly. One warmup + 20 serial complete Omni requests for 4.56 s of audio had 20/20 identical PCM and nearest-rank wall p50/p95 15.32/15.60 s (RTF 3.36/3.42); independent Whisper tiny.en ASR gave WER 0.20 on the first Omni WAV, an intelligibility proxy only. A public AsyncOmni audio request passed. The stage verified pinned weights/interpreter and CPU placement, reserved 10 GiB host RAM, rejected an insufficient 4 GiB demand before worker launch, and after in-flight cancellation emitted no stale output and returned the ledger to zero. Sampled process-tree private memory peaked at 5.39 GB, not a loading peak. Native vLLM CPU attention operators remain absent; playable streaming, post-cancel restart, broader speech quality, loading peak and sustained power/thermal behavior remain unverified. | Validate playable streaming and restart/recovery, broader voice quality, peak memory, concurrency and sustained behavior; [Omni raw evidence](../../../e2e_expansion_20260923/evidence/qwen_tts_omni_cpu/README.md), [standalone baseline](../../../e2e_expansion_20260923/evidence/qwen_tts_native_cpu/README.md). | | PC HX370: CPU / native Windows | Qwen3.8-27B | NOT_E2E_PROFILEABLE | The installed native Windows vLLM extension lacks cpu_attn_reshape_and_cache and cpu_attn_get_scheduler_metadata. The separate ORT CPU graph worker is not a whole-model text/TTS adapter; a qualified CPU build/binding is missing. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. | -| PC HX370: CPU / native Windows | MiniCPM-o 4.5 | NOT_E2E_PROFILEABLE | The exact checkpoint is verified in the local Linux model store, but the installed native Windows vLLM extension lacks required CPU attention operators; no native full-model run or memory admission exists. | Establish a native Windows CPU backend and model access, then run the full requested path; [weight evidence](../../../e2e_recovery_20260923/evidence/weights/minicpmo.json). | +| PC HX370: CPU / native Windows | MiniCPM-o 4.5 | SCOPED_E2E_STANDALONE_COMPLETE_PATH | The pinned Q4_K_M language and F16 vision/audio/TTS/Token2Wav GGUF set completed **one combined synthetic image+tone → text+speech** request through a native Windows x86-64-v3 CPU C++ CLI. The verifier found actual index-1 image and audio prefill, nonempty text, a completion marker, and 50 contiguous nonzero 24 kHz WAV chunks (49.16 s audio). One cold process took 137.34 s; sampled RSS/private-byte maxima were 13.10/13.31 GB. The first generic cross-build exited 0 after 615.19 s with only 15 chunks and no completion marker; the CLI wait was patched to be bounded and to fail on timeout. The final text was not grounded in the red square/tone, and the test supplied no explicit input-description task; semantic quality is unqualified. This is a standalone CPU route, not native vLLM or an Omni StageRuntime. The optional upstream WAV merger still uses the wrong chunk names; the verifier assembled original PCM after completion. | Bind a full-session native CPU stage with admission and state/cancel semantics; validate prompted image/audio quality, speech intelligibility, streaming, loading peak, repeated requests and sustained thermal behavior. [Complete raw evidence](../../../e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/README.md), [failed first run](../../../e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/README.md). | | PC HX370: CPU / native Windows | InternVLA-A1 | SYNTHETIC_POLICY_PASS | The Place_Markpen checkpoint strict-loaded from a UNC path and the direct CPU policy produced finite `[1, 50, 32]` actions on synthetic zero observations/noise. Policy/output CPU placement was checked; one forward took 3.36 s. Relative L2 difference from WSL CPU was 1.08% (no task tolerance). This direct policy route does not require native vLLM CPU attention operators. | Validate real observations/reference actions, units/timestamps, memory and repeated latency before task qualification; [native evidence](../../../e2e_expansion_20260923/README.md). | | PC HX370 + RTX 5090 Laptop / WSL | Spark-X2.5 | PROFILE_COMPLETED | not fully qualified: reference-quality and remaining reliability/performance gates must be reviewed | Broaden only with a named workload/device/precision qualification. | | PC HX370 + RTX 5090 Laptop / WSL | Qwen3-TTS 0.6B CustomVoice | PROFILE_COMPLETED | not fully qualified: reference-quality and remaining reliability/performance gates must be reviewed | Resolve and measure playback stalls; run quality, interruption and thermal tests. | diff --git a/docs/design/omni_edge_e2e_roadmap.md b/docs/design/omni_edge_e2e_roadmap.md index 5c9713da1..d360a081c 100644 --- a/docs/design/omni_edge_e2e_roadmap.md +++ b/docs/design/omni_edge_e2e_roadmap.md @@ -46,6 +46,18 @@ from GPU, swap is heavily used, and stage 0 requires forced shutdown with shared-memory cleanup warnings. These single requests do not inherit the 20-request text latency profile or establish real image/audio quality. +A separate [pinned GGUF C++ route](../../benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_cpu/README.md) +completed one **combined** synthetic image+audio to text+speech request on WSL +CPU. Its [native Windows CPU follow-up](../../benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu/README.md) +completed the same input path with a corrected bounded Token2Wav wait and an +x86-64-v3 build: 50 verified WAV chunks/49.16 s audio in one 137.34 s cold +process, with 13.10 GB maximum sampled RSS. The initial native attempt +[exited 0 with incomplete speech](../../benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/minicpmo_cpp_windows_cpu_attempt1/README.md), +and is retained as a failure. Both complete C++ responses were generic rather +than input descriptions; the fixture supplied no explicit description task, +so quality remains unqualified. These runs do not close the Omni stage, +admission, cancellation, streaming or M4 video/real-observation gates. + Native Windows HX370 CPU now also completes two Qwen3-TTS CustomVoice text-to-WAV requests through Qwen's standalone PyTorch wrapper using the pinned 0.6B checkpoint. A separate 1-warmup/20-measured serial profile of one short