Record native Windows CPU Qwen3-TTS scoped E2E evidence
This commit is contained in:
1 parent
03d6cb9a93
commit
54c086acae
22 files changed
+1744
-4
No files matched your search
@@ -0,0 +1,153 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Run the pinned Qwen3-TTS CustomVoice checkpoint on native Windows CPU.
|
||||
|
||||
This uses Qwen's PyTorch wrapper as a standalone backend feasibility check.
|
||||
It does not prove Omni streaming, playback, or speech intelligibility.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import hashlib
|
||||
import json
|
||||
import math
|
||||
import os
|
||||
import platform
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def _sha256(path: Path) -> str:
|
||||
digest = hashlib.sha256()
|
||||
with path.open("rb") as stream:
|
||||
for chunk in iter(lambda: stream.read(8 * 1024 * 1024), b""):
|
||||
digest.update(chunk)
|
||||
return digest.hexdigest()
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument("--model-dir", type=Path, required=True)
|
||||
parser.add_argument("--output-wav", type=Path, required=True)
|
||||
parser.add_argument("--output-report", type=Path, required=True)
|
||||
parser.add_argument("--text", default="Hello from the local computer.")
|
||||
parser.add_argument("--speaker", default="Ryan")
|
||||
parser.add_argument("--max-new-tokens", type=int, default=64)
|
||||
parser.add_argument("--threads", type=int, default=8)
|
||||
parser.add_argument("--warmups", type=int, default=0)
|
||||
parser.add_argument("--repeats", type=int, default=1)
|
||||
args = parser.parse_args()
|
||||
if args.max_new_tokens <= 0 or args.threads <= 0 or args.warmups < 0 or args.repeats <= 0:
|
||||
parser.error("Token/thread/repeat counts must be positive and warmups nonnegative")
|
||||
checkpoint = args.model_dir / "model.safetensors"
|
||||
tokenizer_weights = args.model_dir / "speech_tokenizer" / "model.safetensors"
|
||||
if not checkpoint.is_file() or not tokenizer_weights.is_file():
|
||||
raise FileNotFoundError("The exact talker and speech-tokenizer weights are required")
|
||||
|
||||
os.environ["HF_HUB_OFFLINE"] = "1"
|
||||
os.environ["TRANSFORMERS_OFFLINE"] = "1"
|
||||
import numpy as np
|
||||
import soundfile as sf
|
||||
import torch
|
||||
import transformers
|
||||
from qwen_tts import Qwen3TTSModel
|
||||
|
||||
torch.set_num_threads(args.threads)
|
||||
started = time.perf_counter()
|
||||
model = Qwen3TTSModel.from_pretrained(
|
||||
str(args.model_dir.resolve()),
|
||||
device_map="cpu",
|
||||
dtype=torch.bfloat16,
|
||||
attn_implementation="sdpa",
|
||||
local_files_only=True,
|
||||
)
|
||||
startup_s = time.perf_counter() - started
|
||||
model_devices = sorted({parameter.device.type for parameter in model.model.parameters()})
|
||||
if model_devices != ["cpu"]:
|
||||
raise RuntimeError(f"TTS model was not wholly on CPU: {model_devices}")
|
||||
if args.speaker.lower() not in model.get_supported_speakers():
|
||||
raise ValueError("The requested speaker is not supported by this checkpoint")
|
||||
|
||||
def generate_one(*, save_wav: bool) -> dict:
|
||||
torch.manual_seed(42)
|
||||
started = time.perf_counter()
|
||||
wavs, sample_rate = model.generate_custom_voice(
|
||||
text=args.text,
|
||||
language="English",
|
||||
speaker=args.speaker,
|
||||
max_new_tokens=args.max_new_tokens,
|
||||
do_sample=True,
|
||||
non_streaming_mode=True,
|
||||
)
|
||||
request_s = time.perf_counter() - started
|
||||
if len(wavs) != 1 or sample_rate <= 0:
|
||||
raise RuntimeError("Expected one waveform with a valid sample rate")
|
||||
wav = np.asarray(wavs[0], dtype=np.float32).reshape(-1)
|
||||
if not wav.size or not np.isfinite(wav).all():
|
||||
raise RuntimeError("TTS returned an empty or non-finite waveform")
|
||||
rms = float(np.sqrt(np.mean(wav.astype(np.float64) ** 2)))
|
||||
if rms <= 1e-5:
|
||||
raise RuntimeError("TTS waveform is effectively silent")
|
||||
if save_wav:
|
||||
args.output_wav.parent.mkdir(parents=True, exist_ok=True)
|
||||
sf.write(args.output_wav, wav, sample_rate, subtype="PCM_16")
|
||||
return {
|
||||
"request_s": request_s,
|
||||
"sample_rate": sample_rate,
|
||||
"samples": int(wav.size),
|
||||
"duration_s": float(wav.size / sample_rate),
|
||||
"rms": rms,
|
||||
"peak_abs": float(np.max(np.abs(wav))),
|
||||
"nonzero_samples": int(np.count_nonzero(wav)),
|
||||
"float32_sha256": hashlib.sha256(wav.tobytes()).hexdigest(),
|
||||
}
|
||||
|
||||
warmups = [generate_one(save_wav=False) for _ in range(args.warmups)]
|
||||
measured = [generate_one(save_wav=index == 0) for index in range(args.repeats)]
|
||||
first = measured[0]
|
||||
latencies = sorted(row["request_s"] for row in measured)
|
||||
report = {
|
||||
"scope": "one complete native Windows CPU text-to-WAV request via Qwen's standalone PyTorch wrapper; no Omni streaming or speech-quality claim",
|
||||
"platform": platform.platform(),
|
||||
"python": platform.python_version(),
|
||||
"torch": torch.__version__,
|
||||
"transformers": transformers.__version__,
|
||||
"model_dir": str(args.model_dir.resolve()),
|
||||
"talker_sha256": _sha256(checkpoint),
|
||||
"speech_tokenizer_sha256": _sha256(tokenizer_weights),
|
||||
"model_devices": model_devices,
|
||||
"dtype": "bfloat16",
|
||||
"attention": "sdpa",
|
||||
"threads": args.threads,
|
||||
"text": args.text,
|
||||
"speaker": args.speaker,
|
||||
"language": "English",
|
||||
"max_new_tokens": args.max_new_tokens,
|
||||
"seed": 42,
|
||||
"startup_s": startup_s,
|
||||
"request_s": first["request_s"],
|
||||
"sample_rate": first["sample_rate"],
|
||||
"samples": first["samples"],
|
||||
"duration_s": first["duration_s"],
|
||||
"rms": first["rms"],
|
||||
"peak_abs": first["peak_abs"],
|
||||
"nonzero_samples": first["nonzero_samples"],
|
||||
"wav_sha256": _sha256(args.output_wav),
|
||||
"warmups": warmups,
|
||||
"measured": measured,
|
||||
"profile": {
|
||||
"repeats": args.repeats,
|
||||
"concurrency": 1,
|
||||
"p50_request_s": latencies[math.ceil(0.5 * len(latencies)) - 1],
|
||||
"p95_request_s": latencies[math.ceil(0.95 * len(latencies)) - 1],
|
||||
"all_same_float32_audio": len({row["float32_sha256"] for row in measured}) == 1,
|
||||
},
|
||||
"status": "passed",
|
||||
}
|
||||
args.output_report.parent.mkdir(parents=True, exist_ok=True)
|
||||
args.output_report.write_text(json.dumps(report, indent=2) + "\n", encoding="utf-8")
|
||||
print(json.dumps(report, indent=2))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,106 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Transcribe a generated WAV with a separately pinned local ASR checkpoint.
|
||||
|
||||
ASR text agreement is only a proxy for intelligibility, never a speech-quality
|
||||
or speaker-similarity evaluation.
|
||||
"""
|
||||
|
||||
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 chunk in iter(lambda: stream.read(8 * 1024 * 1024), b""):
|
||||
digest.update(chunk)
|
||||
return digest.hexdigest()
|
||||
|
||||
|
||||
def _words(text: str) -> list[str]:
|
||||
return re.findall(r"[a-z0-9]+", text.casefold())
|
||||
|
||||
|
||||
def _word_error_rate(reference: str, actual: str) -> float:
|
||||
expected, got = _words(reference), _words(actual)
|
||||
previous = list(range(len(got) + 1))
|
||||
for index, token in enumerate(expected, start=1):
|
||||
current = [index]
|
||||
for position, candidate in enumerate(got, start=1):
|
||||
current.append(min(
|
||||
current[-1] + 1,
|
||||
previous[position] + 1,
|
||||
previous[position - 1] + (token != 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("--model-dir", type=Path, required=True)
|
||||
parser.add_argument("--model-revision", required=True)
|
||||
parser.add_argument("--reference-text", required=True)
|
||||
parser.add_argument("--output", type=Path, required=True)
|
||||
args = parser.parse_args()
|
||||
|
||||
import librosa
|
||||
import numpy as np
|
||||
import soundfile as sf
|
||||
import torch
|
||||
import transformers
|
||||
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor
|
||||
|
||||
wav, sample_rate = sf.read(args.wav, dtype="float32", always_2d=False)
|
||||
if wav.ndim != 1 or sample_rate <= 0 or not wav.size or not np.isfinite(wav).all():
|
||||
raise ValueError("Expected finite mono audio")
|
||||
audio_16k = librosa.resample(wav, orig_sr=sample_rate, target_sr=16000)
|
||||
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("ASR model was not wholly on CPU")
|
||||
features = processor(
|
||||
audio_16k, sampling_rate=16000, return_tensors="pt",
|
||||
return_attention_mask=True,
|
||||
)
|
||||
started = time.perf_counter()
|
||||
with torch.no_grad():
|
||||
token_ids = model.generate(
|
||||
features.input_features, attention_mask=features.attention_mask
|
||||
)
|
||||
inference_s = time.perf_counter() - started
|
||||
transcript = processor.batch_decode(token_ids, skip_special_tokens=True)[0].strip()
|
||||
report = {
|
||||
"scope": "local Whisper tiny.en ASR proxy for generated speech; no perceptual quality claim",
|
||||
"asr_model": "openai/whisper-tiny.en",
|
||||
"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),
|
||||
"input_sample_rate": sample_rate,
|
||||
"input_duration_s": wav.size / sample_rate,
|
||||
"reference_text": args.reference_text,
|
||||
"transcript": transcript,
|
||||
"word_error_rate": _word_error_rate(args.reference_text, transcript),
|
||||
"asr_load_s": load_s,
|
||||
"asr_inference_s": inference_s,
|
||||
}
|
||||
args.output.parent.mkdir(parents=True, exist_ok=True)
|
||||
args.output.write_text(json.dumps(report, indent=2) + "\n", encoding="utf-8")
|
||||
print(json.dumps(report, indent=2))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -1,9 +1,10 @@
|
||||
# 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. None is a sustained or full-modality profile; the standalone Spark paths still need Omni integration. 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) and [CPU/Radeon whole-model record](evidence/spark_radeon890m_llamacpp/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; 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. Qwen3-TTS has a separate 20-request complete standalone text-to-WAV profile on native Windows CPU. None is a sustained or full-modality profile; the standalone paths still need Omni integration. 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), [CPU/Radeon whole-model record](evidence/spark_radeon890m_llamacpp/README.md), and [native CPU Qwen TTS record](evidence/qwen_tts_native_cpu/README.md) pin their respective artifacts. No model, precision or context was silently substituted.
|
||||
|
||||
| Device / model | Verified depth | Observed output and time | Remaining gate |
|
||||
|---|---|---|---|
|
||||
| Native Windows HX370 CPU / Qwen3-TTS 0.6B CustomVoice, revision `85e237c12c027371202489a0ec509ded67b5e4b5` | Scoped complete standalone PyTorch text-to-WAV path (P for two named sentences; outside Omni) | Nonzero 24 kHz WAVs of 4.56 s and 3.44 s. For the first prompt, 1 warmup + 20 serial measured complete generations p50/p95 13.94/14.68 s; Whisper tiny.en ASR WER 0.20 on the first and 0.00 on the second sentence. | Omni CPU stage binding and dependency isolation, playable streaming, speech quality, memory loading peak and sustained behavior; [raw evidence](evidence/qwen_tts_native_cpu/README.md). |
|
||||
| Native Windows HX370 CPU / Spark-X2.5-1.7B Q4_K_M GGUF, revision `1f7fa33b1245c14730da39e125714ad3a327901b` | Scoped complete standalone llama.cpp text path (P for two named inputs; outside Omni) | Correct `Paris` and 120-item inventory answer `1511`; 1 warmup + 20 uncached serial full inventory requests p50/p95 6.65/6.86 s, 20/20 correct. Stream-close recovery passed. | Omni whole-model stage binding, broader quality, explicit loading-peak admission and sustained behavior; [raw evidence](evidence/spark_radeon890m_llamacpp/README.md). |
|
||||
| Native Windows HX370 Radeon 890M / Spark-X2.5-1.7B same GGUF | Scoped complete standalone llama.cpp Vulkan1 text path (P for two named inputs; outside Omni) | All 29 logged layer assignments on Vulkan1, with a separate Vulkan_Host buffer; correct `Paris` and `1511`; 1 warmup + 20 uncached serial inventory requests p50/p95 2.18/2.20 s, 20/20 correct. Stream-close recovery passed. | Omni binding, state and memory contract, broad quality, GPU-memory attribution and sustained power/thermal behavior; [raw evidence](evidence/spark_radeon890m_llamacpp/README.md). |
|
||||
| Native Windows HX370 AMD NPU / Spark-X2.5-1.7B output head, revision `448e61eb392c00f2c403185c5b56d5e0665bfaab` | Real-weight RMS norm + full-logit projection component through Omni `external.graph.v1` (B+C, not P) | One fused NPU partition and seven CPU nodes; 4/4 captured activations top-1 match, 55.43–56.81 dB full-logit SNR. One warmup + 20 serial repeated-input component requests: p50/p95 10.21/12.44 ms, versus 17.97/20.29 ms for the original FP32 CPU head through Omni. NPU startup 18.21 s and peak worker RSS 3.52 GiB. [Raw evidence](evidence/spark_amd_npu_output_head/README.md). | Actual vLLM handoff and full generation, transfer cost, quality across inputs/context, memory admission, cancellation and sustained power/thermal behavior. |
|
||||
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
# Preserve native Windows evidence bytes, including CRLF logs and JSON.
|
||||
*.json -text -eol
|
||||
*.log -text -eol
|
||||
*.wav binary
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
# Native Windows CPU Qwen3-TTS standalone text-to-WAV evidence
|
||||
|
||||
This is a **scoped complete text-to-WAV request outside Omni**, not an Omni streaming or full speech-quality qualification. The CPU-only model placement was asserted on the Ryzen AI 9 HX 370 laptop running Windows 11 build 26200. The installed native vLLM extension still lacks its CPU attention operators, so this experiment used the official Qwen PyTorch wrapper as a candidate whole-model stage backend.
|
||||
|
||||
The local checkpoint is [Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice](https://huggingface.co/Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice/tree/85e237c12c027371202489a0ec509ded67b5e4b5) at revision `85e237c12c027371202489a0ec509ded67b5e4b5`. The talker `model.safetensors` is 1,811,626,576 bytes, SHA256 `bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb`; `speech_tokenizer/model.safetensors` is 682,293,092 bytes, SHA256 `836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258`. Both match the remote revision's LFS hashes. Weights stay in the local model cache, not Git. The [official `qwen-tts` wrapper](https://github.com/QwenLM/Qwen3-TTS) was version 0.1.1. The process used Python 3.12.10, PyTorch 2.13.0+cu130 with CUDA masked, BF16, SDPA, eight CPU threads, `Ryan`/English, seed 42, `max_new_tokens=64`, sampling enabled and `non_streaming_mode=True`. All model parameters were checked on CPU.
|
||||
|
||||
| Run | Input and output | Timing and observed result | Raw record |
|
||||
|---|---|---|---|
|
||||
| First sentence | “Hello from the local computer.” → 4.56 s, 24 kHz mono PCM16 | One request took 14.95 s; waveform RMS 0.0610, not silent. Whisper tiny.en transcribed “Hello from the local compute”, WER 0.20. | [report](qwen_tts_cpu_20260923.json), [WAV](qwen_tts_cpu_20260923.wav), [log](qwen_tts_cpu_20260923.log), [ASR report](qwen_tts_cpu_asr_20260923.json), [ASR log](qwen_tts_cpu_asr_20260923.log) |
|
||||
| Serial profile, same first sentence | 1 warmup excluded, 20 measured requests in one loaded process; each produced the same 4.56 s nonzero waveform | Nearest-rank complete-generation p50 13.94 s, p95 14.68 s; RTF approximately 3.06/3.22. No concurrency or streaming measurement. | [all request timings](qwen_tts_cpu_profile20_20260923.json), [WAV](qwen_tts_cpu_profile20_20260923.wav), [log](qwen_tts_cpu_profile20_20260923.log), [memory samples](qwen_tts_cpu_profile20_memory_samples_20260923.json) |
|
||||
| Second sentence | “The blue car is parked beside the library.” → 3.44 s, 24 kHz mono PCM16 | One request took 10.55 s; waveform RMS 0.0476. Whisper tiny.en returned the exact sentence, WER 0.00. | [report](qwen_tts_cpu_second_20260923.json), [WAV](qwen_tts_cpu_second_20260923.wav), [log](qwen_tts_cpu_second_20260923.log), [ASR report](qwen_tts_cpu_second_asr_20260923.json), [ASR log](qwen_tts_cpu_second_asr_20260923.log) |
|
||||
|
||||
The memory trace covers only 120 samples over 32.07 s at roughly 0.25 s intervals during the serial profile. Maximum observed Python process working set was 3,202,650,112 bytes and private bytes 5,336,956,928. It is **not** the loading peak, a full-run maximum, or a shared-RAM/iGPU admission measurement. No device power mode or thermal history was captured. The ASR proxy used locally pinned [Whisper tiny.en](https://huggingface.co/openai/whisper-tiny.en/tree/87c7102498dcde7456f24cfd30239ca606ed9063) revision `87c7102498dcde7456f24cfd30239ca606ed9063`, weights SHA256 `db59695928ded6043adaef491a53ef4e12da9611184d77c53baa691a60b958ad`. Neither two transcriptions nor nonzero audio establishes perceptual quality, speaker fidelity, or general intelligibility.
|
||||
|
||||
The native Omni environment has Transformers 5.14.1. Importing `qwen-tts` 0.1.1 with that version [failed](qwen_tts_native_transformers5_import_failure_20260923.log) at `check_model_inputs()`. The successful process overlaid the wrapper's pinned Transformers 4.57.3 and compatible dependencies through an isolated `PYTHONPATH` directory, leaving the Omni environment unchanged. The missing SoX executable emitted a warning; it did not prevent these WAV outputs. This dependency split must be resolved when implementing an Omni stage binding.
|
||||
|
||||
Reproduce in PowerShell after downloading the exact checkpoint and installing `qwen-tts==0.1.1` and its pinned dependencies into isolated local environments:
|
||||
|
||||
```powershell
|
||||
$root = '\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge'
|
||||
$env:PYTHONPATH = 'C:\Users\zhout\w2\qwentts_pins'
|
||||
$env:CUDA_VISIBLE_DEVICES = ''
|
||||
$env:HF_HUB_OFFLINE = '1'
|
||||
$env:TRANSFORMERS_OFFLINE = '1'
|
||||
$env:OMP_NUM_THREADS = '8'
|
||||
& 'C:\Users\zhout\w2\omni029venv\Scripts\python.exe' "$root\benchmarks\edge_harness\experiments\probe_qwen_tts_native_cpu.py" `
|
||||
--model-dir 'C:\Users\zhout\w2\models\Qwen3-TTS-0.6B-85e237c' `
|
||||
--output-wav 'C:\Users\zhout\w2\qwen_tts_cpu_profile20_20260923.wav' `
|
||||
--output-report 'C:\Users\zhout\w2\qwen_tts_cpu_profile20_20260923.json' `
|
||||
--warmups 1 --repeats 20
|
||||
```
|
||||
|
||||
The ASR check is reproduced with [probe_tts_asr.py](../../../../experiments/probe_tts_asr.py), `--wav` pointing to a generated WAV, `--model-dir` pointing to the pinned Whisper cache, `--model-revision 87c7102498dcde7456f24cfd30239ca606ed9063`, and `--reference-text` matching the chosen sentence. This record does not advance the mobile/NPU or combined-device TTS cells.
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"scope": "one complete native Windows CPU text-to-WAV request via Qwen's standalone PyTorch wrapper; no Omni streaming or speech-quality claim",
|
||||
"platform": "Windows-11-10.0.26200-SP0",
|
||||
"python": "3.12.10",
|
||||
"torch": "2.13.0+cu130",
|
||||
"transformers": "4.57.3",
|
||||
"model_dir": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
|
||||
"talker_sha256": "bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb",
|
||||
"speech_tokenizer_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258",
|
||||
"model_devices": [
|
||||
"cpu"
|
||||
],
|
||||
"dtype": "bfloat16",
|
||||
"attention": "sdpa",
|
||||
"threads": 8,
|
||||
"text": "Hello from the local computer.",
|
||||
"speaker": "Ryan",
|
||||
"language": "English",
|
||||
"max_new_tokens": 64,
|
||||
"seed": 42,
|
||||
"startup_s": 2.0423246000427753,
|
||||
"request_s": 14.94946900010109,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"wav_sha256": "8a41cd36a87981b0ee5b8f77e8a411a4e89b76211fd65b88ad63789f1dd813f4",
|
||||
"status": "passed"
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
'sox' is not recognized as an internal or external command,
|
||||
operable program or batch file.
|
||||
SoX could not be found!
|
||||
|
||||
If you do not have SoX, proceed here:
|
||||
- - - http://sox.sourceforge.net/ - - -
|
||||
|
||||
If you do (or think that you should) have SoX, double-check your
|
||||
path variables.
|
||||
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
|
||||
********
|
||||
Warning: flash-attn is not installed. Will only run the manual PyTorch version. Please install flash-attn for faster inference.
|
||||
********
|
||||
|
||||
{
|
||||
"scope": "one complete native Windows CPU text-to-WAV request via Qwen's standalone PyTorch wrapper; no Omni streaming or speech-quality claim",
|
||||
"platform": "Windows-11-10.0.26200-SP0",
|
||||
"python": "3.12.10",
|
||||
"torch": "2.13.0+cu130",
|
||||
"transformers": "4.57.3",
|
||||
"model_dir": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
|
||||
"talker_sha256": "bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb",
|
||||
"speech_tokenizer_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258",
|
||||
"model_devices": [
|
||||
"cpu"
|
||||
],
|
||||
"dtype": "bfloat16",
|
||||
"attention": "sdpa",
|
||||
"threads": 8,
|
||||
"text": "Hello from the local computer.",
|
||||
"speaker": "Ryan",
|
||||
"language": "English",
|
||||
"max_new_tokens": 64,
|
||||
"seed": 42,
|
||||
"startup_s": 2.0423246000427753,
|
||||
"request_s": 14.94946900010109,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"wav_sha256": "8a41cd36a87981b0ee5b8f77e8a411a4e89b76211fd65b88ad63789f1dd813f4",
|
||||
"status": "passed"
|
||||
}
|
||||
BIN
Binary file not shown.
+16
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"scope": "local Whisper tiny.en ASR proxy for generated speech; no perceptual quality claim",
|
||||
"asr_model": "openai/whisper-tiny.en",
|
||||
"asr_revision": "87c7102498dcde7456f24cfd30239ca606ed9063",
|
||||
"asr_weights_sha256": "db59695928ded6043adaef491a53ef4e12da9611184d77c53baa691a60b958ad",
|
||||
"transformers": "4.57.3",
|
||||
"torch": "2.13.0+cu130",
|
||||
"wav_sha256": "8a41cd36a87981b0ee5b8f77e8a411a4e89b76211fd65b88ad63789f1dd813f4",
|
||||
"input_sample_rate": 24000,
|
||||
"input_duration_s": 4.56,
|
||||
"reference_text": "Hello from the local computer.",
|
||||
"transcript": "Hello from the local compute",
|
||||
"word_error_rate": 0.2,
|
||||
"asr_load_s": 0.8311157999560237,
|
||||
"asr_inference_s": 0.9143147000577301
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
Using custom `forced_decoder_ids` from the (generation) config. This is deprecated in favor of the `task` and `language` flags/config options.
|
||||
{
|
||||
"scope": "local Whisper tiny.en ASR proxy for generated speech; no perceptual quality claim",
|
||||
"asr_model": "openai/whisper-tiny.en",
|
||||
"asr_revision": "87c7102498dcde7456f24cfd30239ca606ed9063",
|
||||
"asr_weights_sha256": "db59695928ded6043adaef491a53ef4e12da9611184d77c53baa691a60b958ad",
|
||||
"transformers": "4.57.3",
|
||||
"torch": "2.13.0+cu130",
|
||||
"wav_sha256": "8a41cd36a87981b0ee5b8f77e8a411a4e89b76211fd65b88ad63789f1dd813f4",
|
||||
"input_sample_rate": 24000,
|
||||
"input_duration_s": 4.56,
|
||||
"reference_text": "Hello from the local computer.",
|
||||
"transcript": "Hello from the local compute",
|
||||
"word_error_rate": 0.2,
|
||||
"asr_load_s": 0.8311157999560237,
|
||||
"asr_inference_s": 0.9143147000577301
|
||||
}
|
||||
+252
@@ -0,0 +1,252 @@
|
||||
{
|
||||
"scope": "one complete native Windows CPU text-to-WAV request via Qwen's standalone PyTorch wrapper; no Omni streaming or speech-quality claim",
|
||||
"platform": "Windows-11-10.0.26200-SP0",
|
||||
"python": "3.12.10",
|
||||
"torch": "2.13.0+cu130",
|
||||
"transformers": "4.57.3",
|
||||
"model_dir": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
|
||||
"talker_sha256": "bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb",
|
||||
"speech_tokenizer_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258",
|
||||
"model_devices": [
|
||||
"cpu"
|
||||
],
|
||||
"dtype": "bfloat16",
|
||||
"attention": "sdpa",
|
||||
"threads": 8,
|
||||
"text": "Hello from the local computer.",
|
||||
"speaker": "Ryan",
|
||||
"language": "English",
|
||||
"max_new_tokens": 64,
|
||||
"seed": 42,
|
||||
"startup_s": 1.4321526000276208,
|
||||
"request_s": 14.575387700111605,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"wav_sha256": "8a41cd36a87981b0ee5b8f77e8a411a4e89b76211fd65b88ad63789f1dd813f4",
|
||||
"warmups": [
|
||||
{
|
||||
"request_s": 14.520753899938427,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
}
|
||||
],
|
||||
"measured": [
|
||||
{
|
||||
"request_s": 14.575387700111605,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 14.68431669997517,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.939570999937132,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.917316399980336,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.882408199948259,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.867731199949048,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.773739999975078,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.850018199998885,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.97315980005078,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 14.145962399896234,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.959658100036904,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.83213820005767,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 14.004250700003468,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.633021700079553,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 14.114254100015387,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.691989900078624,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.85189100005664,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 14.763823200017214,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.973342600045726,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 14.051946000079624,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
}
|
||||
],
|
||||
"profile": {
|
||||
"repeats": 20,
|
||||
"concurrency": 1,
|
||||
"p50_request_s": 13.939570999937132,
|
||||
"p95_request_s": 14.68431669997517,
|
||||
"all_same_float32_audio": true
|
||||
},
|
||||
"status": "passed"
|
||||
}
|
||||
+288
@@ -0,0 +1,288 @@
|
||||
'sox' is not recognized as an internal or external command,
|
||||
operable program or batch file.
|
||||
SoX could not be found!
|
||||
|
||||
If you do not have SoX, proceed here:
|
||||
- - - http://sox.sourceforge.net/ - - -
|
||||
|
||||
If you do (or think that you should) have SoX, double-check your
|
||||
path variables.
|
||||
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
|
||||
********
|
||||
Warning: flash-attn is not installed. Will only run the manual PyTorch version. Please install flash-attn for faster inference.
|
||||
********
|
||||
|
||||
{
|
||||
"scope": "one complete native Windows CPU text-to-WAV request via Qwen's standalone PyTorch wrapper; no Omni streaming or speech-quality claim",
|
||||
"platform": "Windows-11-10.0.26200-SP0",
|
||||
"python": "3.12.10",
|
||||
"torch": "2.13.0+cu130",
|
||||
"transformers": "4.57.3",
|
||||
"model_dir": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
|
||||
"talker_sha256": "bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb",
|
||||
"speech_tokenizer_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258",
|
||||
"model_devices": [
|
||||
"cpu"
|
||||
],
|
||||
"dtype": "bfloat16",
|
||||
"attention": "sdpa",
|
||||
"threads": 8,
|
||||
"text": "Hello from the local computer.",
|
||||
"speaker": "Ryan",
|
||||
"language": "English",
|
||||
"max_new_tokens": 64,
|
||||
"seed": 42,
|
||||
"startup_s": 1.4321526000276208,
|
||||
"request_s": 14.575387700111605,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"wav_sha256": "8a41cd36a87981b0ee5b8f77e8a411a4e89b76211fd65b88ad63789f1dd813f4",
|
||||
"warmups": [
|
||||
{
|
||||
"request_s": 14.520753899938427,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
}
|
||||
],
|
||||
"measured": [
|
||||
{
|
||||
"request_s": 14.575387700111605,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 14.68431669997517,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.939570999937132,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.917316399980336,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.882408199948259,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.867731199949048,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.773739999975078,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.850018199998885,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.97315980005078,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 14.145962399896234,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.959658100036904,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.83213820005767,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 14.004250700003468,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.633021700079553,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 14.114254100015387,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.691989900078624,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.85189100005664,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 14.763823200017214,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 13.973342600045726,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
},
|
||||
{
|
||||
"request_s": 14.051946000079624,
|
||||
"sample_rate": 24000,
|
||||
"samples": 109440,
|
||||
"duration_s": 4.56,
|
||||
"rms": 0.060994377256646456,
|
||||
"peak_abs": 0.38671875,
|
||||
"nonzero_samples": 109440,
|
||||
"float32_sha256": "ba2a318b6f62c24dd94194f959676e93c9e739944b2b652cc9e250fadd547d96"
|
||||
}
|
||||
],
|
||||
"profile": {
|
||||
"repeats": 20,
|
||||
"concurrency": 1,
|
||||
"p50_request_s": 13.939570999937132,
|
||||
"p95_request_s": 14.68431669997517,
|
||||
"all_same_float32_audio": true
|
||||
},
|
||||
"status": "passed"
|
||||
}
|
||||
BIN
Binary file not shown.
+602
@@ -0,0 +1,602 @@
|
||||
[
|
||||
{
|
||||
"unix": 1790161689.088,
|
||||
"working_set_bytes": 3060117504,
|
||||
"private_bytes": 4949221376
|
||||
},
|
||||
{
|
||||
"unix": 1790161689.386,
|
||||
"working_set_bytes": 3202650112,
|
||||
"private_bytes": 5313794048
|
||||
},
|
||||
{
|
||||
"unix": 1790161689.652,
|
||||
"working_set_bytes": 3020541952,
|
||||
"private_bytes": 4763381760
|
||||
},
|
||||
{
|
||||
"unix": 1790161689.916,
|
||||
"working_set_bytes": 3022069760,
|
||||
"private_bytes": 4765212672
|
||||
},
|
||||
{
|
||||
"unix": 1790161690.182,
|
||||
"working_set_bytes": 3021770752,
|
||||
"private_bytes": 4764819456
|
||||
},
|
||||
{
|
||||
"unix": 1790161690.451,
|
||||
"working_set_bytes": 3022278656,
|
||||
"private_bytes": 4764884992
|
||||
},
|
||||
{
|
||||
"unix": 1790161690.72,
|
||||
"working_set_bytes": 3023749120,
|
||||
"private_bytes": 4767051776
|
||||
},
|
||||
{
|
||||
"unix": 1790161690.989,
|
||||
"working_set_bytes": 3024019456,
|
||||
"private_bytes": 4767117312
|
||||
},
|
||||
{
|
||||
"unix": 1790161691.257,
|
||||
"working_set_bytes": 3023998976,
|
||||
"private_bytes": 4767117312
|
||||
},
|
||||
{
|
||||
"unix": 1790161691.524,
|
||||
"working_set_bytes": 3025113088,
|
||||
"private_bytes": 4767838208
|
||||
},
|
||||
{
|
||||
"unix": 1790161691.793,
|
||||
"working_set_bytes": 3025469440,
|
||||
"private_bytes": 4768428032
|
||||
},
|
||||
{
|
||||
"unix": 1790161692.062,
|
||||
"working_set_bytes": 3025842176,
|
||||
"private_bytes": 4768952320
|
||||
},
|
||||
{
|
||||
"unix": 1790161692.331,
|
||||
"working_set_bytes": 3025772544,
|
||||
"private_bytes": 4768493568
|
||||
},
|
||||
{
|
||||
"unix": 1790161692.6,
|
||||
"working_set_bytes": 3025969152,
|
||||
"private_bytes": 4768624640
|
||||
},
|
||||
{
|
||||
"unix": 1790161692.871,
|
||||
"working_set_bytes": 3026030592,
|
||||
"private_bytes": 4768624640
|
||||
},
|
||||
{
|
||||
"unix": 1790161693.14,
|
||||
"working_set_bytes": 3026505728,
|
||||
"private_bytes": 4769083392
|
||||
},
|
||||
{
|
||||
"unix": 1790161693.41,
|
||||
"working_set_bytes": 3030134784,
|
||||
"private_bytes": 4772892672
|
||||
},
|
||||
{
|
||||
"unix": 1790161693.695,
|
||||
"working_set_bytes": 3030298624,
|
||||
"private_bytes": 4773023744
|
||||
},
|
||||
{
|
||||
"unix": 1790161693.965,
|
||||
"working_set_bytes": 3030384640,
|
||||
"private_bytes": 4772958208
|
||||
},
|
||||
{
|
||||
"unix": 1790161694.231,
|
||||
"working_set_bytes": 3030425600,
|
||||
"private_bytes": 4773023744
|
||||
},
|
||||
{
|
||||
"unix": 1790161694.498,
|
||||
"working_set_bytes": 3030360064,
|
||||
"private_bytes": 4772958208
|
||||
},
|
||||
{
|
||||
"unix": 1790161694.767,
|
||||
"working_set_bytes": 3030302720,
|
||||
"private_bytes": 4772958208
|
||||
},
|
||||
{
|
||||
"unix": 1790161695.033,
|
||||
"working_set_bytes": 3030401024,
|
||||
"private_bytes": 4773023744
|
||||
},
|
||||
{
|
||||
"unix": 1790161695.304,
|
||||
"working_set_bytes": 3030454272,
|
||||
"private_bytes": 4773023744
|
||||
},
|
||||
{
|
||||
"unix": 1790161695.573,
|
||||
"working_set_bytes": 3030921216,
|
||||
"private_bytes": 4773482496
|
||||
},
|
||||
{
|
||||
"unix": 1790161695.854,
|
||||
"working_set_bytes": 3030863872,
|
||||
"private_bytes": 4773482496
|
||||
},
|
||||
{
|
||||
"unix": 1790161696.124,
|
||||
"working_set_bytes": 3031007232,
|
||||
"private_bytes": 4773613568
|
||||
},
|
||||
{
|
||||
"unix": 1790161696.392,
|
||||
"working_set_bytes": 3031044096,
|
||||
"private_bytes": 4773613568
|
||||
},
|
||||
{
|
||||
"unix": 1790161696.657,
|
||||
"working_set_bytes": 3031052288,
|
||||
"private_bytes": 4773613568
|
||||
},
|
||||
{
|
||||
"unix": 1790161696.927,
|
||||
"working_set_bytes": 3030994944,
|
||||
"private_bytes": 4773548032
|
||||
},
|
||||
{
|
||||
"unix": 1790161697.196,
|
||||
"working_set_bytes": 3031031808,
|
||||
"private_bytes": 4773613568
|
||||
},
|
||||
{
|
||||
"unix": 1790161697.464,
|
||||
"working_set_bytes": 3031068672,
|
||||
"private_bytes": 4773613568
|
||||
},
|
||||
{
|
||||
"unix": 1790161697.732,
|
||||
"working_set_bytes": 3031093248,
|
||||
"private_bytes": 4773613568
|
||||
},
|
||||
{
|
||||
"unix": 1790161698,
|
||||
"working_set_bytes": 3031076864,
|
||||
"private_bytes": 4773613568
|
||||
},
|
||||
{
|
||||
"unix": 1790161698.271,
|
||||
"working_set_bytes": 3031601152,
|
||||
"private_bytes": 4774141952
|
||||
},
|
||||
{
|
||||
"unix": 1790161698.541,
|
||||
"working_set_bytes": 3031568384,
|
||||
"private_bytes": 4774141952
|
||||
},
|
||||
{
|
||||
"unix": 1790161698.808,
|
||||
"working_set_bytes": 3031793664,
|
||||
"private_bytes": 4774338560
|
||||
},
|
||||
{
|
||||
"unix": 1790161699.077,
|
||||
"working_set_bytes": 3031814144,
|
||||
"private_bytes": 4774338560
|
||||
},
|
||||
{
|
||||
"unix": 1790161699.347,
|
||||
"working_set_bytes": 3031814144,
|
||||
"private_bytes": 4774338560
|
||||
},
|
||||
{
|
||||
"unix": 1790161699.617,
|
||||
"working_set_bytes": 3031838720,
|
||||
"private_bytes": 4774338560
|
||||
},
|
||||
{
|
||||
"unix": 1790161699.887,
|
||||
"working_set_bytes": 3032080384,
|
||||
"private_bytes": 4774535168
|
||||
},
|
||||
{
|
||||
"unix": 1790161700.153,
|
||||
"working_set_bytes": 3032080384,
|
||||
"private_bytes": 4774535168
|
||||
},
|
||||
{
|
||||
"unix": 1790161700.422,
|
||||
"working_set_bytes": 3032616960,
|
||||
"private_bytes": 4775059456
|
||||
},
|
||||
{
|
||||
"unix": 1790161700.691,
|
||||
"working_set_bytes": 3036090368,
|
||||
"private_bytes": 4778541056
|
||||
},
|
||||
{
|
||||
"unix": 1790161700.96,
|
||||
"working_set_bytes": 3036614656,
|
||||
"private_bytes": 4779065344
|
||||
},
|
||||
{
|
||||
"unix": 1790161701.226,
|
||||
"working_set_bytes": 3036688384,
|
||||
"private_bytes": 4779196416
|
||||
},
|
||||
{
|
||||
"unix": 1790161701.508,
|
||||
"working_set_bytes": 3036688384,
|
||||
"private_bytes": 4779196416
|
||||
},
|
||||
{
|
||||
"unix": 1790161701.787,
|
||||
"working_set_bytes": 3036684288,
|
||||
"private_bytes": 4779196416
|
||||
},
|
||||
{
|
||||
"unix": 1790161702.055,
|
||||
"working_set_bytes": 3036700672,
|
||||
"private_bytes": 4779196416
|
||||
},
|
||||
{
|
||||
"unix": 1790161702.324,
|
||||
"working_set_bytes": 3036766208,
|
||||
"private_bytes": 4779261952
|
||||
},
|
||||
{
|
||||
"unix": 1790161702.593,
|
||||
"working_set_bytes": 3036786688,
|
||||
"private_bytes": 4779327488
|
||||
},
|
||||
{
|
||||
"unix": 1790161702.861,
|
||||
"working_set_bytes": 3037073408,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161703.13,
|
||||
"working_set_bytes": 3129810944,
|
||||
"private_bytes": 4941004800
|
||||
},
|
||||
{
|
||||
"unix": 1790161703.396,
|
||||
"working_set_bytes": 3134775296,
|
||||
"private_bytes": 4940738560
|
||||
},
|
||||
{
|
||||
"unix": 1790161703.665,
|
||||
"working_set_bytes": 3020894208,
|
||||
"private_bytes": 4795482112
|
||||
},
|
||||
{
|
||||
"unix": 1790161703.936,
|
||||
"working_set_bytes": 3019825152,
|
||||
"private_bytes": 4795088896
|
||||
},
|
||||
{
|
||||
"unix": 1790161704.204,
|
||||
"working_set_bytes": 3020812288,
|
||||
"private_bytes": 4796137472
|
||||
},
|
||||
{
|
||||
"unix": 1790161704.472,
|
||||
"working_set_bytes": 3023216640,
|
||||
"private_bytes": 4795744256
|
||||
},
|
||||
{
|
||||
"unix": 1790161704.741,
|
||||
"working_set_bytes": 3023912960,
|
||||
"private_bytes": 4796334080
|
||||
},
|
||||
{
|
||||
"unix": 1790161705.01,
|
||||
"working_set_bytes": 3024146432,
|
||||
"private_bytes": 4796530688
|
||||
},
|
||||
{
|
||||
"unix": 1790161705.277,
|
||||
"working_set_bytes": 3024134144,
|
||||
"private_bytes": 4796530688
|
||||
},
|
||||
{
|
||||
"unix": 1790161705.544,
|
||||
"working_set_bytes": 3024945152,
|
||||
"private_bytes": 4796465152
|
||||
},
|
||||
{
|
||||
"unix": 1790161705.815,
|
||||
"working_set_bytes": 3025084416,
|
||||
"private_bytes": 4796596224
|
||||
},
|
||||
{
|
||||
"unix": 1790161706.084,
|
||||
"working_set_bytes": 3026300928,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161706.351,
|
||||
"working_set_bytes": 3026055168,
|
||||
"private_bytes": 4796399616
|
||||
},
|
||||
{
|
||||
"unix": 1790161706.622,
|
||||
"working_set_bytes": 3026067456,
|
||||
"private_bytes": 4796399616
|
||||
},
|
||||
{
|
||||
"unix": 1790161706.888,
|
||||
"working_set_bytes": 3026100224,
|
||||
"private_bytes": 4796399616
|
||||
},
|
||||
{
|
||||
"unix": 1790161707.156,
|
||||
"working_set_bytes": 3028156416,
|
||||
"private_bytes": 4796661760
|
||||
},
|
||||
{
|
||||
"unix": 1790161707.425,
|
||||
"working_set_bytes": 3029786624,
|
||||
"private_bytes": 4796596224
|
||||
},
|
||||
{
|
||||
"unix": 1790161707.694,
|
||||
"working_set_bytes": 3030142976,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161707.966,
|
||||
"working_set_bytes": 3030380544,
|
||||
"private_bytes": 4796596224
|
||||
},
|
||||
{
|
||||
"unix": 1790161708.235,
|
||||
"working_set_bytes": 3030433792,
|
||||
"private_bytes": 4796661760
|
||||
},
|
||||
{
|
||||
"unix": 1790161708.504,
|
||||
"working_set_bytes": 3030487040,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161708.772,
|
||||
"working_set_bytes": 3030441984,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161709.042,
|
||||
"working_set_bytes": 3030859776,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161709.312,
|
||||
"working_set_bytes": 3030872064,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161709.58,
|
||||
"working_set_bytes": 3030880256,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161709.848,
|
||||
"working_set_bytes": 3030880256,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161710.119,
|
||||
"working_set_bytes": 3030872064,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161710.4,
|
||||
"working_set_bytes": 3030933504,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161710.667,
|
||||
"working_set_bytes": 3030974464,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161710.935,
|
||||
"working_set_bytes": 3030949888,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161711.202,
|
||||
"working_set_bytes": 3030884352,
|
||||
"private_bytes": 4796661760
|
||||
},
|
||||
{
|
||||
"unix": 1790161711.482,
|
||||
"working_set_bytes": 3030958080,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161711.751,
|
||||
"working_set_bytes": 3031097344,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161712.02,
|
||||
"working_set_bytes": 3031556096,
|
||||
"private_bytes": 4796661760
|
||||
},
|
||||
{
|
||||
"unix": 1790161712.287,
|
||||
"working_set_bytes": 3031564288,
|
||||
"private_bytes": 4796661760
|
||||
},
|
||||
{
|
||||
"unix": 1790161712.556,
|
||||
"working_set_bytes": 3031564288,
|
||||
"private_bytes": 4796661760
|
||||
},
|
||||
{
|
||||
"unix": 1790161712.825,
|
||||
"working_set_bytes": 3032092672,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161713.091,
|
||||
"working_set_bytes": 3032088576,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161713.355,
|
||||
"working_set_bytes": 3032088576,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161713.636,
|
||||
"working_set_bytes": 3032027136,
|
||||
"private_bytes": 4796596224
|
||||
},
|
||||
{
|
||||
"unix": 1790161713.906,
|
||||
"working_set_bytes": 3032174592,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161714.175,
|
||||
"working_set_bytes": 3032186880,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161714.441,
|
||||
"working_set_bytes": 3036643328,
|
||||
"private_bytes": 4796596224
|
||||
},
|
||||
{
|
||||
"unix": 1790161714.712,
|
||||
"working_set_bytes": 3036839936,
|
||||
"private_bytes": 4796596224
|
||||
},
|
||||
{
|
||||
"unix": 1790161714.98,
|
||||
"working_set_bytes": 3036803072,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161715.249,
|
||||
"working_set_bytes": 3036721152,
|
||||
"private_bytes": 4796596224
|
||||
},
|
||||
{
|
||||
"unix": 1790161715.519,
|
||||
"working_set_bytes": 3036811264,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161715.788,
|
||||
"working_set_bytes": 3036815360,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161716.056,
|
||||
"working_set_bytes": 3036819456,
|
||||
"private_bytes": 4796727296
|
||||
},
|
||||
{
|
||||
"unix": 1790161716.325,
|
||||
"working_set_bytes": 3036643328,
|
||||
"private_bytes": 4796399616
|
||||
},
|
||||
{
|
||||
"unix": 1790161716.594,
|
||||
"working_set_bytes": 3036815360,
|
||||
"private_bytes": 4796661760
|
||||
},
|
||||
{
|
||||
"unix": 1790161716.863,
|
||||
"working_set_bytes": 3062509568,
|
||||
"private_bytes": 4818477056
|
||||
},
|
||||
{
|
||||
"unix": 1790161717.128,
|
||||
"working_set_bytes": 3131551744,
|
||||
"private_bytes": 5092241408
|
||||
},
|
||||
{
|
||||
"unix": 1790161717.397,
|
||||
"working_set_bytes": 3198607360,
|
||||
"private_bytes": 5336956928
|
||||
},
|
||||
{
|
||||
"unix": 1790161717.668,
|
||||
"working_set_bytes": 3021910016,
|
||||
"private_bytes": 4765679616
|
||||
},
|
||||
{
|
||||
"unix": 1790161717.937,
|
||||
"working_set_bytes": 3021344768,
|
||||
"private_bytes": 4764565504
|
||||
},
|
||||
{
|
||||
"unix": 1790161718.207,
|
||||
"working_set_bytes": 3021414400,
|
||||
"private_bytes": 4764434432
|
||||
},
|
||||
{
|
||||
"unix": 1790161718.478,
|
||||
"working_set_bytes": 3023622144,
|
||||
"private_bytes": 4766404608
|
||||
},
|
||||
{
|
||||
"unix": 1790161718.748,
|
||||
"working_set_bytes": 3024072704,
|
||||
"private_bytes": 4767584256
|
||||
},
|
||||
{
|
||||
"unix": 1790161719.012,
|
||||
"working_set_bytes": 3024179200,
|
||||
"private_bytes": 4767256576
|
||||
},
|
||||
{
|
||||
"unix": 1790161719.282,
|
||||
"working_set_bytes": 3024273408,
|
||||
"private_bytes": 4767846400
|
||||
},
|
||||
{
|
||||
"unix": 1790161719.547,
|
||||
"working_set_bytes": 3024846848,
|
||||
"private_bytes": 4767780864
|
||||
},
|
||||
{
|
||||
"unix": 1790161719.817,
|
||||
"working_set_bytes": 3024887808,
|
||||
"private_bytes": 4767846400
|
||||
},
|
||||
{
|
||||
"unix": 1790161720.086,
|
||||
"working_set_bytes": 3026202624,
|
||||
"private_bytes": 4768960512
|
||||
},
|
||||
{
|
||||
"unix": 1790161720.356,
|
||||
"working_set_bytes": 3025444864,
|
||||
"private_bytes": 4768370688
|
||||
},
|
||||
{
|
||||
"unix": 1790161720.622,
|
||||
"working_set_bytes": 3025362944,
|
||||
"private_bytes": 4768829440
|
||||
},
|
||||
{
|
||||
"unix": 1790161720.892,
|
||||
"working_set_bytes": 3025711104,
|
||||
"private_bytes": 4768829440
|
||||
},
|
||||
{
|
||||
"unix": 1790161721.16,
|
||||
"working_set_bytes": 3029348352,
|
||||
"private_bytes": 4773421056
|
||||
}
|
||||
]
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"scope": "one complete native Windows CPU text-to-WAV request via Qwen's standalone PyTorch wrapper; no Omni streaming or speech-quality claim",
|
||||
"platform": "Windows-11-10.0.26200-SP0",
|
||||
"python": "3.12.10",
|
||||
"torch": "2.13.0+cu130",
|
||||
"transformers": "4.57.3",
|
||||
"model_dir": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
|
||||
"talker_sha256": "bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb",
|
||||
"speech_tokenizer_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258",
|
||||
"model_devices": [
|
||||
"cpu"
|
||||
],
|
||||
"dtype": "bfloat16",
|
||||
"attention": "sdpa",
|
||||
"threads": 8,
|
||||
"text": "The blue car is parked beside the library.",
|
||||
"speaker": "Ryan",
|
||||
"language": "English",
|
||||
"max_new_tokens": 64,
|
||||
"seed": 42,
|
||||
"startup_s": 1.4111617000307888,
|
||||
"request_s": 10.552245300030336,
|
||||
"sample_rate": 24000,
|
||||
"samples": 82560,
|
||||
"duration_s": 3.44,
|
||||
"rms": 0.04756783349280258,
|
||||
"peak_abs": 0.32421875,
|
||||
"nonzero_samples": 82560,
|
||||
"wav_sha256": "2e93e1ef8858df3a263fcdbbbe2b9bed8376485042dbc640092967cdb6afca2b",
|
||||
"warmups": [],
|
||||
"measured": [
|
||||
{
|
||||
"request_s": 10.552245300030336,
|
||||
"sample_rate": 24000,
|
||||
"samples": 82560,
|
||||
"duration_s": 3.44,
|
||||
"rms": 0.04756783349280258,
|
||||
"peak_abs": 0.32421875,
|
||||
"nonzero_samples": 82560,
|
||||
"float32_sha256": "97195646a0fe6b42627040f3c60181b7601fe6de5d524dd57219a69b9abb66c2"
|
||||
}
|
||||
],
|
||||
"profile": {
|
||||
"repeats": 1,
|
||||
"concurrency": 1,
|
||||
"p50_request_s": 10.552245300030336,
|
||||
"p95_request_s": 10.552245300030336,
|
||||
"all_same_float32_audio": true
|
||||
},
|
||||
"status": "passed"
|
||||
}
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
'sox' is not recognized as an internal or external command,
|
||||
operable program or batch file.
|
||||
SoX could not be found!
|
||||
|
||||
If you do not have SoX, proceed here:
|
||||
- - - http://sox.sourceforge.net/ - - -
|
||||
|
||||
If you do (or think that you should) have SoX, double-check your
|
||||
path variables.
|
||||
|
||||
Setting `pad_token_id` to `eos_token_id`:2150 for open-end generation.
|
||||
|
||||
********
|
||||
Warning: flash-attn is not installed. Will only run the manual PyTorch version. Please install flash-attn for faster inference.
|
||||
********
|
||||
|
||||
{
|
||||
"scope": "one complete native Windows CPU text-to-WAV request via Qwen's standalone PyTorch wrapper; no Omni streaming or speech-quality claim",
|
||||
"platform": "Windows-11-10.0.26200-SP0",
|
||||
"python": "3.12.10",
|
||||
"torch": "2.13.0+cu130",
|
||||
"transformers": "4.57.3",
|
||||
"model_dir": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
|
||||
"talker_sha256": "bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb",
|
||||
"speech_tokenizer_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258",
|
||||
"model_devices": [
|
||||
"cpu"
|
||||
],
|
||||
"dtype": "bfloat16",
|
||||
"attention": "sdpa",
|
||||
"threads": 8,
|
||||
"text": "The blue car is parked beside the library.",
|
||||
"speaker": "Ryan",
|
||||
"language": "English",
|
||||
"max_new_tokens": 64,
|
||||
"seed": 42,
|
||||
"startup_s": 1.4111617000307888,
|
||||
"request_s": 10.552245300030336,
|
||||
"sample_rate": 24000,
|
||||
"samples": 82560,
|
||||
"duration_s": 3.44,
|
||||
"rms": 0.04756783349280258,
|
||||
"peak_abs": 0.32421875,
|
||||
"nonzero_samples": 82560,
|
||||
"wav_sha256": "2e93e1ef8858df3a263fcdbbbe2b9bed8376485042dbc640092967cdb6afca2b",
|
||||
"warmups": [],
|
||||
"measured": [
|
||||
{
|
||||
"request_s": 10.552245300030336,
|
||||
"sample_rate": 24000,
|
||||
"samples": 82560,
|
||||
"duration_s": 3.44,
|
||||
"rms": 0.04756783349280258,
|
||||
"peak_abs": 0.32421875,
|
||||
"nonzero_samples": 82560,
|
||||
"float32_sha256": "97195646a0fe6b42627040f3c60181b7601fe6de5d524dd57219a69b9abb66c2"
|
||||
}
|
||||
],
|
||||
"profile": {
|
||||
"repeats": 1,
|
||||
"concurrency": 1,
|
||||
"p50_request_s": 10.552245300030336,
|
||||
"p95_request_s": 10.552245300030336,
|
||||
"all_same_float32_audio": true
|
||||
},
|
||||
"status": "passed"
|
||||
}
|
||||
BIN
Binary file not shown.
+16
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"scope": "local Whisper tiny.en ASR proxy for generated speech; no perceptual quality claim",
|
||||
"asr_model": "openai/whisper-tiny.en",
|
||||
"asr_revision": "87c7102498dcde7456f24cfd30239ca606ed9063",
|
||||
"asr_weights_sha256": "db59695928ded6043adaef491a53ef4e12da9611184d77c53baa691a60b958ad",
|
||||
"transformers": "4.57.3",
|
||||
"torch": "2.13.0+cu130",
|
||||
"wav_sha256": "2e93e1ef8858df3a263fcdbbbe2b9bed8376485042dbc640092967cdb6afca2b",
|
||||
"input_sample_rate": 24000,
|
||||
"input_duration_s": 3.44,
|
||||
"reference_text": "The blue car is parked beside the library.",
|
||||
"transcript": "The blue car is parked beside the library.",
|
||||
"word_error_rate": 0.0,
|
||||
"asr_load_s": 0.649280299898237,
|
||||
"asr_inference_s": 0.9257399999769405
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
Using custom `forced_decoder_ids` from the (generation) config. This is deprecated in favor of the `task` and `language` flags/config options.
|
||||
{
|
||||
"scope": "local Whisper tiny.en ASR proxy for generated speech; no perceptual quality claim",
|
||||
"asr_model": "openai/whisper-tiny.en",
|
||||
"asr_revision": "87c7102498dcde7456f24cfd30239ca606ed9063",
|
||||
"asr_weights_sha256": "db59695928ded6043adaef491a53ef4e12da9611184d77c53baa691a60b958ad",
|
||||
"transformers": "4.57.3",
|
||||
"torch": "2.13.0+cu130",
|
||||
"wav_sha256": "2e93e1ef8858df3a263fcdbbbe2b9bed8376485042dbc640092967cdb6afca2b",
|
||||
"input_sample_rate": 24000,
|
||||
"input_duration_s": 3.44,
|
||||
"reference_text": "The blue car is parked beside the library.",
|
||||
"transcript": "The blue car is parked beside the library.",
|
||||
"word_error_rate": 0.0,
|
||||
"asr_load_s": 0.649280299898237,
|
||||
"asr_inference_s": 0.9257399999769405
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
'sox' is not recognized as an internal or external command,
|
||||
operable program or batch file.
|
||||
SoX could not be found!
|
||||
|
||||
If you do not have SoX, proceed here:
|
||||
- - - http://sox.sourceforge.net/ - - -
|
||||
|
||||
If you do (or think that you should) have SoX, double-check your
|
||||
path variables.
|
||||
|
||||
Traceback (most recent call last):
|
||||
File "<string>", line 1, in <module>
|
||||
File "C:\Users\zhout\w2\omni029venv\Lib\site-packages\qwen_tts\__init__.py", line 21, in <module>
|
||||
from .inference.qwen3_tts_model import Qwen3TTSModel, VoiceClonePromptItem
|
||||
File "C:\Users\zhout\w2\omni029venv\Lib\site-packages\qwen_tts\inference\qwen3_tts_model.py", line 29, in <module>
|
||||
from ..core.models import Qwen3TTSConfig, Qwen3TTSForConditionalGeneration, Qwen3TTSProcessor
|
||||
File "C:\Users\zhout\w2\omni029venv\Lib\site-packages\qwen_tts\core\__init__.py", line 19, in <module>
|
||||
from .tokenizer_12hz.modeling_qwen3_tts_tokenizer_v2 import Qwen3TTSTokenizerV2Model
|
||||
File "C:\Users\zhout\w2\omni029venv\Lib\site-packages\qwen_tts\core\tokenizer_12hz\modeling_qwen3_tts_tokenizer_v2.py", line 476, in <module>
|
||||
class Qwen3TTSTokenizerV2DecoderTransformerModel(Qwen3TTSTokenizerV2DecoderPreTrainedModel):
|
||||
File "C:\Users\zhout\w2\omni029venv\Lib\site-packages\qwen_tts\core\tokenizer_12hz\modeling_qwen3_tts_tokenizer_v2.py", line 499, in Qwen3TTSTokenizerV2DecoderTransformerModel
|
||||
@check_model_inputs()
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
TypeError: check_model_inputs() missing 1 required positional argument: 'func'
|
||||
|
||||
********
|
||||
Warning: flash-attn is not installed. Will only run the manual PyTorch version. Please install flash-attn for faster inference.
|
||||
********
|
||||
|
||||
@@ -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, and complete Spark text-request profiles through standalone llama.cpp on native Windows CPU and Radeon 890M. Profiling completion does not imply full release qualification or Omni integration.
|
||||
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 on native Windows CPU and Radeon 890M, and a standalone Qwen3-TTS text-to-WAV profile on native Windows CPU. Profiling completion does not imply full release qualification or Omni integration.
|
||||
|
||||
## 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: standalone Spark text | NOT E2E | NOT E2E | NOT E2E | synthetic policy pass |
|
||||
| PC HX370: CPU / native Windows | scoped E2E: standalone Spark text | scoped E2E: standalone text → WAV | NOT E2E | NOT E2E | 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: standalone Spark text | NOT E2E | NOT E2E | NOT E2E | NOT E2E |
|
||||
@@ -31,7 +31,7 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i
|
||||
| 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 | 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_STANDALONE | The real Spark-X2.5-1.7B Q4_K_M GGUF ran a complete text path in native Windows llama.cpp CPU (`-dev none -ngl 0`): `Paris` and the correct `1511` answer to a 2,463-token inventory prompt, one warmup plus 20 uncached serial inventory requests with p50/p95 6.65/6.86 s and 20/20 correct, and a post-stream-close recovery request. This does not repair the missing vLLM CPU attention operators or establish an Omni stage binding. One repeated input, no loading peak or sustained thermal/power gate. | Bind the whole llama.cpp session to Omni's state, request/event, memory and cancellation contracts; validate broader text quality and sustained use; [standalone backend evidence](../../../e2e_expansion_20260923/evidence/spark_radeon890m_llamacpp/README.md). |
|
||||
| PC HX370: CPU / native Windows | Qwen3-TTS 0.6B CustomVoice | 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 | Qwen3-TTS 0.6B CustomVoice | SCOPED_E2E_STANDALONE | The pinned 0.6B CustomVoice checkpoint ran wholly on CPU through Qwen's standalone PyTorch wrapper (BF16/SDPA) and produced nonzero 24 kHz WAVs for two English sentences. For one repeated short prompt, 1 warmup + 20 serial measured complete generation requests had nearest-rank p50/p95 13.94/14.68 s for 4.56 s of audio. Independent Whisper tiny.en ASR gave word error rates 0.20 and 0.00 on the two WAVs; this is only an intelligibility proxy. The native vLLM CPU extension still lacks the required attention operators. No Omni binding, playable streaming, listening/quality threshold, loading peak or sustained power/thermal run was verified. | Bind the whole CPU TTS backend to Omni's stage and streaming/state contracts; validate playback, quality, cancellation, admission and sustained use; [standalone TTS evidence](../../../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 | 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). |
|
||||
|
||||
@@ -46,6 +46,16 @@ 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.
|
||||
|
||||
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
|
||||
prompt took p50/p95 13.94/14.68 s to generate 4.56 s of audio. Whisper tiny.en
|
||||
ASR gave word error rates 0.20 and 0.00 for the two WAVs, an intelligibility
|
||||
proxy rather than a quality pass. The [raw record](../../benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/qwen_tts_native_cpu/README.md)
|
||||
documents the isolated Transformers 4.57.3 dependency and short process-memory
|
||||
trace. Omni CPU stage binding, playable streaming, loading-peak admission and
|
||||
sustained power/thermal tests remain M2 work.
|
||||
|
||||
## Architecture and prerequisites
|
||||
|
||||
Keep Omni's PipelineConfig, StageRuntime, StageClient, orchestration and admission
|
||||
|
||||
Reference in new issue
Block a user