Profile Qwen3-TTS hybrid Radeon and CPU route
This commit is contained in:
1 parent
54c086acae
commit
4fee1dbe39
54 files changed
+5323
-6
No files matched your search
@@ -0,0 +1,190 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Probe whole-model Qwen3-TTS on a named native Windows DirectML adapter.
|
||||
|
||||
This is a standalone feasibility run; it does not claim Omni integration or
|
||||
that every operator executes on the target adapter.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
import time
|
||||
import traceback
|
||||
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("--device-index", type=int, default=1)
|
||||
parser.add_argument("--expected-device-name", default="AMD Radeon(TM) 890M")
|
||||
parser.add_argument("--dtype", choices=("float16", "bfloat16", "float32"), default="float16")
|
||||
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("--repetition-penalty", type=float)
|
||||
parser.add_argument("--trace-cat", action="store_true")
|
||||
parser.add_argument("--workaround-empty-int64-cat", action="store_true")
|
||||
parser.add_argument("--subtalker-greedy", action="store_true")
|
||||
parser.add_argument("--threads", type=int, default=8)
|
||||
args = parser.parse_args()
|
||||
if args.device_index < 0 or args.threads <= 0 or args.max_new_tokens <= 0:
|
||||
parser.error("device index must be nonnegative; threads and token limit positive")
|
||||
|
||||
os.environ["HF_HUB_OFFLINE"] = "1"
|
||||
os.environ["TRANSFORMERS_OFFLINE"] = "1"
|
||||
import numpy as np
|
||||
import soundfile as sf
|
||||
import torch
|
||||
import torch_directml
|
||||
import transformers
|
||||
from qwen_tts import Qwen3TTSModel
|
||||
|
||||
torch.set_num_threads(args.threads)
|
||||
names = [torch_directml.device_name(i).rstrip("\x00") for i in range(torch_directml.device_count())]
|
||||
if args.device_index >= len(names) or args.expected_device_name not in names[args.device_index]:
|
||||
raise RuntimeError(f"requested DirectML adapter is absent: index={args.device_index}, adapters={names}")
|
||||
device = torch_directml.device(args.device_index)
|
||||
report = {
|
||||
"scope": "standalone real-weight Qwen3-TTS DirectML feasibility; no Omni, streaming, or all-operator placement claim",
|
||||
"platform": platform.platform(),
|
||||
"python": platform.python_version(),
|
||||
"torch": torch.__version__,
|
||||
"torch_directml": getattr(torch_directml, "__version__", "unknown"),
|
||||
"transformers": transformers.__version__,
|
||||
"adapters": names,
|
||||
"requested_index": args.device_index,
|
||||
"target_device": str(device),
|
||||
"model_dir": str(args.model_dir.resolve()),
|
||||
"talker_sha256": _sha256(args.model_dir / "model.safetensors"),
|
||||
"speech_tokenizer_sha256": _sha256(args.model_dir / "speech_tokenizer" / "model.safetensors"),
|
||||
"dtype": args.dtype,
|
||||
"attention": "sdpa",
|
||||
"threads": args.threads,
|
||||
"text": args.text,
|
||||
"speaker": args.speaker,
|
||||
"max_new_tokens": args.max_new_tokens,
|
||||
"repetition_penalty_override": args.repetition_penalty,
|
||||
"workaround_empty_int64_cat": args.workaround_empty_int64_cat,
|
||||
"subtalker_greedy": args.subtalker_greedy,
|
||||
"seed": 42,
|
||||
"status": "started",
|
||||
}
|
||||
try:
|
||||
started = time.perf_counter()
|
||||
model = Qwen3TTSModel.from_pretrained(
|
||||
str(args.model_dir.resolve()),
|
||||
device_map="cpu",
|
||||
dtype=getattr(torch, args.dtype),
|
||||
attn_implementation="sdpa",
|
||||
local_files_only=True,
|
||||
)
|
||||
report["cpu_load_s"] = time.perf_counter() - started
|
||||
report["phase"] = "move_to_directml"
|
||||
started = time.perf_counter()
|
||||
model.model.to(device)
|
||||
report["device_move_s"] = time.perf_counter() - started
|
||||
report["model_devices"] = sorted({str(parameter.device) for parameter in model.model.parameters()})
|
||||
if report["model_devices"] != [str(device)]:
|
||||
raise RuntimeError(f"model parameters not wholly on DirectML target: {report['model_devices']}")
|
||||
# Qwen's wrapper captures its device at construction, before this move.
|
||||
model.device = device
|
||||
report["phase"] = "generate"
|
||||
if args.trace_cat or args.workaround_empty_int64_cat:
|
||||
original_cat = torch.cat
|
||||
|
||||
def traced_cat(tensors, *cat_args, **cat_kwargs):
|
||||
tensors = tuple(tensors)
|
||||
dim = cat_kwargs.get("dim", cat_args[0] if cat_args else 0)
|
||||
axis = dim % tensors[0].ndim if tensors else dim
|
||||
if (
|
||||
args.workaround_empty_int64_cat
|
||||
and len(tensors) == 2
|
||||
and tensors[0].device == device
|
||||
and tensors[1].device == device
|
||||
and tensors[0].dtype == torch.int64
|
||||
and tensors[1].dtype == torch.int64
|
||||
and tensors[0].ndim == tensors[1].ndim
|
||||
and tensors[0].numel() == 0
|
||||
and tensors[0].shape[axis] == 0
|
||||
and all(tensors[0].shape[i] == tensors[1].shape[i] for i in range(tensors[0].ndim) if i != axis)
|
||||
):
|
||||
print("EMPTY_INT64_CAT_IDENTITY", file=sys.stderr, flush=True)
|
||||
return tensors[1].clone()
|
||||
try:
|
||||
return original_cat(tensors, *cat_args, **cat_kwargs)
|
||||
except Exception:
|
||||
print(
|
||||
"CAT_FAILURE " + repr([(str(x.device), str(x.dtype), tuple(x.shape)) for x in tensors]),
|
||||
file=sys.stderr,
|
||||
flush=True,
|
||||
)
|
||||
raise
|
||||
|
||||
torch.cat = traced_cat
|
||||
torch.manual_seed(42)
|
||||
started = time.perf_counter()
|
||||
generation_overrides = {}
|
||||
if args.repetition_penalty is not None:
|
||||
generation_overrides["repetition_penalty"] = args.repetition_penalty
|
||||
if args.subtalker_greedy:
|
||||
generation_overrides["subtalker_dosample"] = False
|
||||
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,
|
||||
**generation_overrides,
|
||||
)
|
||||
report["request_s"] = time.perf_counter() - started
|
||||
if len(wavs) != 1 or sample_rate <= 0:
|
||||
raise RuntimeError("expected one waveform at 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("waveform is empty or non-finite")
|
||||
report["rms"] = float(np.sqrt(np.mean(wav.astype(np.float64) ** 2)))
|
||||
report["peak_abs"] = float(np.max(np.abs(wav)))
|
||||
report["nonzero_samples"] = int(np.count_nonzero(wav))
|
||||
if report["rms"] <= 1e-5:
|
||||
raise RuntimeError("waveform is effectively silent")
|
||||
args.output_wav.parent.mkdir(parents=True, exist_ok=True)
|
||||
sf.write(args.output_wav, wav, sample_rate, subtype="PCM_16")
|
||||
report.update(
|
||||
status="passed",
|
||||
phase="complete",
|
||||
sample_rate=sample_rate,
|
||||
samples=int(wav.size),
|
||||
duration_s=float(wav.size / sample_rate),
|
||||
wav_sha256=_sha256(args.output_wav),
|
||||
)
|
||||
except BaseException as exc:
|
||||
report.update(status="failed", error_type=type(exc).__name__, error=str(exc), traceback=traceback.format_exc())
|
||||
if isinstance(exc, UnicodeDecodeError):
|
||||
report["backend_error_bytes_hex"] = exc.object.hex()
|
||||
report["backend_error_cp936"] = exc.object.decode("cp936", errors="replace")
|
||||
raise
|
||||
finally:
|
||||
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()
|
||||
@@ -32,6 +32,7 @@ def main() -> None:
|
||||
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("--dtype", choices=("float16", "bfloat16", "float32"), default="bfloat16")
|
||||
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)
|
||||
@@ -57,7 +58,7 @@ def main() -> None:
|
||||
model = Qwen3TTSModel.from_pretrained(
|
||||
str(args.model_dir.resolve()),
|
||||
device_map="cpu",
|
||||
dtype=torch.bfloat16,
|
||||
dtype=getattr(torch, args.dtype),
|
||||
attn_implementation="sdpa",
|
||||
local_files_only=True,
|
||||
)
|
||||
@@ -116,7 +117,7 @@ def main() -> None:
|
||||
"talker_sha256": _sha256(checkpoint),
|
||||
"speech_tokenizer_sha256": _sha256(tokenizer_weights),
|
||||
"model_devices": model_devices,
|
||||
"dtype": "bfloat16",
|
||||
"dtype": args.dtype,
|
||||
"attention": "sdpa",
|
||||
"threads": args.threads,
|
||||
"text": args.text,
|
||||
|
||||
@@ -0,0 +1,140 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Profile complete serial text-to-WAV requests against a resident CrispASR server.
|
||||
|
||||
The caller must separately retain and inspect the server's actual placement log.
|
||||
HTTP success and a nonzero WAV do not establish speech quality.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import array
|
||||
import hashlib
|
||||
import io
|
||||
import json
|
||||
import math
|
||||
import sys
|
||||
import threading
|
||||
import time
|
||||
import urllib.request
|
||||
import wave
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def _rank(values: list[float], fraction: float) -> float:
|
||||
ordered = sorted(values)
|
||||
return ordered[math.ceil(fraction * len(ordered)) - 1]
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument("--endpoint", default="http://127.0.0.1:18175/v1/audio/speech")
|
||||
parser.add_argument("--text", default="Hello from the local computer.")
|
||||
parser.add_argument("--seed", type=int, default=42)
|
||||
parser.add_argument("--warmups", type=int, default=1)
|
||||
parser.add_argument("--repeats", type=int, default=20)
|
||||
parser.add_argument("--server-pid", type=int)
|
||||
parser.add_argument("--output-report", type=Path, required=True)
|
||||
parser.add_argument("--output-wav", type=Path, required=True)
|
||||
args = parser.parse_args()
|
||||
if args.warmups < 0 or args.repeats <= 0:
|
||||
parser.error("warmups must be nonnegative and repeats positive")
|
||||
|
||||
import psutil
|
||||
|
||||
process = psutil.Process(args.server_pid) if args.server_pid else None
|
||||
samples: list[dict] = []
|
||||
done = threading.Event()
|
||||
|
||||
def sample_memory() -> None:
|
||||
if process is None:
|
||||
return
|
||||
while not done.is_set():
|
||||
try:
|
||||
memory = process.memory_full_info()
|
||||
samples.append({
|
||||
"unix": time.time(),
|
||||
"working_set_bytes": memory.rss,
|
||||
"private_bytes": getattr(memory, "private", None),
|
||||
"host_available_bytes": psutil.virtual_memory().available,
|
||||
})
|
||||
except psutil.Error:
|
||||
break
|
||||
done.wait(0.25)
|
||||
|
||||
sampler = threading.Thread(target=sample_memory, daemon=True)
|
||||
sampler.start()
|
||||
payload = json.dumps({"input": args.text, "response_format": "wav", "seed": args.seed}).encode()
|
||||
|
||||
def request_one(*, save_wav: bool) -> dict:
|
||||
request = urllib.request.Request(
|
||||
args.endpoint, data=payload, headers={"Content-Type": "application/json"}, method="POST"
|
||||
)
|
||||
started = time.perf_counter()
|
||||
with urllib.request.urlopen(request, timeout=180) as response:
|
||||
status = response.status
|
||||
wav_bytes = response.read()
|
||||
wall_s = time.perf_counter() - started
|
||||
if status != 200:
|
||||
raise RuntimeError(f"speech endpoint returned HTTP {status}")
|
||||
with wave.open(io.BytesIO(wav_bytes), "rb") as audio:
|
||||
channels, width, sample_rate, frames = (
|
||||
audio.getnchannels(), audio.getsampwidth(), audio.getframerate(), audio.getnframes()
|
||||
)
|
||||
pcm = audio.readframes(frames)
|
||||
if channels != 1 or width != 2 or sample_rate <= 0 or not frames:
|
||||
raise RuntimeError("expected nonempty 16-bit mono WAV")
|
||||
values = array.array("h")
|
||||
values.frombytes(pcm)
|
||||
if sys.byteorder != "little":
|
||||
values.byteswap()
|
||||
rms = math.sqrt(sum(value * value for value in values) / len(values)) / 32768
|
||||
if rms <= 1e-5:
|
||||
raise RuntimeError("speech WAV is effectively silent")
|
||||
if save_wav:
|
||||
args.output_wav.parent.mkdir(parents=True, exist_ok=True)
|
||||
args.output_wav.write_bytes(wav_bytes)
|
||||
return {
|
||||
"wall_s": wall_s,
|
||||
"sample_rate": sample_rate,
|
||||
"frames": frames,
|
||||
"duration_s": frames / sample_rate,
|
||||
"rms_pcm16_normalized": rms,
|
||||
"pcm_sha256": hashlib.sha256(pcm).hexdigest(),
|
||||
"sha256": hashlib.sha256(wav_bytes).hexdigest(),
|
||||
"bytes": len(wav_bytes),
|
||||
}
|
||||
|
||||
try:
|
||||
warmups = [request_one(save_wav=False) for _ in range(args.warmups)]
|
||||
measured = [request_one(save_wav=i == 0) for i in range(args.repeats)]
|
||||
finally:
|
||||
done.set()
|
||||
sampler.join(timeout=2)
|
||||
|
||||
walls = [row["wall_s"] for row in measured]
|
||||
report = {
|
||||
"scope": "complete serial HTTP text-to-WAV requests in one resident server; speech quality and placement assessed separately",
|
||||
"endpoint": args.endpoint,
|
||||
"text": args.text,
|
||||
"seed": args.seed,
|
||||
"concurrency": 1,
|
||||
"warmups": warmups,
|
||||
"measured": measured,
|
||||
"nearest_rank_p50_wall_s": _rank(walls, 0.5),
|
||||
"nearest_rank_p95_wall_s": _rank(walls, 0.95),
|
||||
"all_same_wav_sha256": len({row["sha256"] for row in measured}) == 1,
|
||||
"all_same_pcm_sha256": len({row["pcm_sha256"] for row in measured}) == 1,
|
||||
"server_pid": args.server_pid,
|
||||
"memory_samples": samples,
|
||||
"sampled_max_working_set_bytes": max((row["working_set_bytes"] for row in samples), default=None),
|
||||
"sampled_max_private_bytes": max((row["private_bytes"] for row in samples if row["private_bytes"] is not None), default=None),
|
||||
"sampled_min_host_available_bytes": min((row["host_available_bytes"] for row in samples), default=None),
|
||||
}
|
||||
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({key: value for key, value in report.items() if key not in {"memory_samples", "measured", "warmups"}}, 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. 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.
|
||||
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 separate 20-request complete standalone text-to-WAV profiles on native Windows CPU and a CPU+Radeon 890M hybrid route. 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), [native CPU Qwen TTS record](evidence/qwen_tts_native_cpu/README.md), and [joint CPU+Radeon TTS record](evidence/qwen_tts_radeon890m_joint/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+Radeon 890M / Qwen3-TTS 0.6B CustomVoice Q8_0 GGUF plus F16 codec | Scoped complete standalone CrispASR text-to-WAV path with Vulkan talker/codec and CPU FP32 code predictor (P for two named sentences; outside Omni; **not** all-Radeon or NPU) | Two 24 kHz WAVs of 2.56 s and 3.20 s; independently pinned Whisper tiny.en ASR WER 0 on both. One warmup + 20 serial measured resident-server requests for the first prompt had client wall p50/p95 3.310/3.345 s, all PCM hashes identical; RTF 1.29/1.31. The default Vulkan setting fell back to CPU, while all-Vulkan talker+predictor hit a 360-frame runaway cap. | Explicit Omni hybrid stage binding, quality and playback gates, loading-peak admission, cancellation, broader prompts, concurrency and sustained power/thermal behavior; [joint raw evidence](evidence/qwen_tts_radeon890m_joint/README.md), [failed DirectML attempt](evidence/qwen_tts_radeon890m_directml/README.md). |
|
||||
| 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). |
|
||||
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
# Preserve native Windows raw records byte-for-byte.
|
||||
*.json -text -eol
|
||||
*.log -text -eol
|
||||
*.wav binary
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
# Radeon 890M DirectML Qwen3-TTS attempted route
|
||||
|
||||
This is a **failed whole-model quality route**, not a Radeon Qwen3-TTS pass. It used the official [Qwen3-TTS 0.6B CustomVoice checkpoint](https://huggingface.co/Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice/tree/85e237c12c027371202489a0ec509ded67b5e4b5) and `qwen-tts==0.1.1` on Windows 11 build 26200. The isolated runtime had PyTorch 2.4.1+cpu, `torch-directml==0.2.5.dev240914`, Transformers 4.57.3, torchaudio 2.4.1, and AMD Radeon 890M driver `32.0.22018.6001`. `torch_directml.device_name(1)` identified Radeon 890M; all model parameters were checked on `privateuseone:1` after the move. The RTX 5090 Laptop was enumerated as device 0 but was not selected.
|
||||
|
||||
The [probe](../../../../experiments/probe_qwen_tts_directml.py) loads the real talker and speech tokenizer, explicitly moves the model to DirectML, and records the selected adapter, model placement, precision and failure phase. The wrapper caches `self.device` at construction; setting it to the chosen DirectML device after the model move corrected the first CPU-input/GPU-weight mismatch. The following attempts retain the next genuine boundaries:
|
||||
|
||||
| Attempt | Result | Raw record |
|
||||
|---|---|---|
|
||||
| FP16, original sampling | Reached talker token sampling, then failed at DirectML `torch.gather`. | [report](qwen_tts_dml_890m_20260923.json), [log](qwen_tts_dml_890m_20260923.log) |
|
||||
| FP16, repetition penalty 1.0 | Bypassed gather, then failed at a DirectML `torch.cat` of an empty int64 prefix and one next token. A minimal `(1,0) ⊕ (1,1)` int64 DirectML reproduction failed the same way. | [report](qwen_tts_dml_890m_rp1_20260923.json), [trace](qwen_tts_dml_890m_rp1_trace_20260923.log) |
|
||||
| FP16, exact empty-cat identity workaround, repetition penalty 1.0 | Reached the code predictor, then sampling failed on non-finite/negative probabilities. The same FP16 sampling failure occurred on CPU in this PyTorch 2.4.1 environment, so it cannot be assigned solely to DirectML. | [report](qwen_tts_dml_890m_workaround_20260923.json), [log](qwen_tts_dml_890m_workaround_20260923.log), [CPU FP16 log](qwen_tts_cpu_fp16_dmlenv_20260923.log) |
|
||||
| FP32 | The full-model move to Radeon failed; the decoded backend error says the GPU device instance was suspended. A separate simple DirectML addition and Windows display-device check still passed afterward. | [report](qwen_tts_dml_890m_fp32_20260923.json), [log](qwen_tts_dml_890m_fp32_20260923.log) |
|
||||
| BF16 | The DirectML process exited with `Invalid or unsupported data type BFloat16`; no report/WAV was emitted. | [fatal log](qwen_tts_dml_890m_bf16_20260923.log) |
|
||||
| FP16, greedy code predictor, repetition penalty 1.0 and empty-cat workaround | A 5.04 s/24 kHz nonzero WAV was emitted after 189.11 s, but separately pinned Whisper tiny.en transcribed only “you” for “Hello from the local computer.” (WER 1.00). It is **not a quality pass**. | [report](qwen_tts_dml_890m_greedy_20260923.json), [WAV](qwen_tts_dml_890m_greedy_20260923.wav), [log](qwen_tts_dml_890m_greedy_20260923.log), [ASR proxy](qwen_tts_dml_890m_greedy_asr_20260923.json) |
|
||||
|
||||
The tested dtype/sampling changes and workaround are explicit; none is silently substituted for the accepted CPU BF16 path. These results constrain this DirectML runtime/configuration, not every possible Radeon graph or quantized artifact. The [separate Q8_0 GGUF Vulkan experiment](../qwen_tts_radeon890m_joint/README.md) found a scoped CPU+Radeon route with two intelligible named outputs. It does not repair DirectML or establish that the whole model runs on Radeon alone.
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
'\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer'
|
||||
CMD.EXE was started with the above path as the current directory.
|
||||
UNC paths are not supported. Defaulting to Windows directory.
|
||||
'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.
|
||||
Traceback (most recent call last):
|
||||
|
||||
********
|
||||
Warning: flash-attn is not installed. Will only run the manual PyTorch version. Please install flash-attn for faster inference.
|
||||
********
|
||||
|
||||
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_qwen_tts_native_cpu.py", line 154, in <module>
|
||||
main()
|
||||
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_qwen_tts_native_cpu.py", line 107, in main
|
||||
measured = [generate_one(save_wav=index == 0) for index in range(args.repeats)]
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_qwen_tts_native_cpu.py", line 75, in generate_one
|
||||
wavs, sample_rate = model.generate_custom_voice(
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\utils\_contextlib.py", line 116, in decorate_context
|
||||
return func(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\qwen_tts\inference\qwen3_tts_model.py", line 829, in generate_custom_voice
|
||||
talker_codes_list, _ = self.model.generate(
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\utils\_contextlib.py", line 116, in decorate_context
|
||||
return func(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\qwen_tts\core\models\modeling_qwen3_tts.py", line 2272, in generate
|
||||
talker_result = self.talker.generate(
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\utils\_contextlib.py", line 116, in decorate_context
|
||||
return func(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\generation\utils.py", line 2564, in generate
|
||||
result = decoding_method(
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\generation\utils.py", line 2787, in _sample
|
||||
outputs = model_forward(**model_inputs, return_dict=True)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\nn\modules\module.py", line 1553, in _wrapped_call_impl
|
||||
return self._call_impl(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\nn\modules\module.py", line 1562, in _call_impl
|
||||
return forward_call(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\utils\generic.py", line 918, in wrapper
|
||||
output = func(self, *args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\qwen_tts\core\models\modeling_qwen3_tts.py", line 1671, in forward
|
||||
predictor_result = self.code_predictor.generate(
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\utils\_contextlib.py", line 116, in decorate_context
|
||||
return func(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\generation\utils.py", line 2564, in generate
|
||||
result = decoding_method(
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\generation\utils.py", line 2829, in _sample
|
||||
next_tokens = torch.multinomial(probs, num_samples=1).squeeze(1)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
RuntimeError: probability tensor contains either `inf`, `nan` or element < 0
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"scope": "standalone real-weight Qwen3-TTS DirectML feasibility; no Omni, streaming, or all-operator placement claim",
|
||||
"platform": "Windows-11-10.0.26200-SP0",
|
||||
"python": "3.12.10",
|
||||
"torch": "2.4.1+cpu",
|
||||
"torch_directml": "unknown",
|
||||
"transformers": "4.57.3",
|
||||
"adapters": [
|
||||
"NVIDIA GeForce RTX 5090 Laptop GPU",
|
||||
"AMD Radeon(TM) 890M Graphics"
|
||||
],
|
||||
"requested_index": 1,
|
||||
"target_device": "privateuseone:1",
|
||||
"model_dir": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
|
||||
"talker_sha256": "bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb",
|
||||
"speech_tokenizer_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258",
|
||||
"dtype": "float16",
|
||||
"attention": "sdpa",
|
||||
"threads": 8,
|
||||
"text": "Hello from the local computer.",
|
||||
"speaker": "Ryan",
|
||||
"max_new_tokens": 64,
|
||||
"seed": 42,
|
||||
"status": "failed",
|
||||
"cpu_load_s": 2.3304581999545917,
|
||||
"phase": "generate",
|
||||
"device_move_s": 1.2001519000623375,
|
||||
"model_devices": [
|
||||
"privateuseone:1"
|
||||
],
|
||||
"error_type": "UnicodeDecodeError",
|
||||
"error": "'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte",
|
||||
"traceback": "Traceback (most recent call last):\n File \"\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\experiments\\probe_qwen_tts_directml.py\", line 101, in main\n wavs, sample_rate = model.generate_custom_voice(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\qwen_tts\\inference\\qwen3_tts_model.py\", line 829, in generate_custom_voice\n talker_codes_list, _ = self.model.generate(\n ^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\qwen_tts\\core\\models\\modeling_qwen3_tts.py\", line 2272, in generate\n talker_result = self.talker.generate(\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2564, in generate\n result = decoding_method(\n ^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2803, in _sample\n next_token_scores = logits_processor(input_ids, next_token_logits)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\logits_process.py\", line 93, in __call__\n scores = processor(input_ids, scores)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\logits_process.py\", line 402, in __call__\n score = torch.gather(scores, 1, input_ids)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nUnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte\n"
|
||||
}
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
'\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer'
|
||||
CMD.EXE was started with the above path as the current directory.
|
||||
UNC paths are not supported. Defaulting to Windows directory.
|
||||
'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.
|
||||
Traceback (most recent call last):
|
||||
|
||||
********
|
||||
Warning: flash-attn is not installed. Will only run the manual PyTorch version. Please install flash-attn for faster inference.
|
||||
********
|
||||
|
||||
{
|
||||
"scope": "standalone real-weight Qwen3-TTS DirectML feasibility; no Omni, streaming, or all-operator placement claim",
|
||||
"platform": "Windows-11-10.0.26200-SP0",
|
||||
"python": "3.12.10",
|
||||
"torch": "2.4.1+cpu",
|
||||
"torch_directml": "unknown",
|
||||
"transformers": "4.57.3",
|
||||
"adapters": [
|
||||
"NVIDIA GeForce RTX 5090 Laptop GPU",
|
||||
"AMD Radeon(TM) 890M Graphics"
|
||||
],
|
||||
"requested_index": 1,
|
||||
"target_device": "privateuseone:1",
|
||||
"model_dir": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
|
||||
"talker_sha256": "bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb",
|
||||
"speech_tokenizer_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258",
|
||||
"dtype": "float16",
|
||||
"attention": "sdpa",
|
||||
"threads": 8,
|
||||
"text": "Hello from the local computer.",
|
||||
"speaker": "Ryan",
|
||||
"max_new_tokens": 64,
|
||||
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_qwen_tts_directml.py", line 140, in <module>
|
||||
"seed": 42,
|
||||
"status": "failed",
|
||||
"cpu_load_s": 2.3304581999545917,
|
||||
"phase": "generate",
|
||||
"device_move_s": 1.2001519000623375,
|
||||
"model_devices": [
|
||||
"privateuseone:1"
|
||||
],
|
||||
"error_type": "UnicodeDecodeError",
|
||||
"error": "'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte",
|
||||
"traceback": "Traceback (most recent call last):\n File \"\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\experiments\\probe_qwen_tts_directml.py\", line 101, in main\n wavs, sample_rate = model.generate_custom_voice(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\qwen_tts\\inference\\qwen3_tts_model.py\", line 829, in generate_custom_voice\n talker_codes_list, _ = self.model.generate(\n ^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\qwen_tts\\core\\models\\modeling_qwen3_tts.py\", line 2272, in generate\n talker_result = self.talker.generate(\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2564, in generate\n result = decoding_method(\n ^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2803, in _sample\n next_token_scores = logits_processor(input_ids, next_token_logits)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\logits_process.py\", line 93, in __call__\n scores = processor(input_ids, scores)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\logits_process.py\", line 402, in __call__\n score = torch.gather(scores, 1, input_ids)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nUnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte\n"
|
||||
}
|
||||
main()
|
||||
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_qwen_tts_directml.py", line 101, in main
|
||||
wavs, sample_rate = model.generate_custom_voice(
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\utils\_contextlib.py", line 116, in decorate_context
|
||||
return func(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\qwen_tts\inference\qwen3_tts_model.py", line 829, in generate_custom_voice
|
||||
talker_codes_list, _ = self.model.generate(
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\utils\_contextlib.py", line 116, in decorate_context
|
||||
return func(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\qwen_tts\core\models\modeling_qwen3_tts.py", line 2272, in generate
|
||||
talker_result = self.talker.generate(
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\utils\_contextlib.py", line 116, in decorate_context
|
||||
return func(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\generation\utils.py", line 2564, in generate
|
||||
result = decoding_method(
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\generation\utils.py", line 2803, in _sample
|
||||
next_token_scores = logits_processor(input_ids, next_token_logits)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\generation\logits_process.py", line 93, in __call__
|
||||
scores = processor(input_ids, scores)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\generation\logits_process.py", line 402, in __call__
|
||||
score = torch.gather(scores, 1, input_ids)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
'\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer'
|
||||
CMD.EXE was started with the above path as the current directory.
|
||||
UNC paths are not supported. Defaulting to Windows directory.
|
||||
'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.
|
||||
|
||||
[F923 19:32:34.000000000 dml_util.cc:118] Invalid or unsupported data type BFloat16.
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"scope": "standalone real-weight Qwen3-TTS DirectML feasibility; no Omni, streaming, or all-operator placement claim",
|
||||
"platform": "Windows-11-10.0.26200-SP0",
|
||||
"python": "3.12.10",
|
||||
"torch": "2.4.1+cpu",
|
||||
"torch_directml": "unknown",
|
||||
"transformers": "4.57.3",
|
||||
"adapters": [
|
||||
"NVIDIA GeForce RTX 5090 Laptop GPU",
|
||||
"AMD Radeon(TM) 890M Graphics"
|
||||
],
|
||||
"requested_index": 1,
|
||||
"target_device": "privateuseone:1",
|
||||
"model_dir": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
|
||||
"talker_sha256": "bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb",
|
||||
"speech_tokenizer_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258",
|
||||
"dtype": "float32",
|
||||
"attention": "sdpa",
|
||||
"threads": 8,
|
||||
"text": "Hello from the local computer.",
|
||||
"speaker": "Ryan",
|
||||
"max_new_tokens": 64,
|
||||
"repetition_penalty_override": 1.0,
|
||||
"workaround_empty_int64_cat": true,
|
||||
"seed": 42,
|
||||
"status": "failed",
|
||||
"cpu_load_s": 1.82569450000301,
|
||||
"phase": "move_to_directml",
|
||||
"error_type": "UnicodeDecodeError",
|
||||
"error": "'utf-8' codec can't decode byte 0xc9 in position 4: invalid continuation byte",
|
||||
"traceback": "Traceback (most recent call last):\n File \"\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\experiments\\probe_qwen_tts_directml.py\", line 98, in main\n model.model.to(device)\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\modeling_utils.py\", line 4343, in to\n return super().to(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\nn\\modules\\module.py\", line 1174, in to\n return self._apply(convert)\n ^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\nn\\modules\\module.py\", line 780, in _apply\n module._apply(fn)\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\nn\\modules\\module.py\", line 780, in _apply\n module._apply(fn)\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\nn\\modules\\module.py\", line 780, in _apply\n module._apply(fn)\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\nn\\modules\\module.py\", line 805, in _apply\n param_applied = fn(param)\n ^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\nn\\modules\\module.py\", line 1160, in convert\n return t.to(\n ^^^^^\nUnicodeDecodeError: 'utf-8' codec can't decode byte 0xc9 in position 4: invalid continuation byte\n",
|
||||
"backend_error_bytes_hex": "47505520c9e8b1b8cab5c0fdd2d1beadd4ddcda3a1a3cab9d3c32047657444657669636552656d6f766564526561736f6e20d2d4c8b7b6a8cfe0d3a6b5c4b4ebcaa9a1a3",
|
||||
"backend_error_cp936": "GPU \u8bbe\u5907\u5b9e\u4f8b\u5df2\u7ecf\u6682\u505c\u3002\u4f7f\u7528 GetDeviceRemovedReason \u4ee5\u786e\u5b9a\u76f8\u5e94\u7684\u63aa\u65bd\u3002"
|
||||
}
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
'\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer'
|
||||
CMD.EXE was started with the above path as the current directory.
|
||||
UNC paths are not supported. Defaulting to Windows directory.
|
||||
'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):
|
||||
|
||||
********
|
||||
Warning: flash-attn is not installed. Will only run the manual PyTorch version. Please install flash-attn for faster inference.
|
||||
********
|
||||
|
||||
{
|
||||
"scope": "standalone real-weight Qwen3-TTS DirectML feasibility; no Omni, streaming, or all-operator placement claim",
|
||||
"platform": "Windows-11-10.0.26200-SP0",
|
||||
"python": "3.12.10",
|
||||
"torch": "2.4.1+cpu",
|
||||
"torch_directml": "unknown",
|
||||
"transformers": "4.57.3",
|
||||
"adapters": [
|
||||
"NVIDIA GeForce RTX 5090 Laptop GPU",
|
||||
"AMD Radeon(TM) 890M Graphics"
|
||||
],
|
||||
"requested_index": 1,
|
||||
"target_device": "privateuseone:1",
|
||||
"model_dir": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
|
||||
"talker_sha256": "bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb",
|
||||
"speech_tokenizer_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258",
|
||||
"dtype": "float32",
|
||||
"attention": "sdpa",
|
||||
"threads": 8,
|
||||
"text": "Hello from the local computer.",
|
||||
"speaker": "Ryan",
|
||||
"max_new_tokens": 64,
|
||||
"repetition_penalty_override": 1.0,
|
||||
"workaround_empty_int64_cat": true,
|
||||
"seed": 42,
|
||||
"status": "failed",
|
||||
"cpu_load_s": 1.82569450000301,
|
||||
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_qwen_tts_directml.py", line 186, in <module>
|
||||
"phase": "move_to_directml",
|
||||
"error_type": "UnicodeDecodeError",
|
||||
"error": "'utf-8' codec can't decode byte 0xc9 in position 4: invalid continuation byte",
|
||||
"traceback": "Traceback (most recent call last):\n File \"\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\experiments\\probe_qwen_tts_directml.py\", line 98, in main\n model.model.to(device)\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\modeling_utils.py\", line 4343, in to\n return super().to(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\nn\\modules\\module.py\", line 1174, in to\n return self._apply(convert)\n ^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\nn\\modules\\module.py\", line 780, in _apply\n module._apply(fn)\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\nn\\modules\\module.py\", line 780, in _apply\n module._apply(fn)\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\nn\\modules\\module.py\", line 780, in _apply\n module._apply(fn)\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\nn\\modules\\module.py\", line 805, in _apply\n param_applied = fn(param)\n ^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\nn\\modules\\module.py\", line 1160, in convert\n return t.to(\n ^^^^^\nUnicodeDecodeError: 'utf-8' codec can't decode byte 0xc9 in position 4: invalid continuation byte\n",
|
||||
"backend_error_bytes_hex": "47505520c9e8b1b8cab5c0fdd2d1beadd4ddcda3a1a3cab9d3c32047657444657669636552656d6f766564526561736f6e20d2d4c8b7b6a8cfe0d3a6b5c4b4ebcaa9a1a3",
|
||||
"backend_error_cp936": "GPU \u8bbe\u5907\u5b9e\u4f8b\u5df2\u7ecf\u6682\u505c\u3002\u4f7f\u7528 GetDeviceRemovedReason \u4ee5\u786e\u5b9a\u76f8\u5e94\u7684\u63aa\u65bd\u3002"
|
||||
}
|
||||
main()
|
||||
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_qwen_tts_directml.py", line 98, in main
|
||||
model.model.to(device)
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\modeling_utils.py", line 4343, in to
|
||||
return super().to(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\nn\modules\module.py", line 1174, in to
|
||||
return self._apply(convert)
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\nn\modules\module.py", line 780, in _apply
|
||||
module._apply(fn)
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\nn\modules\module.py", line 780, in _apply
|
||||
module._apply(fn)
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\nn\modules\module.py", line 780, in _apply
|
||||
module._apply(fn)
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\nn\modules\module.py", line 805, in _apply
|
||||
param_applied = fn(param)
|
||||
^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\nn\modules\module.py", line 1160, in convert
|
||||
return t.to(
|
||||
^^^^^
|
||||
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc9 in position 4: invalid continuation byte
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"scope": "standalone real-weight Qwen3-TTS DirectML feasibility; no Omni, streaming, or all-operator placement claim",
|
||||
"platform": "Windows-11-10.0.26200-SP0",
|
||||
"python": "3.12.10",
|
||||
"torch": "2.4.1+cpu",
|
||||
"torch_directml": "unknown",
|
||||
"transformers": "4.57.3",
|
||||
"adapters": [
|
||||
"NVIDIA GeForce RTX 5090 Laptop GPU",
|
||||
"AMD Radeon(TM) 890M Graphics"
|
||||
],
|
||||
"requested_index": 1,
|
||||
"target_device": "privateuseone:1",
|
||||
"model_dir": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
|
||||
"talker_sha256": "bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb",
|
||||
"speech_tokenizer_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258",
|
||||
"dtype": "float16",
|
||||
"attention": "sdpa",
|
||||
"threads": 8,
|
||||
"text": "Hello from the local computer.",
|
||||
"speaker": "Ryan",
|
||||
"max_new_tokens": 64,
|
||||
"repetition_penalty_override": 1.0,
|
||||
"workaround_empty_int64_cat": true,
|
||||
"subtalker_greedy": true,
|
||||
"seed": 42,
|
||||
"status": "passed",
|
||||
"cpu_load_s": 2.0600192999700084,
|
||||
"phase": "complete",
|
||||
"device_move_s": 0.9054825000930578,
|
||||
"model_devices": [
|
||||
"privateuseone:1"
|
||||
],
|
||||
"request_s": 189.10949669999536,
|
||||
"rms": 0.006188759764276907,
|
||||
"peak_abs": 0.03369140625,
|
||||
"nonzero_samples": 120959,
|
||||
"sample_rate": 24000,
|
||||
"samples": 120960,
|
||||
"duration_s": 5.04,
|
||||
"wav_sha256": "5cd8b4928841cd389d3d20daa6ac2d4ef05d305f77ce0121ffc055f02a3b2833"
|
||||
}
|
||||
+126
@@ -0,0 +1,126 @@
|
||||
'\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer'
|
||||
CMD.EXE was started with the above path as the current directory.
|
||||
UNC paths are not supported. Defaulting to Windows directory.
|
||||
'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.
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
The following generation flags are not valid and may be ignored: ['temperature']. Set `TRANSFORMERS_VERBOSITY=info` for more details.
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
|
||||
********
|
||||
Warning: flash-attn is not installed. Will only run the manual PyTorch version. Please install flash-attn for faster inference.
|
||||
********
|
||||
|
||||
{
|
||||
"scope": "standalone real-weight Qwen3-TTS DirectML feasibility; no Omni, streaming, or all-operator placement claim",
|
||||
"platform": "Windows-11-10.0.26200-SP0",
|
||||
"python": "3.12.10",
|
||||
"torch": "2.4.1+cpu",
|
||||
"torch_directml": "unknown",
|
||||
"transformers": "4.57.3",
|
||||
"adapters": [
|
||||
"NVIDIA GeForce RTX 5090 Laptop GPU",
|
||||
"AMD Radeon(TM) 890M Graphics"
|
||||
],
|
||||
"requested_index": 1,
|
||||
"target_device": "privateuseone:1",
|
||||
"model_dir": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
|
||||
"talker_sha256": "bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb",
|
||||
"speech_tokenizer_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258",
|
||||
"dtype": "float16",
|
||||
"attention": "sdpa",
|
||||
"threads": 8,
|
||||
"text": "Hello from the local computer.",
|
||||
"speaker": "Ryan",
|
||||
"max_new_tokens": 64,
|
||||
"repetition_penalty_override": 1.0,
|
||||
"workaround_empty_int64_cat": true,
|
||||
"subtalker_greedy": true,
|
||||
"seed": 42,
|
||||
"status": "passed",
|
||||
"cpu_load_s": 2.0600192999700084,
|
||||
"phase": "complete",
|
||||
"device_move_s": 0.9054825000930578,
|
||||
"model_devices": [
|
||||
"privateuseone:1"
|
||||
],
|
||||
"request_s": 189.10949669999536,
|
||||
"rms": 0.006188759764276907,
|
||||
"peak_abs": 0.03369140625,
|
||||
"nonzero_samples": 120959,
|
||||
"sample_rate": 24000,
|
||||
"samples": 120960,
|
||||
"duration_s": 5.04,
|
||||
"wav_sha256": "5cd8b4928841cd389d3d20daa6ac2d4ef05d305f77ce0121ffc055f02a3b2833"
|
||||
}
|
||||
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.4.1+cpu",
|
||||
"wav_sha256": "5cd8b4928841cd389d3d20daa6ac2d4ef05d305f77ce0121ffc055f02a3b2833",
|
||||
"input_sample_rate": 24000,
|
||||
"input_duration_s": 5.04,
|
||||
"reference_text": "Hello from the local computer.",
|
||||
"transcript": "you",
|
||||
"word_error_rate": 1.0,
|
||||
"asr_load_s": 0.8331252000061795,
|
||||
"asr_inference_s": 0.8376452999655157
|
||||
}
|
||||
+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.4.1+cpu",
|
||||
"wav_sha256": "5cd8b4928841cd389d3d20daa6ac2d4ef05d305f77ce0121ffc055f02a3b2833",
|
||||
"input_sample_rate": 24000,
|
||||
"input_duration_s": 5.04,
|
||||
"reference_text": "Hello from the local computer.",
|
||||
"transcript": "you",
|
||||
"word_error_rate": 1.0,
|
||||
"asr_load_s": 0.8331252000061795,
|
||||
"asr_inference_s": 0.8376452999655157
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"scope": "standalone real-weight Qwen3-TTS DirectML feasibility; no Omni, streaming, or all-operator placement claim",
|
||||
"platform": "Windows-11-10.0.26200-SP0",
|
||||
"python": "3.12.10",
|
||||
"torch": "2.4.1+cpu",
|
||||
"torch_directml": "unknown",
|
||||
"transformers": "4.57.3",
|
||||
"adapters": [
|
||||
"NVIDIA GeForce RTX 5090 Laptop GPU",
|
||||
"AMD Radeon(TM) 890M Graphics"
|
||||
],
|
||||
"requested_index": 1,
|
||||
"target_device": "privateuseone:1",
|
||||
"model_dir": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
|
||||
"talker_sha256": "bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb",
|
||||
"speech_tokenizer_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258",
|
||||
"dtype": "float16",
|
||||
"attention": "sdpa",
|
||||
"threads": 8,
|
||||
"text": "Hello from the local computer.",
|
||||
"speaker": "Ryan",
|
||||
"max_new_tokens": 64,
|
||||
"repetition_penalty_override": 1.0,
|
||||
"seed": 42,
|
||||
"status": "failed",
|
||||
"cpu_load_s": 1.9829754000529647,
|
||||
"phase": "generate",
|
||||
"device_move_s": 1.012216999894008,
|
||||
"model_devices": [
|
||||
"privateuseone:1"
|
||||
],
|
||||
"error_type": "UnicodeDecodeError",
|
||||
"error": "'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte",
|
||||
"traceback": "Traceback (most recent call last):\n File \"\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\experiments\\probe_qwen_tts_directml.py\", line 123, in main\n wavs, sample_rate = model.generate_custom_voice(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\qwen_tts\\inference\\qwen3_tts_model.py\", line 829, in generate_custom_voice\n talker_codes_list, _ = self.model.generate(\n ^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\qwen_tts\\core\\models\\modeling_qwen3_tts.py\", line 2272, in generate\n talker_result = self.talker.generate(\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2564, in generate\n result = decoding_method(\n ^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2838, in _sample\n input_ids = torch.cat([input_ids, next_tokens[:, None]], dim=-1)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\experiments\\probe_qwen_tts_directml.py\", line 108, in traced_cat\n return original_cat(tensors, *cat_args, **cat_kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nUnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte\n"
|
||||
}
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
'\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer'
|
||||
CMD.EXE was started with the above path as the current directory.
|
||||
UNC paths are not supported. Defaulting to Windows directory.
|
||||
'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.
|
||||
Traceback (most recent call last):
|
||||
|
||||
********
|
||||
Warning: flash-attn is not installed. Will only run the manual PyTorch version. Please install flash-attn for faster inference.
|
||||
********
|
||||
|
||||
{
|
||||
"scope": "standalone real-weight Qwen3-TTS DirectML feasibility; no Omni, streaming, or all-operator placement claim",
|
||||
"platform": "Windows-11-10.0.26200-SP0",
|
||||
"python": "3.12.10",
|
||||
"torch": "2.4.1+cpu",
|
||||
"torch_directml": "unknown",
|
||||
"transformers": "4.57.3",
|
||||
"adapters": [
|
||||
"NVIDIA GeForce RTX 5090 Laptop GPU",
|
||||
"AMD Radeon(TM) 890M Graphics"
|
||||
],
|
||||
"requested_index": 1,
|
||||
"target_device": "privateuseone:1",
|
||||
"model_dir": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
|
||||
"talker_sha256": "bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb",
|
||||
"speech_tokenizer_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258",
|
||||
"dtype": "float16",
|
||||
"attention": "sdpa",
|
||||
"threads": 8,
|
||||
"text": "Hello from the local computer.",
|
||||
"speaker": "Ryan",
|
||||
"max_new_tokens": 64,
|
||||
"repetition_penalty_override": 1.0,
|
||||
"seed": 42,
|
||||
"status": "failed",
|
||||
"cpu_load_s": 2.2846993000712246,
|
||||
"phase": "generate",
|
||||
"device_move_s": 1.2995686000213027,
|
||||
"model_devices": [
|
||||
"privateuseone:1"
|
||||
],
|
||||
"error_type": "UnicodeDecodeError",
|
||||
"error": "'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte",
|
||||
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_qwen_tts_directml.py", line 146, in <module>
|
||||
"traceback": "Traceback (most recent call last):\n File \"\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\experiments\\probe_qwen_tts_directml.py\", line 106, in main\n wavs, sample_rate = model.generate_custom_voice(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\qwen_tts\\inference\\qwen3_tts_model.py\", line 829, in generate_custom_voice\n talker_codes_list, _ = self.model.generate(\n ^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\qwen_tts\\core\\models\\modeling_qwen3_tts.py\", line 2272, in generate\n talker_result = self.talker.generate(\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2564, in generate\n result = decoding_method(\n ^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2838, in _sample\n input_ids = torch.cat([input_ids, next_tokens[:, None]], dim=-1)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nUnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte\n"
|
||||
}
|
||||
main()
|
||||
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_qwen_tts_directml.py", line 106, in main
|
||||
wavs, sample_rate = model.generate_custom_voice(
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\utils\_contextlib.py", line 116, in decorate_context
|
||||
return func(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\qwen_tts\inference\qwen3_tts_model.py", line 829, in generate_custom_voice
|
||||
talker_codes_list, _ = self.model.generate(
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\utils\_contextlib.py", line 116, in decorate_context
|
||||
return func(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\qwen_tts\core\models\modeling_qwen3_tts.py", line 2272, in generate
|
||||
talker_result = self.talker.generate(
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\utils\_contextlib.py", line 116, in decorate_context
|
||||
return func(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\generation\utils.py", line 2564, in generate
|
||||
result = decoding_method(
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\generation\utils.py", line 2838, in _sample
|
||||
input_ids = torch.cat([input_ids, next_tokens[:, None]], dim=-1)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
'\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer'
|
||||
CMD.EXE was started with the above path as the current directory.
|
||||
UNC paths are not supported. Defaulting to Windows directory.
|
||||
'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.
|
||||
CAT_FAILURE [('privateuseone:1', 'torch.int64', (1, 0)), ('privateuseone:1', 'torch.int64', (1, 1))]
|
||||
Traceback (most recent call last):
|
||||
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_qwen_tts_directml.py", line 163, in <module>
|
||||
|
||||
********
|
||||
Warning: flash-attn is not installed. Will only run the manual PyTorch version. Please install flash-attn for faster inference.
|
||||
********
|
||||
|
||||
{
|
||||
"scope": "standalone real-weight Qwen3-TTS DirectML feasibility; no Omni, streaming, or all-operator placement claim",
|
||||
"platform": "Windows-11-10.0.26200-SP0",
|
||||
"python": "3.12.10",
|
||||
"torch": "2.4.1+cpu",
|
||||
"torch_directml": "unknown",
|
||||
"transformers": "4.57.3",
|
||||
"adapters": [
|
||||
"NVIDIA GeForce RTX 5090 Laptop GPU",
|
||||
"AMD Radeon(TM) 890M Graphics"
|
||||
],
|
||||
"requested_index": 1,
|
||||
"target_device": "privateuseone:1",
|
||||
"model_dir": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
|
||||
"talker_sha256": "bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb",
|
||||
"speech_tokenizer_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258",
|
||||
"dtype": "float16",
|
||||
"attention": "sdpa",
|
||||
"threads": 8,
|
||||
"text": "Hello from the local computer.",
|
||||
"speaker": "Ryan",
|
||||
"max_new_tokens": 64,
|
||||
"repetition_penalty_override": 1.0,
|
||||
"seed": 42,
|
||||
"status": "failed",
|
||||
"cpu_load_s": 1.9829754000529647,
|
||||
"phase": "generate",
|
||||
"device_move_s": 1.012216999894008,
|
||||
"model_devices": [
|
||||
"privateuseone:1"
|
||||
],
|
||||
"error_type": "UnicodeDecodeError",
|
||||
"error": "'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte",
|
||||
"traceback": "Traceback (most recent call last):\n File \"\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\experiments\\probe_qwen_tts_directml.py\", line 123, in main\n wavs, sample_rate = model.generate_custom_voice(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\qwen_tts\\inference\\qwen3_tts_model.py\", line 829, in generate_custom_voice\n talker_codes_list, _ = self.model.generate(\n ^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\qwen_tts\\core\\models\\modeling_qwen3_tts.py\", line 2272, in generate\n talker_result = self.talker.generate(\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2564, in generate\n result = decoding_method(\n ^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2838, in _sample\n input_ids = torch.cat([input_ids, next_tokens[:, None]], dim=-1)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\experiments\\probe_qwen_tts_directml.py\", line 108, in traced_cat\n return original_cat(tensors, *cat_args, **cat_kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nUnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte\n"
|
||||
}
|
||||
main()
|
||||
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_qwen_tts_directml.py", line 123, in main
|
||||
wavs, sample_rate = model.generate_custom_voice(
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\utils\_contextlib.py", line 116, in decorate_context
|
||||
return func(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\qwen_tts\inference\qwen3_tts_model.py", line 829, in generate_custom_voice
|
||||
talker_codes_list, _ = self.model.generate(
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\utils\_contextlib.py", line 116, in decorate_context
|
||||
return func(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\qwen_tts\core\models\modeling_qwen3_tts.py", line 2272, in generate
|
||||
talker_result = self.talker.generate(
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\utils\_contextlib.py", line 116, in decorate_context
|
||||
return func(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\generation\utils.py", line 2564, in generate
|
||||
result = decoding_method(
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\generation\utils.py", line 2838, in _sample
|
||||
input_ids = torch.cat([input_ids, next_tokens[:, None]], dim=-1)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_qwen_tts_directml.py", line 108, in traced_cat
|
||||
return original_cat(tensors, *cat_args, **cat_kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"scope": "standalone real-weight Qwen3-TTS DirectML feasibility; no Omni, streaming, or all-operator placement claim",
|
||||
"platform": "Windows-11-10.0.26200-SP0",
|
||||
"python": "3.12.10",
|
||||
"torch": "2.4.1+cpu",
|
||||
"torch_directml": "unknown",
|
||||
"transformers": "4.57.3",
|
||||
"adapters": [
|
||||
"NVIDIA GeForce RTX 5090 Laptop GPU",
|
||||
"AMD Radeon(TM) 890M Graphics"
|
||||
],
|
||||
"requested_index": 1,
|
||||
"target_device": "privateuseone:1",
|
||||
"model_dir": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
|
||||
"talker_sha256": "bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb",
|
||||
"speech_tokenizer_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258",
|
||||
"dtype": "float16",
|
||||
"attention": "sdpa",
|
||||
"threads": 8,
|
||||
"text": "Hello from the local computer.",
|
||||
"speaker": "Ryan",
|
||||
"max_new_tokens": 64,
|
||||
"repetition_penalty_override": 1.0,
|
||||
"workaround_empty_int64_cat": true,
|
||||
"seed": 42,
|
||||
"status": "failed",
|
||||
"cpu_load_s": 2.1119523000670597,
|
||||
"phase": "generate",
|
||||
"device_move_s": 0.9917556999716908,
|
||||
"model_devices": [
|
||||
"privateuseone:1"
|
||||
],
|
||||
"error_type": "RuntimeError",
|
||||
"error": "probability tensor contains either `inf`, `nan` or element < 0",
|
||||
"traceback": "Traceback (most recent call last):\n File \"\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\experiments\\probe_qwen_tts_directml.py\", line 142, in main\n wavs, sample_rate = model.generate_custom_voice(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\qwen_tts\\inference\\qwen3_tts_model.py\", line 829, in generate_custom_voice\n talker_codes_list, _ = self.model.generate(\n ^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\qwen_tts\\core\\models\\modeling_qwen3_tts.py\", line 2272, in generate\n talker_result = self.talker.generate(\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2564, in generate\n result = decoding_method(\n ^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2787, in _sample\n outputs = model_forward(**model_inputs, return_dict=True)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\nn\\modules\\module.py\", line 1553, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\nn\\modules\\module.py\", line 1562, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\utils\\generic.py\", line 918, in wrapper\n output = func(self, *args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\qwen_tts\\core\\models\\modeling_qwen3_tts.py\", line 1671, in forward\n predictor_result = self.code_predictor.generate(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2564, in generate\n result = decoding_method(\n ^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2829, in _sample\n next_tokens = torch.multinomial(probs, num_samples=1).squeeze(1)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nRuntimeError: probability tensor contains either `inf`, `nan` or element < 0\n"
|
||||
}
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
'\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer'
|
||||
CMD.EXE was started with the above path as the current directory.
|
||||
UNC paths are not supported. Defaulting to Windows directory.
|
||||
'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.
|
||||
EMPTY_INT64_CAT_IDENTITY
|
||||
Traceback (most recent call last):
|
||||
|
||||
********
|
||||
Warning: flash-attn is not installed. Will only run the manual PyTorch version. Please install flash-attn for faster inference.
|
||||
********
|
||||
|
||||
{
|
||||
"scope": "standalone real-weight Qwen3-TTS DirectML feasibility; no Omni, streaming, or all-operator placement claim",
|
||||
"platform": "Windows-11-10.0.26200-SP0",
|
||||
"python": "3.12.10",
|
||||
"torch": "2.4.1+cpu",
|
||||
"torch_directml": "unknown",
|
||||
"transformers": "4.57.3",
|
||||
"adapters": [
|
||||
"NVIDIA GeForce RTX 5090 Laptop GPU",
|
||||
"AMD Radeon(TM) 890M Graphics"
|
||||
],
|
||||
"requested_index": 1,
|
||||
"target_device": "privateuseone:1",
|
||||
"model_dir": "C:\\Users\\zhout\\w2\\models\\Qwen3-TTS-0.6B-85e237c",
|
||||
"talker_sha256": "bc3c7e785eb961179c25450d1acff03f839e0002f2f3a5aeb67b5735c0fa2adb",
|
||||
"speech_tokenizer_sha256": "836b7b357f5ea43e889936a3709af68dfe3751881acefe4ecf0dbd30ba571258",
|
||||
"dtype": "float16",
|
||||
"attention": "sdpa",
|
||||
"threads": 8,
|
||||
"text": "Hello from the local computer.",
|
||||
"speaker": "Ryan",
|
||||
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_qwen_tts_directml.py", line 182, in <module>
|
||||
"max_new_tokens": 64,
|
||||
"repetition_penalty_override": 1.0,
|
||||
"workaround_empty_int64_cat": true,
|
||||
"seed": 42,
|
||||
"status": "failed",
|
||||
"cpu_load_s": 2.1119523000670597,
|
||||
"phase": "generate",
|
||||
"device_move_s": 0.9917556999716908,
|
||||
"model_devices": [
|
||||
"privateuseone:1"
|
||||
],
|
||||
"error_type": "RuntimeError",
|
||||
"error": "probability tensor contains either `inf`, `nan` or element < 0",
|
||||
"traceback": "Traceback (most recent call last):\n File \"\\\\wsl.localhost\\Ubuntu\\home\\zhout\\project\\edge_infer\\vllm-omni-edge\\benchmarks\\edge_harness\\experiments\\probe_qwen_tts_directml.py\", line 142, in main\n wavs, sample_rate = model.generate_custom_voice(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\qwen_tts\\inference\\qwen3_tts_model.py\", line 829, in generate_custom_voice\n talker_codes_list, _ = self.model.generate(\n ^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\qwen_tts\\core\\models\\modeling_qwen3_tts.py\", line 2272, in generate\n talker_result = self.talker.generate(\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2564, in generate\n result = decoding_method(\n ^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2787, in _sample\n outputs = model_forward(**model_inputs, return_dict=True)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\nn\\modules\\module.py\", line 1553, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\nn\\modules\\module.py\", line 1562, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\utils\\generic.py\", line 918, in wrapper\n output = func(self, *args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\qwen_tts\\core\\models\\modeling_qwen3_tts.py\", line 1671, in forward\n predictor_result = self.code_predictor.generate(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\torch\\utils\\_contextlib.py\", line 116, in decorate_context\n return func(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2564, in generate\n result = decoding_method(\n ^^^^^^^^^^^^^^^^\n File \"C:\\Users\\zhout\\w2\\qwen_dml_venv\\Lib\\site-packages\\transformers\\generation\\utils.py\", line 2829, in _sample\n next_tokens = torch.multinomial(probs, num_samples=1).squeeze(1)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nRuntimeError: probability tensor contains either `inf`, `nan` or element < 0\n"
|
||||
}
|
||||
main()
|
||||
File "\\wsl.localhost\Ubuntu\home\zhout\project\edge_infer\vllm-omni-edge\benchmarks\edge_harness\experiments\probe_qwen_tts_directml.py", line 142, in main
|
||||
wavs, sample_rate = model.generate_custom_voice(
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\utils\_contextlib.py", line 116, in decorate_context
|
||||
return func(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\qwen_tts\inference\qwen3_tts_model.py", line 829, in generate_custom_voice
|
||||
talker_codes_list, _ = self.model.generate(
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\utils\_contextlib.py", line 116, in decorate_context
|
||||
return func(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\qwen_tts\core\models\modeling_qwen3_tts.py", line 2272, in generate
|
||||
talker_result = self.talker.generate(
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\utils\_contextlib.py", line 116, in decorate_context
|
||||
return func(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\generation\utils.py", line 2564, in generate
|
||||
result = decoding_method(
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\generation\utils.py", line 2787, in _sample
|
||||
outputs = model_forward(**model_inputs, return_dict=True)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\nn\modules\module.py", line 1553, in _wrapped_call_impl
|
||||
return self._call_impl(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\nn\modules\module.py", line 1562, in _call_impl
|
||||
return forward_call(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\utils\generic.py", line 918, in wrapper
|
||||
output = func(self, *args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\qwen_tts\core\models\modeling_qwen3_tts.py", line 1671, in forward
|
||||
predictor_result = self.code_predictor.generate(
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\torch\utils\_contextlib.py", line 116, in decorate_context
|
||||
return func(*args, **kwargs)
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\generation\utils.py", line 2564, in generate
|
||||
result = decoding_method(
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "C:\Users\zhout\w2\qwen_dml_venv\Lib\site-packages\transformers\generation\utils.py", line 2829, in _sample
|
||||
next_tokens = torch.multinomial(probs, num_samples=1).squeeze(1)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
RuntimeError: probability tensor contains either `inf`, `nan` or element < 0
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
# Preserve native Windows raw records byte-for-byte.
|
||||
*.json -text -eol
|
||||
*.log -text -eol
|
||||
*.wav binary
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
# GGUF weights and runtime binaries stay in local model storage.
|
||||
*.gguf
|
||||
*.exe
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
# Native Windows CPU + Radeon 890M Qwen3-TTS scoped whole-model path
|
||||
|
||||
The 0.6B CustomVoice model completed two named English **text-to-WAV** requests in [CrispASR v0.8.35](https://github.com/CrispStrobe/CrispASR/releases/tag/v0.8.35), outside Omni. This is a **joint CPU+iGPU result**: the talker and codec were routed to Radeon 890M Vulkan, while the iterative code predictor was explicitly pinned to CPU FP32. It is not an all-Radeon pass or a CPU+iGPU+NPU pass. The [DirectML route failed quality](../qwen_tts_radeon890m_directml/README.md). Neither route establishes Omni streaming or release qualification.
|
||||
|
||||
The host was Windows 11 build 26200 on Ryzen AI 9 HX 370 with Radeon 890M driver `32.0.22018.6001`; an RTX 5090 Laptop was also present. `GGML_VK_VISIBLE_DEVICES=1` exposed only the Radeon adapter, enumerated as `Vulkan0`; `-dev 1` selected the original physical adapter. The [first placement log](crisp_tts_radeon_cp_cpu_20260923.log) records `AMD Radeon(TM) 890M Graphics`, `using preferred GPU backend: Vulkan0`, `code_pred CPU-pinned (72 tensors, 432 MB, copy=f32)`, and `codec: GPU default - loading weights onto Vulkan0`. The [runtime's routing source](https://github.com/CrispStrobe/CrispASR/blob/v0.8.35/src/qwen3_tts.cpp) routes the talker off Vulkan unless `CRISPASR_QWEN3_TTS_VULKAN_NATIVE=1`; that override was set for the passing runs, and the CPU-talkback message was absent. This is placement evidence for the named runtime configuration, not a per-operator profiler trace.
|
||||
|
||||
The runtime ZIP `crispasr-windows-x86_64-vulkan.zip` is 36,826,421 bytes, SHA256 `8c4f6483d3dad9ab4066f3853b48306e16e5b4010d1bf42054c81bf439166b3f`; its embedded build reports git `00c9e752` and CPU/Vulkan backends. The talker is the [Q8_0 GGUF conversion](https://huggingface.co/cstr/qwen3-tts-0.6b-customvoice-GGUF/tree/29094dcb46f19b0898616aa9aeb876aa9aa6e086), revision `29094dcb46f19b0898616aa9aeb876aa9aa6e086`, file SHA256 `5227dcbc4df7c5533341d111cc469fa491a48e722b23dd10f553181b52dff2d9` (967,980,192 bytes). The codec is the [F16 tokenizer GGUF](https://huggingface.co/cstr/qwen3-tts-tokenizer-12hz-GGUF/tree/344e279551177654762e5c7d39e217834325f222), revision `344e279551177654762e5c7d39e217834325f222`, SHA256 `70dc95dbfdd9aa5d9d406236ff771d061bf17b0cda02a72513953355606e719b` (358,453,280 bytes). The loader logged a 28-layer/1024-hidden talker, five-layer code predictor, 16 codebooks and 24 kHz mono output. These are quantized/converter artifacts, distinct from the original HF safetensors in the [CPU PyTorch record](../qwen_tts_native_cpu/README.md). The converter's source-checkpoint revision, calibration details and same-checkpoint numerical parity are not established by this record; the two ASR cases are only scoped task checks. Weights and binaries are local, not committed.
|
||||
|
||||
| Workload / mode | Observed output | Timing and quality proxy | Raw record |
|
||||
|---|---|---|---|
|
||||
| “Hello from the local computer.”, Ryan, seed 42 | 32 frames, 2.56 s / 24 kHz mono WAV | CLI process wall 6.75 s including model load; runtime generation+codec 3.37 s. Separately pinned Whisper tiny.en transcribed the exact sentence (WER 0). | [placement/run log](crisp_tts_radeon_cp_cpu_20260923.log), [WAV](crisp_tts_radeon_cp_cpu_20260923.wav), [ASR report](crisp_tts_radeon_cp_cpu_asr_20260923.json) |
|
||||
| “The blue car is parked beside the library.”, Ryan, seed 42 | 40 frames, 3.20 s / 24 kHz mono WAV | CLI process wall 7.17 s including model load; runtime generation+codec 4.03 s. Whisper tiny.en transcribed the exact sentence (WER 0). | [run log](crisp_tts_radeon_cp_cpu_second_20260923.log), [WAV](crisp_tts_radeon_cp_cpu_second_20260923.wav), [ASR report](crisp_tts_radeon_cp_cpu_second_asr_20260923.json) |
|
||||
| Resident HTTP server, first sentence, seed 42 | 1 excluded warmup + 20 serial complete text-to-WAV requests; each had the same 2.56 s PCM audio | Nearest-rank client wall p50/p95 **3.310/3.345 s** (RTF 1.29/1.31). All 20 PCM SHA256 values matched; full WAV-container hashes varied. The saved profile WAV again transcribed exactly (WER 0). | [20-request profile and memory samples](crisp_tts_joint_profile20_pcm_20260923.json), [first measured WAV](crisp_tts_joint_profile20_pcm_20260923.wav), [ASR report](crisp_tts_joint_profile20_pcm_asr_20260923.json), [server log](crisp_tts_joint_server_20260923.stderr.log) |
|
||||
|
||||
The server process was already loaded before the measured profile. Its 0.25 s samples during the profile observed at most 3,266,732,032 bytes working set and 4,398,071,808 bytes private, with host available RAM at least 26,836,635,648 bytes. These are **not** loading peaks, model-only unique RAM, or iGPU allocation measurements. The 20 measured requests used one repeated prompt at concurrency one; no playback stream, cancellation, broader speech-quality suite, concurrent admission, power mode or 30-minute thermal run was checked. Whisper tiny.en is an intelligibility proxy, not a perceptual or speaker-fidelity score. The measured RTF exceeds 1, so this does not meet M2's real-time playback gate.
|
||||
|
||||
The safe default Vulkan CLI [fell back to CPU for the talker and codec](crisp_tts_radeon_20260923.log); its 7.20 s output must not be counted as a Radeon result. Forcing all Qwen TTS stages onto Vulkan with the [native override](crisp_tts_radeon_native_20260923.log) hit the 360-frame runaway cap without EOS, and [disabling flash attention](crisp_tts_radeon_no_fa_20260923.log) did not repair it; both output WAVs are retained but the runtime explicitly says to discard them. Pinning the code predictor to CPU FP32 yielded the two named passing outputs above. A separate [flash-attention-on diagnostic](crisp_tts_radeon_cp_cpu_fa_20260923.log) produced PCM identical to the first passing no-flash run, so the CPU predictor pin, not the flash-attention setting, was the decisive change in this case. General numerical parity and task quality remain unproven. The result should be integrated only as a bounded whole-session stage with explicit hybrid placement and memory admission, then compared with CPU and other backends on matched output and power conditions.
|
||||
|
||||
Reproduce the first named CLI request in PowerShell after verifying the binary and GGUF hashes:
|
||||
|
||||
```powershell
|
||||
$env:GGML_VK_VISIBLE_DEVICES = '1'
|
||||
$env:CRISPASR_QWEN3_TTS_VULKAN_NATIVE = '1'
|
||||
$env:CRISPASR_QWEN3_TTS_CP_BACKEND = 'cpu-f32'
|
||||
$bin = 'C:\Users\zhout\w2\crispasr-v0.8.35-vulkan\crispasr-windows-x86_64-vulkan\crispasr.exe'
|
||||
$dir = 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b'
|
||||
& $bin --gpu-backend vulkan -dev 1 --no-flash-attn --verbose `
|
||||
--backend qwen3-tts-customvoice `
|
||||
-m "$dir\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf" `
|
||||
--codec-model "$dir\qwen3-tts-tokenizer-12hz.gguf" `
|
||||
--voice ryan --tts 'Hello from the local computer.' `
|
||||
--tts-output 'C:\Users\zhout\w2\qwen_joint.wav' -n 96 --seed 42
|
||||
```
|
||||
|
||||
For the resident profile, launch the same binary with `--server --host 127.0.0.1 --port 18175` in place of `--tts`/`--tts-output`, retaining the same environment and `--voice ryan`. Then run [profile_crisp_tts_http.py](../../../../experiments/profile_crisp_tts_http.py) with `--server-pid`, `--warmups 1`, `--repeats 20`, `--output-report` and `--output-wav`. The server uses its startup Ryan voice when the HTTP body omits `voice`; the log confirms the selected speaker. The server also auto-loaded an unrelated punctuation component during startup, before timing; this did not enter measured request wall time. Stop the server after profiling.
|
||||
+1637
File diff suppressed because it is too large.
Load diff
+14
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"scope": "complete serial HTTP text-to-WAV requests in one resident server; speech quality and placement assessed separately",
|
||||
"endpoint": "http://127.0.0.1:18175/v1/audio/speech",
|
||||
"text": "Hello from the local computer.",
|
||||
"seed": 42,
|
||||
"concurrency": 1,
|
||||
"nearest_rank_p50_wall_s": 3.3100590999238193,
|
||||
"nearest_rank_p95_wall_s": 3.3347201000433415,
|
||||
"all_same_wav_sha256": false,
|
||||
"server_pid": 59628,
|
||||
"sampled_max_working_set_bytes": 3265462272,
|
||||
"sampled_max_private_bytes": 4396638208,
|
||||
"sampled_min_host_available_bytes": 26668068864
|
||||
}
|
||||
BIN
Binary file not shown.
+1653
File diff suppressed because it is too large.
Load diff
+15
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"scope": "complete serial HTTP text-to-WAV requests in one resident server; speech quality and placement assessed separately",
|
||||
"endpoint": "http://127.0.0.1:18175/v1/audio/speech",
|
||||
"text": "Hello from the local computer.",
|
||||
"seed": 42,
|
||||
"concurrency": 1,
|
||||
"nearest_rank_p50_wall_s": 3.309862600057386,
|
||||
"nearest_rank_p95_wall_s": 3.345391200040467,
|
||||
"all_same_wav_sha256": false,
|
||||
"all_same_pcm_sha256": true,
|
||||
"server_pid": 59628,
|
||||
"sampled_max_working_set_bytes": 3266732032,
|
||||
"sampled_max_private_bytes": 4398071808,
|
||||
"sampled_min_host_available_bytes": 26836635648
|
||||
}
|
||||
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.4.1+cpu",
|
||||
"wav_sha256": "d000699e97685fc0041ec1e374d31879f32a1e84fe8aa8b57fc0c3436e4d32ce",
|
||||
"input_sample_rate": 24000,
|
||||
"input_duration_s": 2.56,
|
||||
"reference_text": "Hello from the local computer.",
|
||||
"transcript": "Hello from the local computer.",
|
||||
"word_error_rate": 0.0,
|
||||
"asr_load_s": 0.8723513999721035,
|
||||
"asr_inference_s": 0.8797434000298381
|
||||
}
|
||||
+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.4.1+cpu",
|
||||
"wav_sha256": "d000699e97685fc0041ec1e374d31879f32a1e84fe8aa8b57fc0c3436e4d32ce",
|
||||
"input_sample_rate": 24000,
|
||||
"input_duration_s": 2.56,
|
||||
"reference_text": "Hello from the local computer.",
|
||||
"transcript": "Hello from the local computer.",
|
||||
"word_error_rate": 0.0,
|
||||
"asr_load_s": 0.8723513999721035,
|
||||
"asr_inference_s": 0.8797434000298381
|
||||
}
|
||||
+214
@@ -0,0 +1,214 @@
|
||||
crispasr 0.8.35 (git 00c9e752, Release) [backends: cpu,vulkan]
|
||||
ggml_vulkan: Found 1 Vulkan devices:
|
||||
ggml_vulkan: 0 = AMD Radeon(TM) 890M Graphics (AMD proprietary driver) | uma: 1 | fp16: 1 | bf16: 1 | fp4: 0 | warp size: 64 | shared memory: 32768 | int dot: 1 | matrix cores: KHR_coopmat
|
||||
cpu-isa: OK — built for AVX2/FMA/F16C/BMI2/AVX; host CPU supports the build's ISA baseline
|
||||
crispasr_init_gpu_backend: using preferred GPU backend: Vulkan0
|
||||
qwen3_tts: code_pred CPU-pinned (72 tensors, 432 MB, copy=f32)
|
||||
qwen3_tts: kv cache 448 MiB (head_dim=128 max_ctx=4096 n_kv=8 n_layers=28)
|
||||
qwen3_tts: loaded C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf (talker 28L/1024 code_pred 5L vocab 3072)
|
||||
qwen3_tts: codec: GPU default - loading weights onto Vulkan0
|
||||
qwen3_tts: codec loaded from 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-tokenizer-12hz.gguf' (8L d=512/1024 rvq=16)
|
||||
qwen3_tts: codec encoder loaded (SEANet+xfmr+RVQ)
|
||||
crispasr[qwen3-tts]: codec loaded from 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-tokenizer-12hz.gguf'
|
||||
crispasr-server: warmup completed in 0 ms
|
||||
crispasr-server: backend 'qwen3-tts-customvoice' loaded, model 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf'
|
||||
crispasr-server: auto-enabling punctuation restoration for backend 'qwen3-tts'
|
||||
crispasr[punc]: downloading https://huggingface.co/cstr/fireredpunc-GGUF/resolve/main/fireredpunc-q4_k.gguf
|
||||
crispasr: downloading via WinHTTP...
|
||||
fireredpunc: 12L, d=768, ffn=3072, heads=12, vocab=21128, labels=5
|
||||
crispasr_init_gpu_backend: using preferred GPU backend: Vulkan0
|
||||
crispasr-server: loaded punctuation model 'C:\Users\zhout/.cache/crispasr/fireredpunc-q4_k.gguf'
|
||||
|
||||
crispasr-server: listening on 127.0.0.1:18175
|
||||
POST /inference — upload audio (native JSON)
|
||||
POST /v1/audio/transcriptions — OpenAI-compatible API
|
||||
POST /v1/audio/speech — TTS (OpenAI-compatible)
|
||||
POST /load — hot-swap model
|
||||
GET /health — server status
|
||||
GET /backends — list backends
|
||||
GET /v1/models — model info
|
||||
GET /v1/voices — list voices in --voice-dir
|
||||
/voices, /v1/audio/voices — aliases (llama-swap compat)
|
||||
POST /v1/voices — upload voice file (multipart)
|
||||
DELETE /v1/voices/:name — delete voice file
|
||||
crispasr-server: warning: --voice-dir not set; /v1/voices will return empty and /v1/audio/speech will reject requests with a 'voice' field
|
||||
|
||||
crispasr: warning: 'qwen3-tts-customvoice' does not record whether its preset voice belongs to a real person, so no spoken AI
|
||||
disclosure was added. If the voice is that of an identifiable individual, the output is a
|
||||
deep fake under EU AI Act Art. 3(60) and you carry the Art. 50(4) duty to disclose it.
|
||||
Pass --speaker-identity real_person to have CrispASR prepend the disclosure, or
|
||||
--speaker-identity synthetic to silence this.
|
||||
qwen3_tts: selected CustomVoice speaker 'ryan' (spk_id=3061)
|
||||
crispasr[qwen3-tts]: CustomVoice speaker = 'ryan' (available: aiden, dylan, eric, ono_anna, ryan, serena, sohee, uncle_fu, vivian)
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3069 ms codec=207 ms total=3276 ms audio=2.6 s rtf=1.280
|
||||
crispasr-server: synthesized 2.6s audio in 3.55s (RTF=1.39) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3430 ms codec=205 ms total=3635 ms audio=2.6 s rtf=1.420
|
||||
crispasr-server: synthesized 2.6s audio in 3.64s (RTF=1.42) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3077 ms codec=204 ms total=3282 ms audio=2.6 s rtf=1.282
|
||||
crispasr-server: synthesized 2.6s audio in 3.28s (RTF=1.28) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3079 ms codec=204 ms total=3283 ms audio=2.6 s rtf=1.283
|
||||
crispasr-server: synthesized 2.6s audio in 3.29s (RTF=1.28) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3078 ms codec=205 ms total=3283 ms audio=2.6 s rtf=1.282
|
||||
crispasr-server: synthesized 2.6s audio in 3.28s (RTF=1.28) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3090 ms codec=210 ms total=3300 ms audio=2.6 s rtf=1.289
|
||||
crispasr-server: synthesized 2.6s audio in 3.30s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3099 ms codec=204 ms total=3303 ms audio=2.6 s rtf=1.290
|
||||
crispasr-server: synthesized 2.6s audio in 3.30s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3086 ms codec=208 ms total=3294 ms audio=2.6 s rtf=1.287
|
||||
crispasr-server: synthesized 2.6s audio in 3.30s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3070 ms codec=206 ms total=3276 ms audio=2.6 s rtf=1.280
|
||||
crispasr-server: synthesized 2.6s audio in 3.29s (RTF=1.28) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3069 ms codec=204 ms total=3273 ms audio=2.6 s rtf=1.279
|
||||
crispasr-server: synthesized 2.6s audio in 3.27s (RTF=1.28) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3100 ms codec=205 ms total=3305 ms audio=2.6 s rtf=1.291
|
||||
crispasr-server: synthesized 2.6s audio in 3.31s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3083 ms codec=209 ms total=3292 ms audio=2.6 s rtf=1.286
|
||||
crispasr-server: synthesized 2.6s audio in 3.29s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3072 ms codec=226 ms total=3299 ms audio=2.6 s rtf=1.289
|
||||
crispasr-server: synthesized 2.6s audio in 3.30s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3083 ms codec=209 ms total=3293 ms audio=2.6 s rtf=1.286
|
||||
crispasr-server: synthesized 2.6s audio in 3.29s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3086 ms codec=215 ms total=3301 ms audio=2.6 s rtf=1.289
|
||||
crispasr-server: synthesized 2.6s audio in 3.30s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=2997 ms codec=211 ms total=3209 ms audio=2.6 s rtf=1.253
|
||||
crispasr-server: synthesized 2.6s audio in 3.21s (RTF=1.25) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3086 ms codec=209 ms total=3294 ms audio=2.6 s rtf=1.287
|
||||
crispasr-server: synthesized 2.6s audio in 3.30s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3089 ms codec=209 ms total=3298 ms audio=2.6 s rtf=1.288
|
||||
crispasr-server: synthesized 2.6s audio in 3.30s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3105 ms codec=212 ms total=3317 ms audio=2.6 s rtf=1.296
|
||||
crispasr-server: synthesized 2.6s audio in 3.33s (RTF=1.30) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3088 ms codec=203 ms total=3291 ms audio=2.6 s rtf=1.285
|
||||
crispasr-server: synthesized 2.6s audio in 3.29s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3079 ms codec=207 ms total=3286 ms audio=2.6 s rtf=1.284
|
||||
crispasr-server: synthesized 2.6s audio in 3.29s (RTF=1.28) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3092 ms codec=205 ms total=3297 ms audio=2.6 s rtf=1.288
|
||||
crispasr-server: synthesized 2.6s audio in 3.30s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3209 ms codec=203 ms total=3412 ms audio=2.6 s rtf=1.333
|
||||
crispasr-server: synthesized 2.6s audio in 3.41s (RTF=1.33) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3061 ms codec=206 ms total=3267 ms audio=2.6 s rtf=1.276
|
||||
crispasr-server: synthesized 2.6s audio in 3.27s (RTF=1.28) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3106 ms codec=206 ms total=3312 ms audio=2.6 s rtf=1.294
|
||||
crispasr-server: synthesized 2.6s audio in 3.31s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3075 ms codec=207 ms total=3282 ms audio=2.6 s rtf=1.282
|
||||
crispasr-server: synthesized 2.6s audio in 3.29s (RTF=1.28) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3093 ms codec=205 ms total=3298 ms audio=2.6 s rtf=1.288
|
||||
crispasr-server: synthesized 2.6s audio in 3.30s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3097 ms codec=203 ms total=3300 ms audio=2.6 s rtf=1.289
|
||||
crispasr-server: synthesized 2.6s audio in 3.30s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3079 ms codec=204 ms total=3283 ms audio=2.6 s rtf=1.282
|
||||
crispasr-server: synthesized 2.6s audio in 3.28s (RTF=1.28) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3079 ms codec=209 ms total=3288 ms audio=2.6 s rtf=1.284
|
||||
crispasr-server: synthesized 2.6s audio in 3.29s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3073 ms codec=207 ms total=3279 ms audio=2.6 s rtf=1.281
|
||||
crispasr-server: synthesized 2.6s audio in 3.28s (RTF=1.28) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3091 ms codec=205 ms total=3296 ms audio=2.6 s rtf=1.287
|
||||
crispasr-server: synthesized 2.6s audio in 3.30s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3082 ms codec=203 ms total=3284 ms audio=2.6 s rtf=1.283
|
||||
crispasr-server: synthesized 2.6s audio in 3.29s (RTF=1.28) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3066 ms codec=207 ms total=3273 ms audio=2.6 s rtf=1.279
|
||||
crispasr-server: synthesized 2.6s audio in 3.28s (RTF=1.28) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3074 ms codec=203 ms total=3277 ms audio=2.6 s rtf=1.280
|
||||
crispasr-server: synthesized 2.6s audio in 3.28s (RTF=1.28) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3069 ms codec=218 ms total=3287 ms audio=2.6 s rtf=1.284
|
||||
crispasr-server: synthesized 2.6s audio in 3.29s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3086 ms codec=205 ms total=3292 ms audio=2.6 s rtf=1.286
|
||||
crispasr-server: synthesized 2.6s audio in 3.29s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3107 ms codec=204 ms total=3312 ms audio=2.6 s rtf=1.294
|
||||
crispasr-server: synthesized 2.6s audio in 3.31s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3113 ms codec=211 ms total=3324 ms audio=2.6 s rtf=1.299
|
||||
crispasr-server: synthesized 2.6s audio in 3.34s (RTF=1.30) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3075 ms codec=213 ms total=3289 ms audio=2.6 s rtf=1.285
|
||||
crispasr-server: synthesized 2.6s audio in 3.29s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3110 ms codec=205 ms total=3315 ms audio=2.6 s rtf=1.295
|
||||
crispasr-server: synthesized 2.6s audio in 3.32s (RTF=1.30) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3101 ms codec=207 ms total=3307 ms audio=2.6 s rtf=1.292
|
||||
crispasr-server: synthesized 2.6s audio in 3.31s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3087 ms codec=216 ms total=3303 ms audio=2.6 s rtf=1.290
|
||||
crispasr-server: synthesized 2.6s audio in 3.31s (RTF=1.29) voice='<startup>' speed=1.00 format=wav model='<unset>' chunks=1 sr=24000Hz
|
||||
BIN
Binary file not shown.
+69
@@ -0,0 +1,69 @@
|
||||
crispasr 0.8.35 (git 00c9e752, Release) [backends: cpu,vulkan]
|
||||
=== build info ===
|
||||
version : 0.8.35
|
||||
git sha : 00c9e752
|
||||
git date : 2026-09-21T20:44:31Z
|
||||
git subject : release-_bump_VERSION_to_0.8.35
|
||||
build date : 2026-09-21T21:04:24Z
|
||||
build type : Release
|
||||
compiler : msvc 1951
|
||||
os : windows
|
||||
arch : x86_64
|
||||
ggml backends : cpu,vulkan
|
||||
|
||||
=== runtime env ===
|
||||
PATH = C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\powershell;C:\Users\zhout\.codex\tmp\arg0\codex-arg05Acw4D;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\libheif\libheif\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\jxrlib\jxrlib\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\poppler\Library\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\bin\override;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4\bin\x64;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA App\NvDLISR;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Git\cmd;C:\Program Files\NVIDIA Corporation\Nsight Compute 2026.3.0\;C:\Users\zhout\.cargo\bin;C:\Users\zhout\AppData\Local\Programs\Python\Python312\Scripts\;C:\Users\zhout\AppData\Local\Programs\Python\Python312\;C:\Users\zhout\AppData\Local\Programs\Python\Launcher\;c:\Users\zhout\AppData\Local\Programs\cursor\resources\app\codeBin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\powershell;C:\Users\zhout\AppData\Local\Microsoft\WindowsApps;C:\Users\zhout\AppData\Local\Programs\cursor\resources\app\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\bin\fallback;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\node\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\git\cmd;C:\Program Files\WindowsApps\OpenAI.Codex_26.917.6896.0_x64__2p2nqsd0c76g0\app\resources
|
||||
LD_LIBRARY_PATH = (unset)
|
||||
LIBRARY_PATH = (unset)
|
||||
CUDA_HOME = (unset)
|
||||
CUDA_PATH = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4
|
||||
CUDA_VISIBLE_DEVICES = 1
|
||||
NVIDIA_VISIBLE_DEVICES = (unset)
|
||||
NVIDIA_DRIVER_CAPABILITIES = (unset)
|
||||
GGML_CUDA_DEBUG = 1
|
||||
GGML_VK_VISIBLE_DEVICES = 1
|
||||
GGML_VK_PIPELINE_CACHE_DEBUG = 1
|
||||
CRISPASR_USE_CUDA_COMPAT = (unset)
|
||||
CRISPASR_BACKEND = (unset)
|
||||
CRISPASR_CACHE_DIR = (unset)
|
||||
|
||||
=== ggml backends + devices ===
|
||||
ggml_vulkan: Found 1 Vulkan devices:
|
||||
ggml_vulkan: 0 = AMD Radeon(TM) 890M Graphics (AMD proprietary driver) | uma: 1 | fp16: 1 | bf16: 1 | fp4: 0 | warp size: 64 | shared memory: 32768 | int dot: 1 | matrix cores: KHR_coopmat
|
||||
registered backends: 2
|
||||
[0] Vulkan (devices: 1)
|
||||
[1] CPU (devices: 1)
|
||||
registered devices : 2
|
||||
[0] igpu name=Vulkan0 desc=AMD Radeon(TM) 890M Graphics mem=46080/48505 MiB id=?
|
||||
[1] cpu name=CPU desc=AMD Ryzen AI 9 HX 370 w/ Radeon 890M mem=28341/64633 MiB id=?
|
||||
|
||||
crispasr[verbose]: model arg = 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf'
|
||||
crispasr[verbose]: backend arg = 'qwen3-tts-customvoice'
|
||||
crispasr[verbose]: use_gpu = true
|
||||
crispasr[verbose]: gpu_backend = 'vulkan'
|
||||
crispasr[verbose]: gpu_device = 1
|
||||
crispasr[verbose]: cache_dir override = '(default)'
|
||||
crispasr[verbose]: auto_download = false
|
||||
crispasr[verbose]: n_threads = 4
|
||||
crispasr[verbose]: flash_attn = true
|
||||
crispasr[verbose]: resolved model = 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf'
|
||||
crispasr_init_gpu_backend: using preferred GPU backend: Vulkan0
|
||||
qwen3_tts: Vulkan backend detected — running talker on CPU (#304 Vulkan miscompute; set CRISPASR_QWEN3_TTS_VULKAN_NATIVE=1 to override)
|
||||
qwen3_tts: kv cache 448 MiB (head_dim=128 max_ctx=4096 n_kv=8 n_layers=28)
|
||||
qwen3_tts: loaded C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf (talker 28L/1024 code_pred 5L vocab 3072)
|
||||
qwen3_tts: codec: CPU default - loading weights onto CPU
|
||||
qwen3_tts: codec loaded from 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-tokenizer-12hz.gguf' (8L d=512/1024 rvq=16)
|
||||
qwen3_tts: codec encoder loaded (SEANet+xfmr+RVQ)
|
||||
crispasr[qwen3-tts]: codec loaded from 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-tokenizer-12hz.gguf'
|
||||
crispasr[verbose]: backend 'qwen3-tts-customvoice' initialised OK
|
||||
crispasr: warning: 'qwen3-tts-customvoice' does not record whether its preset voice belongs to a real person, so no spoken AI
|
||||
disclosure was added. If the voice is that of an identifiable individual, the output is a
|
||||
deep fake under EU AI Act Art. 3(60) and you carry the Art. 50(4) duty to disclose it.
|
||||
Pass --speaker-identity real_person to have CrispASR prepend the disclosure, or
|
||||
--speaker-identity synthetic to silence this.
|
||||
qwen3_tts: selected CustomVoice speaker 'ryan' (spk_id=3061)
|
||||
crispasr[qwen3-tts]: CustomVoice speaker = 'ryan' (available: aiden, dylan, eric, ono_anna, ryan, serena, sohee, uncle_fu, vivian)
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 90 frames × 16 codebooks = 1440 codes
|
||||
qwen3_tts: perf — codes=3475 ms codec=3329 ms total=6804 ms audio=7.2 s rtf=0.945
|
||||
crispasr: TTS output written to 'C:\Users\zhout\w2\crisp_tts_radeon_20260923.wav' (172800 samples @ 24000 Hz, 7.20 sec)
|
||||
BIN
Binary file not shown.
+69
@@ -0,0 +1,69 @@
|
||||
crispasr 0.8.35 (git 00c9e752, Release) [backends: cpu,vulkan]
|
||||
=== build info ===
|
||||
version : 0.8.35
|
||||
git sha : 00c9e752
|
||||
git date : 2026-09-21T20:44:31Z
|
||||
git subject : release-_bump_VERSION_to_0.8.35
|
||||
build date : 2026-09-21T21:04:24Z
|
||||
build type : Release
|
||||
compiler : msvc 1951
|
||||
os : windows
|
||||
arch : x86_64
|
||||
ggml backends : cpu,vulkan
|
||||
|
||||
=== runtime env ===
|
||||
PATH = C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\powershell;C:\Users\zhout\.codex\tmp\arg0\codex-arg05Acw4D;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\libheif\libheif\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\jxrlib\jxrlib\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\poppler\Library\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\bin\override;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4\bin\x64;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA App\NvDLISR;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Git\cmd;C:\Program Files\NVIDIA Corporation\Nsight Compute 2026.3.0\;C:\Users\zhout\.cargo\bin;C:\Users\zhout\AppData\Local\Programs\Python\Python312\Scripts\;C:\Users\zhout\AppData\Local\Programs\Python\Python312\;C:\Users\zhout\AppData\Local\Programs\Python\Launcher\;c:\Users\zhout\AppData\Local\Programs\cursor\resources\app\codeBin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\powershell;C:\Users\zhout\AppData\Local\Microsoft\WindowsApps;C:\Users\zhout\AppData\Local\Programs\cursor\resources\app\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\bin\fallback;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\node\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\git\cmd;C:\Program Files\WindowsApps\OpenAI.Codex_26.917.6896.0_x64__2p2nqsd0c76g0\app\resources
|
||||
LD_LIBRARY_PATH = (unset)
|
||||
LIBRARY_PATH = (unset)
|
||||
CUDA_HOME = (unset)
|
||||
CUDA_PATH = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4
|
||||
CUDA_VISIBLE_DEVICES = 1
|
||||
NVIDIA_VISIBLE_DEVICES = (unset)
|
||||
NVIDIA_DRIVER_CAPABILITIES = (unset)
|
||||
GGML_CUDA_DEBUG = 1
|
||||
GGML_VK_VISIBLE_DEVICES = 1
|
||||
GGML_VK_PIPELINE_CACHE_DEBUG = 1
|
||||
CRISPASR_USE_CUDA_COMPAT = (unset)
|
||||
CRISPASR_BACKEND = (unset)
|
||||
CRISPASR_CACHE_DIR = (unset)
|
||||
|
||||
=== ggml backends + devices ===
|
||||
ggml_vulkan: Found 1 Vulkan devices:
|
||||
ggml_vulkan: 0 = AMD Radeon(TM) 890M Graphics (AMD proprietary driver) | uma: 1 | fp16: 1 | bf16: 1 | fp4: 0 | warp size: 64 | shared memory: 32768 | int dot: 1 | matrix cores: KHR_coopmat
|
||||
registered backends: 2
|
||||
[0] Vulkan (devices: 1)
|
||||
[1] CPU (devices: 1)
|
||||
registered devices : 2
|
||||
[0] igpu name=Vulkan0 desc=AMD Radeon(TM) 890M Graphics mem=46080/48505 MiB id=?
|
||||
[1] cpu name=CPU desc=AMD Ryzen AI 9 HX 370 w/ Radeon 890M mem=28721/64633 MiB id=?
|
||||
|
||||
crispasr[verbose]: model arg = 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf'
|
||||
crispasr[verbose]: backend arg = 'qwen3-tts-customvoice'
|
||||
crispasr[verbose]: use_gpu = true
|
||||
crispasr[verbose]: gpu_backend = 'vulkan'
|
||||
crispasr[verbose]: gpu_device = 1
|
||||
crispasr[verbose]: cache_dir override = '(default)'
|
||||
crispasr[verbose]: auto_download = false
|
||||
crispasr[verbose]: n_threads = 4
|
||||
crispasr[verbose]: flash_attn = false
|
||||
crispasr[verbose]: resolved model = 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf'
|
||||
crispasr_init_gpu_backend: using preferred GPU backend: Vulkan0
|
||||
qwen3_tts: code_pred CPU-pinned (72 tensors, 432 MB, copy=f32)
|
||||
qwen3_tts: kv cache 448 MiB (head_dim=128 max_ctx=4096 n_kv=8 n_layers=28)
|
||||
qwen3_tts: loaded C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf (talker 28L/1024 code_pred 5L vocab 3072)
|
||||
qwen3_tts: codec: GPU default - loading weights onto Vulkan0
|
||||
qwen3_tts: codec loaded from 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-tokenizer-12hz.gguf' (8L d=512/1024 rvq=16)
|
||||
qwen3_tts: codec encoder loaded (SEANet+xfmr+RVQ)
|
||||
crispasr[qwen3-tts]: codec loaded from 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-tokenizer-12hz.gguf'
|
||||
crispasr[verbose]: backend 'qwen3-tts-customvoice' initialised OK
|
||||
crispasr: warning: 'qwen3-tts-customvoice' does not record whether its preset voice belongs to a real person, so no spoken AI
|
||||
disclosure was added. If the voice is that of an identifiable individual, the output is a
|
||||
deep fake under EU AI Act Art. 3(60) and you carry the Art. 50(4) duty to disclose it.
|
||||
Pass --speaker-identity real_person to have CrispASR prepend the disclosure, or
|
||||
--speaker-identity synthetic to silence this.
|
||||
qwen3_tts: selected CustomVoice speaker 'ryan' (spk_id=3061)
|
||||
crispasr[qwen3-tts]: CustomVoice speaker = 'ryan' (available: aiden, dylan, eric, ono_anna, ryan, serena, sohee, uncle_fu, vivian)
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3023 ms codec=345 ms total=3369 ms audio=2.6 s rtf=1.316
|
||||
crispasr: TTS output written to 'C:\Users\zhout\w2\crisp_tts_radeon_cp_cpu_20260923.wav' (61440 samples @ 24000 Hz, 2.56 sec)
|
||||
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.4.1+cpu",
|
||||
"wav_sha256": "95253f7aab1b5721733395a229d09f96e7d6fff67ca9166554d5d88104a52016",
|
||||
"input_sample_rate": 24000,
|
||||
"input_duration_s": 2.56,
|
||||
"reference_text": "Hello from the local computer.",
|
||||
"transcript": "Hello from the local computer.",
|
||||
"word_error_rate": 0.0,
|
||||
"asr_load_s": 0.8987498000496998,
|
||||
"asr_inference_s": 0.8767790000420064
|
||||
}
|
||||
+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.4.1+cpu",
|
||||
"wav_sha256": "95253f7aab1b5721733395a229d09f96e7d6fff67ca9166554d5d88104a52016",
|
||||
"input_sample_rate": 24000,
|
||||
"input_duration_s": 2.56,
|
||||
"reference_text": "Hello from the local computer.",
|
||||
"transcript": "Hello from the local computer.",
|
||||
"word_error_rate": 0.0,
|
||||
"asr_load_s": 0.8987498000496998,
|
||||
"asr_inference_s": 0.8767790000420064
|
||||
}
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
crispasr 0.8.35 (git 00c9e752, Release) [backends: cpu,vulkan]
|
||||
=== build info ===
|
||||
version : 0.8.35
|
||||
git sha : 00c9e752
|
||||
git date : 2026-09-21T20:44:31Z
|
||||
git subject : release-_bump_VERSION_to_0.8.35
|
||||
build date : 2026-09-21T21:04:24Z
|
||||
build type : Release
|
||||
compiler : msvc 1951
|
||||
os : windows
|
||||
arch : x86_64
|
||||
ggml backends : cpu,vulkan
|
||||
|
||||
=== runtime env ===
|
||||
PATH = C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\powershell;C:\Users\zhout\.codex\tmp\arg0\codex-arg05Acw4D;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\libheif\libheif\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\jxrlib\jxrlib\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\poppler\Library\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\bin\override;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4\bin\x64;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA App\NvDLISR;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Git\cmd;C:\Program Files\NVIDIA Corporation\Nsight Compute 2026.3.0\;C:\Users\zhout\.cargo\bin;C:\Users\zhout\AppData\Local\Programs\Python\Python312\Scripts\;C:\Users\zhout\AppData\Local\Programs\Python\Python312\;C:\Users\zhout\AppData\Local\Programs\Python\Launcher\;c:\Users\zhout\AppData\Local\Programs\cursor\resources\app\codeBin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\powershell;C:\Users\zhout\AppData\Local\Microsoft\WindowsApps;C:\Users\zhout\AppData\Local\Programs\cursor\resources\app\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\bin\fallback;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\node\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\git\cmd;C:\Program Files\WindowsApps\OpenAI.Codex_26.917.6896.0_x64__2p2nqsd0c76g0\app\resources
|
||||
LD_LIBRARY_PATH = (unset)
|
||||
LIBRARY_PATH = (unset)
|
||||
CUDA_HOME = (unset)
|
||||
CUDA_PATH = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4
|
||||
CUDA_VISIBLE_DEVICES = 1
|
||||
NVIDIA_VISIBLE_DEVICES = (unset)
|
||||
NVIDIA_DRIVER_CAPABILITIES = (unset)
|
||||
GGML_CUDA_DEBUG = 1
|
||||
GGML_VK_VISIBLE_DEVICES = 1
|
||||
GGML_VK_PIPELINE_CACHE_DEBUG = 1
|
||||
CRISPASR_USE_CUDA_COMPAT = (unset)
|
||||
CRISPASR_BACKEND = (unset)
|
||||
CRISPASR_CACHE_DIR = (unset)
|
||||
|
||||
=== ggml backends + devices ===
|
||||
ggml_vulkan: Found 1 Vulkan devices:
|
||||
ggml_vulkan: 0 = AMD Radeon(TM) 890M Graphics (AMD proprietary driver) | uma: 1 | fp16: 1 | bf16: 1 | fp4: 0 | warp size: 64 | shared memory: 32768 | int dot: 1 | matrix cores: KHR_coopmat
|
||||
registered backends: 2
|
||||
[0] Vulkan (devices: 1)
|
||||
[1] CPU (devices: 1)
|
||||
registered devices : 2
|
||||
[0] igpu name=Vulkan0 desc=AMD Radeon(TM) 890M Graphics mem=46080/48505 MiB id=?
|
||||
[1] cpu name=CPU desc=AMD Ryzen AI 9 HX 370 w/ Radeon 890M mem=28654/64633 MiB id=?
|
||||
|
||||
crispasr[verbose]: model arg = 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf'
|
||||
crispasr[verbose]: backend arg = 'qwen3-tts-customvoice'
|
||||
crispasr[verbose]: use_gpu = true
|
||||
crispasr[verbose]: gpu_backend = 'vulkan'
|
||||
crispasr[verbose]: gpu_device = 1
|
||||
crispasr[verbose]: cache_dir override = '(default)'
|
||||
crispasr[verbose]: auto_download = false
|
||||
crispasr[verbose]: n_threads = 4
|
||||
crispasr[verbose]: flash_attn = true
|
||||
crispasr[verbose]: resolved model = 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf'
|
||||
crispasr_init_gpu_backend: using preferred GPU backend: Vulkan0
|
||||
qwen3_tts: code_pred CPU-pinned (72 tensors, 432 MB, copy=f32)
|
||||
qwen3_tts: kv cache 448 MiB (head_dim=128 max_ctx=4096 n_kv=8 n_layers=28)
|
||||
qwen3_tts: loaded C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf (talker 28L/1024 code_pred 5L vocab 3072)
|
||||
qwen3_tts: codec: GPU default - loading weights onto Vulkan0
|
||||
qwen3_tts: codec loaded from 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-tokenizer-12hz.gguf' (8L d=512/1024 rvq=16)
|
||||
qwen3_tts: codec encoder loaded (SEANet+xfmr+RVQ)
|
||||
crispasr[qwen3-tts]: codec loaded from 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-tokenizer-12hz.gguf'
|
||||
crispasr[verbose]: backend 'qwen3-tts-customvoice' initialised OK
|
||||
crispasr: warning: 'qwen3-tts-customvoice' does not record whether its preset voice belongs to a real person, so no spoken AI
|
||||
disclosure was added. If the voice is that of an identifiable individual, the output is a
|
||||
deep fake under EU AI Act Art. 3(60) and you carry the Art. 50(4) duty to disclose it.
|
||||
Pass --speaker-identity real_person to have CrispASR prepend the disclosure, or
|
||||
--speaker-identity synthetic to silence this.
|
||||
qwen3_tts: selected CustomVoice speaker 'ryan' (spk_id=3061)
|
||||
crispasr[qwen3-tts]: CustomVoice speaker = 'ryan' (available: aiden, dylan, eric, ono_anna, ryan, serena, sohee, uncle_fu, vivian)
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: produced 32 frames × 16 codebooks = 512 codes
|
||||
qwen3_tts: perf — codes=3042 ms codec=209 ms total=3251 ms audio=2.6 s rtf=1.270
|
||||
crispasr: TTS output written to 'C:\Users\zhout\w2\crisp_tts_radeon_cp_cpu_fa_20260923.wav' (61440 samples @ 24000 Hz, 2.56 sec)
|
||||
BIN
Binary file not shown.
+69
@@ -0,0 +1,69 @@
|
||||
crispasr 0.8.35 (git 00c9e752, Release) [backends: cpu,vulkan]
|
||||
=== build info ===
|
||||
version : 0.8.35
|
||||
git sha : 00c9e752
|
||||
git date : 2026-09-21T20:44:31Z
|
||||
git subject : release-_bump_VERSION_to_0.8.35
|
||||
build date : 2026-09-21T21:04:24Z
|
||||
build type : Release
|
||||
compiler : msvc 1951
|
||||
os : windows
|
||||
arch : x86_64
|
||||
ggml backends : cpu,vulkan
|
||||
|
||||
=== runtime env ===
|
||||
PATH = C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\powershell;C:\Users\zhout\.codex\tmp\arg0\codex-arg05Acw4D;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\libheif\libheif\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\jxrlib\jxrlib\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\poppler\Library\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\bin\override;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4\bin\x64;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA App\NvDLISR;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Git\cmd;C:\Program Files\NVIDIA Corporation\Nsight Compute 2026.3.0\;C:\Users\zhout\.cargo\bin;C:\Users\zhout\AppData\Local\Programs\Python\Python312\Scripts\;C:\Users\zhout\AppData\Local\Programs\Python\Python312\;C:\Users\zhout\AppData\Local\Programs\Python\Launcher\;c:\Users\zhout\AppData\Local\Programs\cursor\resources\app\codeBin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\powershell;C:\Users\zhout\AppData\Local\Microsoft\WindowsApps;C:\Users\zhout\AppData\Local\Programs\cursor\resources\app\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\bin\fallback;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\node\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\git\cmd;C:\Program Files\WindowsApps\OpenAI.Codex_26.917.6896.0_x64__2p2nqsd0c76g0\app\resources
|
||||
LD_LIBRARY_PATH = (unset)
|
||||
LIBRARY_PATH = (unset)
|
||||
CUDA_HOME = (unset)
|
||||
CUDA_PATH = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4
|
||||
CUDA_VISIBLE_DEVICES = 1
|
||||
NVIDIA_VISIBLE_DEVICES = (unset)
|
||||
NVIDIA_DRIVER_CAPABILITIES = (unset)
|
||||
GGML_CUDA_DEBUG = 1
|
||||
GGML_VK_VISIBLE_DEVICES = 1
|
||||
GGML_VK_PIPELINE_CACHE_DEBUG = 1
|
||||
CRISPASR_USE_CUDA_COMPAT = (unset)
|
||||
CRISPASR_BACKEND = (unset)
|
||||
CRISPASR_CACHE_DIR = (unset)
|
||||
|
||||
=== ggml backends + devices ===
|
||||
ggml_vulkan: Found 1 Vulkan devices:
|
||||
ggml_vulkan: 0 = AMD Radeon(TM) 890M Graphics (AMD proprietary driver) | uma: 1 | fp16: 1 | bf16: 1 | fp4: 0 | warp size: 64 | shared memory: 32768 | int dot: 1 | matrix cores: KHR_coopmat
|
||||
registered backends: 2
|
||||
[0] Vulkan (devices: 1)
|
||||
[1] CPU (devices: 1)
|
||||
registered devices : 2
|
||||
[0] igpu name=Vulkan0 desc=AMD Radeon(TM) 890M Graphics mem=46080/48505 MiB id=?
|
||||
[1] cpu name=CPU desc=AMD Ryzen AI 9 HX 370 w/ Radeon 890M mem=28779/64633 MiB id=?
|
||||
|
||||
crispasr[verbose]: model arg = 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf'
|
||||
crispasr[verbose]: backend arg = 'qwen3-tts-customvoice'
|
||||
crispasr[verbose]: use_gpu = true
|
||||
crispasr[verbose]: gpu_backend = 'vulkan'
|
||||
crispasr[verbose]: gpu_device = 1
|
||||
crispasr[verbose]: cache_dir override = '(default)'
|
||||
crispasr[verbose]: auto_download = false
|
||||
crispasr[verbose]: n_threads = 4
|
||||
crispasr[verbose]: flash_attn = false
|
||||
crispasr[verbose]: resolved model = 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf'
|
||||
crispasr_init_gpu_backend: using preferred GPU backend: Vulkan0
|
||||
qwen3_tts: code_pred CPU-pinned (72 tensors, 432 MB, copy=f32)
|
||||
qwen3_tts: kv cache 448 MiB (head_dim=128 max_ctx=4096 n_kv=8 n_layers=28)
|
||||
qwen3_tts: loaded C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf (talker 28L/1024 code_pred 5L vocab 3072)
|
||||
qwen3_tts: codec: GPU default - loading weights onto Vulkan0
|
||||
qwen3_tts: codec loaded from 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-tokenizer-12hz.gguf' (8L d=512/1024 rvq=16)
|
||||
qwen3_tts: codec encoder loaded (SEANet+xfmr+RVQ)
|
||||
crispasr[qwen3-tts]: codec loaded from 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-tokenizer-12hz.gguf'
|
||||
crispasr[verbose]: backend 'qwen3-tts-customvoice' initialised OK
|
||||
crispasr: warning: 'qwen3-tts-customvoice' does not record whether its preset voice belongs to a real person, so no spoken AI
|
||||
disclosure was added. If the voice is that of an identifiable individual, the output is a
|
||||
deep fake under EU AI Act Art. 3(60) and you carry the Art. 50(4) duty to disclose it.
|
||||
Pass --speaker-identity real_person to have CrispASR prepend the disclosure, or
|
||||
--speaker-identity synthetic to silence this.
|
||||
qwen3_tts: selected CustomVoice speaker 'ryan' (spk_id=3061)
|
||||
crispasr[qwen3-tts]: CustomVoice speaker = 'ryan' (available: aiden, dylan, eric, ono_anna, ryan, serena, sohee, uncle_fu, vivian)
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=10 + final=1 = T=19 trailing=1
|
||||
qwen3_tts: produced 40 frames × 16 codebooks = 640 codes
|
||||
qwen3_tts: perf — codes=3766 ms codec=264 ms total=4030 ms audio=3.2 s rtf=1.259
|
||||
crispasr: TTS output written to 'C:\Users\zhout\w2\crisp_tts_radeon_cp_cpu_second_20260923.wav' (76800 samples @ 24000 Hz, 3.20 sec)
|
||||
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.4.1+cpu",
|
||||
"wav_sha256": "448552ea17e6afe9a97e3458e85cde942ec5cdfe4a028fd36ab10e79b3aab5e8",
|
||||
"input_sample_rate": 24000,
|
||||
"input_duration_s": 3.2,
|
||||
"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": 1.034827800001949,
|
||||
"asr_inference_s": 0.910699600004591
|
||||
}
|
||||
+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.4.1+cpu",
|
||||
"wav_sha256": "448552ea17e6afe9a97e3458e85cde942ec5cdfe4a028fd36ab10e79b3aab5e8",
|
||||
"input_sample_rate": 24000,
|
||||
"input_duration_s": 3.2,
|
||||
"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": 1.034827800001949,
|
||||
"asr_inference_s": 0.910699600004591
|
||||
}
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
crispasr 0.8.35 (git 00c9e752, Release) [backends: cpu,vulkan]
|
||||
=== build info ===
|
||||
version : 0.8.35
|
||||
git sha : 00c9e752
|
||||
git date : 2026-09-21T20:44:31Z
|
||||
git subject : release-_bump_VERSION_to_0.8.35
|
||||
build date : 2026-09-21T21:04:24Z
|
||||
build type : Release
|
||||
compiler : msvc 1951
|
||||
os : windows
|
||||
arch : x86_64
|
||||
ggml backends : cpu,vulkan
|
||||
|
||||
=== runtime env ===
|
||||
PATH = C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\powershell;C:\Users\zhout\.codex\tmp\arg0\codex-arg05Acw4D;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\libheif\libheif\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\jxrlib\jxrlib\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\poppler\Library\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\bin\override;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4\bin\x64;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA App\NvDLISR;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Git\cmd;C:\Program Files\NVIDIA Corporation\Nsight Compute 2026.3.0\;C:\Users\zhout\.cargo\bin;C:\Users\zhout\AppData\Local\Programs\Python\Python312\Scripts\;C:\Users\zhout\AppData\Local\Programs\Python\Python312\;C:\Users\zhout\AppData\Local\Programs\Python\Launcher\;c:\Users\zhout\AppData\Local\Programs\cursor\resources\app\codeBin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\powershell;C:\Users\zhout\AppData\Local\Microsoft\WindowsApps;C:\Users\zhout\AppData\Local\Programs\cursor\resources\app\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\bin\fallback;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\node\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\git\cmd;C:\Program Files\WindowsApps\OpenAI.Codex_26.917.6896.0_x64__2p2nqsd0c76g0\app\resources
|
||||
LD_LIBRARY_PATH = (unset)
|
||||
LIBRARY_PATH = (unset)
|
||||
CUDA_HOME = (unset)
|
||||
CUDA_PATH = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4
|
||||
CUDA_VISIBLE_DEVICES = 1
|
||||
NVIDIA_VISIBLE_DEVICES = (unset)
|
||||
NVIDIA_DRIVER_CAPABILITIES = (unset)
|
||||
GGML_CUDA_DEBUG = 1
|
||||
GGML_VK_VISIBLE_DEVICES = 1
|
||||
GGML_VK_PIPELINE_CACHE_DEBUG = 1
|
||||
CRISPASR_USE_CUDA_COMPAT = (unset)
|
||||
CRISPASR_BACKEND = (unset)
|
||||
CRISPASR_CACHE_DIR = (unset)
|
||||
|
||||
=== ggml backends + devices ===
|
||||
ggml_vulkan: Found 1 Vulkan devices:
|
||||
ggml_vulkan: 0 = AMD Radeon(TM) 890M Graphics (AMD proprietary driver) | uma: 1 | fp16: 1 | bf16: 1 | fp4: 0 | warp size: 64 | shared memory: 32768 | int dot: 1 | matrix cores: KHR_coopmat
|
||||
registered backends: 2
|
||||
[0] Vulkan (devices: 1)
|
||||
[1] CPU (devices: 1)
|
||||
registered devices : 2
|
||||
[0] igpu name=Vulkan0 desc=AMD Radeon(TM) 890M Graphics mem=46080/48505 MiB id=?
|
||||
[1] cpu name=CPU desc=AMD Ryzen AI 9 HX 370 w/ Radeon 890M mem=28522/64633 MiB id=?
|
||||
|
||||
crispasr[verbose]: model arg = 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf'
|
||||
crispasr[verbose]: backend arg = 'qwen3-tts-customvoice'
|
||||
crispasr[verbose]: use_gpu = true
|
||||
crispasr[verbose]: gpu_backend = 'vulkan'
|
||||
crispasr[verbose]: gpu_device = 1
|
||||
crispasr[verbose]: cache_dir override = '(default)'
|
||||
crispasr[verbose]: auto_download = false
|
||||
crispasr[verbose]: n_threads = 4
|
||||
crispasr[verbose]: flash_attn = true
|
||||
crispasr[verbose]: resolved model = 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf'
|
||||
crispasr_init_gpu_backend: using preferred GPU backend: Vulkan0
|
||||
qwen3_tts: kv cache 448 MiB (head_dim=128 max_ctx=4096 n_kv=8 n_layers=28)
|
||||
qwen3_tts: loaded C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf (talker 28L/1024 code_pred 5L vocab 3072)
|
||||
qwen3_tts: codec: GPU default - loading weights onto Vulkan0
|
||||
qwen3_tts: codec loaded from 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-tokenizer-12hz.gguf' (8L d=512/1024 rvq=16)
|
||||
qwen3_tts: codec encoder loaded (SEANet+xfmr+RVQ)
|
||||
crispasr[qwen3-tts]: codec loaded from 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-tokenizer-12hz.gguf'
|
||||
crispasr[verbose]: backend 'qwen3-tts-customvoice' initialised OK
|
||||
crispasr: warning: 'qwen3-tts-customvoice' does not record whether its preset voice belongs to a real person, so no spoken AI
|
||||
disclosure was added. If the voice is that of an identifiable individual, the output is a
|
||||
deep fake under EU AI Act Art. 3(60) and you carry the Art. 50(4) duty to disclose it.
|
||||
Pass --speaker-identity real_person to have CrispASR prepend the disclosure, or
|
||||
--speaker-identity synthetic to silence this.
|
||||
qwen3_tts: selected CustomVoice speaker 'ryan' (spk_id=3061)
|
||||
crispasr[qwen3-tts]: CustomVoice speaker = 'ryan' (available: aiden, dylan, eric, ono_anna, ryan, serena, sohee, uncle_fu, vivian)
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: cp_direct active (persistent sched-free code_pred graphs)
|
||||
qwen3_tts: ERROR: talker hit the text-proportional frame cap (360 frames for 30 input codepoints, 28.8 s of audio) without emitting EOS. The output is a runaway and should be discarded. If this reproduces on GPU but not with --gpu-backend cpu, that is expected backend arithmetic amplified by the decode loop, not a miscompute — see issue #337. Raise CRISPASR_QWEN3_TTS_MAX_FRAMES if the text genuinely needs more.
|
||||
qwen3_tts: produced 360 frames × 16 codebooks = 5760 codes
|
||||
qwen3_tts: codec: chunked decode T=360 chunk=150 ctx=128
|
||||
qwen3_tts: perf — codes=19841 ms codec=10534 ms total=30374 ms audio=28.8 s rtf=1.055
|
||||
crispasr: TTS output written to 'C:\Users\zhout\w2\crisp_tts_radeon_native_20260923.wav' (691200 samples @ 24000 Hz, 28.80 sec)
|
||||
BIN
Binary file not shown.
+71
@@ -0,0 +1,71 @@
|
||||
crispasr 0.8.35 (git 00c9e752, Release) [backends: cpu,vulkan]
|
||||
=== build info ===
|
||||
version : 0.8.35
|
||||
git sha : 00c9e752
|
||||
git date : 2026-09-21T20:44:31Z
|
||||
git subject : release-_bump_VERSION_to_0.8.35
|
||||
build date : 2026-09-21T21:04:24Z
|
||||
build type : Release
|
||||
compiler : msvc 1951
|
||||
os : windows
|
||||
arch : x86_64
|
||||
ggml backends : cpu,vulkan
|
||||
|
||||
=== runtime env ===
|
||||
PATH = C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\powershell;C:\Users\zhout\.codex\tmp\arg0\codex-arg05Acw4D;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\libheif\libheif\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\jxrlib\jxrlib\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\poppler\Library\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\bin\override;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4\bin\x64;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA App\NvDLISR;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Git\cmd;C:\Program Files\NVIDIA Corporation\Nsight Compute 2026.3.0\;C:\Users\zhout\.cargo\bin;C:\Users\zhout\AppData\Local\Programs\Python\Python312\Scripts\;C:\Users\zhout\AppData\Local\Programs\Python\Python312\;C:\Users\zhout\AppData\Local\Programs\Python\Launcher\;c:\Users\zhout\AppData\Local\Programs\cursor\resources\app\codeBin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\powershell;C:\Users\zhout\AppData\Local\Microsoft\WindowsApps;C:\Users\zhout\AppData\Local\Programs\cursor\resources\app\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\bin\fallback;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\node\bin;C:\Users\zhout\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\git\cmd;C:\Program Files\WindowsApps\OpenAI.Codex_26.917.6896.0_x64__2p2nqsd0c76g0\app\resources
|
||||
LD_LIBRARY_PATH = (unset)
|
||||
LIBRARY_PATH = (unset)
|
||||
CUDA_HOME = (unset)
|
||||
CUDA_PATH = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.4
|
||||
CUDA_VISIBLE_DEVICES = 1
|
||||
NVIDIA_VISIBLE_DEVICES = (unset)
|
||||
NVIDIA_DRIVER_CAPABILITIES = (unset)
|
||||
GGML_CUDA_DEBUG = 1
|
||||
GGML_VK_VISIBLE_DEVICES = 1
|
||||
GGML_VK_PIPELINE_CACHE_DEBUG = 1
|
||||
CRISPASR_USE_CUDA_COMPAT = (unset)
|
||||
CRISPASR_BACKEND = (unset)
|
||||
CRISPASR_CACHE_DIR = (unset)
|
||||
|
||||
=== ggml backends + devices ===
|
||||
ggml_vulkan: Found 1 Vulkan devices:
|
||||
ggml_vulkan: 0 = AMD Radeon(TM) 890M Graphics (AMD proprietary driver) | uma: 1 | fp16: 1 | bf16: 1 | fp4: 0 | warp size: 64 | shared memory: 32768 | int dot: 1 | matrix cores: KHR_coopmat
|
||||
registered backends: 2
|
||||
[0] Vulkan (devices: 1)
|
||||
[1] CPU (devices: 1)
|
||||
registered devices : 2
|
||||
[0] igpu name=Vulkan0 desc=AMD Radeon(TM) 890M Graphics mem=46080/48505 MiB id=?
|
||||
[1] cpu name=CPU desc=AMD Ryzen AI 9 HX 370 w/ Radeon 890M mem=28665/64633 MiB id=?
|
||||
|
||||
crispasr[verbose]: model arg = 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf'
|
||||
crispasr[verbose]: backend arg = 'qwen3-tts-customvoice'
|
||||
crispasr[verbose]: use_gpu = true
|
||||
crispasr[verbose]: gpu_backend = 'vulkan'
|
||||
crispasr[verbose]: gpu_device = 1
|
||||
crispasr[verbose]: cache_dir override = '(default)'
|
||||
crispasr[verbose]: auto_download = false
|
||||
crispasr[verbose]: n_threads = 4
|
||||
crispasr[verbose]: flash_attn = false
|
||||
crispasr[verbose]: resolved model = 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf'
|
||||
crispasr_init_gpu_backend: using preferred GPU backend: Vulkan0
|
||||
qwen3_tts: kv cache 448 MiB (head_dim=128 max_ctx=4096 n_kv=8 n_layers=28)
|
||||
qwen3_tts: loaded C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-12hz-0.6b-customvoice-q8_0.gguf (talker 28L/1024 code_pred 5L vocab 3072)
|
||||
qwen3_tts: codec: GPU default - loading weights onto Vulkan0
|
||||
qwen3_tts: codec loaded from 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-tokenizer-12hz.gguf' (8L d=512/1024 rvq=16)
|
||||
qwen3_tts: codec encoder loaded (SEANet+xfmr+RVQ)
|
||||
crispasr[qwen3-tts]: codec loaded from 'C:\Users\zhout\w2\models\crisp_qwen3tts_0.6b\qwen3-tts-tokenizer-12hz.gguf'
|
||||
crispasr[verbose]: backend 'qwen3-tts-customvoice' initialised OK
|
||||
crispasr: warning: 'qwen3-tts-customvoice' does not record whether its preset voice belongs to a real person, so no spoken AI
|
||||
disclosure was added. If the voice is that of an identifiable individual, the output is a
|
||||
deep fake under EU AI Act Art. 3(60) and you carry the Art. 50(4) duty to disclose it.
|
||||
Pass --speaker-identity real_person to have CrispASR prepend the disclosure, or
|
||||
--speaker-identity synthetic to silence this.
|
||||
qwen3_tts: selected CustomVoice speaker 'ryan' (spk_id=3061)
|
||||
crispasr[qwen3-tts]: CustomVoice speaker = 'ryan' (available: aiden, dylan, eric, ono_anna, ryan, serena, sohee, uncle_fu, vivian)
|
||||
qwen3_tts[customvoice]: prefill role=3 + bridge=5 + text=7 + final=1 = T=16 trailing=1
|
||||
qwen3_tts: cp_direct active (persistent sched-free code_pred graphs)
|
||||
qwen3_tts: ERROR: talker hit the text-proportional frame cap (360 frames for 30 input codepoints, 28.8 s of audio) without emitting EOS. The output is a runaway and should be discarded. If this reproduces on GPU but not with --gpu-backend cpu, that is expected backend arithmetic amplified by the decode loop, not a miscompute — see issue #337. Raise CRISPASR_QWEN3_TTS_MAX_FRAMES if the text genuinely needs more.
|
||||
qwen3_tts: produced 360 frames × 16 codebooks = 5760 codes
|
||||
qwen3_tts: codec: chunked decode T=360 chunk=150 ctx=128
|
||||
qwen3_tts: perf — codes=13797 ms codec=5107 ms total=18904 ms audio=28.8 s rtf=0.656
|
||||
crispasr: TTS output written to 'C:\Users\zhout\w2\crisp_tts_radeon_no_fa_20260923.wav' (691200 samples @ 24000 Hz, 28.80 sec)
|
||||
BIN
Binary file not shown.
@@ -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 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.
|
||||
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, a standalone Qwen3-TTS text-to-WAV profile on native Windows CPU, and a separate hybrid CPU+Radeon 890M Qwen3-TTS profile. Profiling completion does not imply full release qualification or Omni integration.
|
||||
|
||||
## Configuration × model
|
||||
|
||||
@@ -12,7 +12,7 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i
|
||||
| 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 |
|
||||
| PC HX370 + Radeon 890M / Windows worker | scoped E2E: standalone Spark text | scoped E2E: Radeon talker/codec + CPU predictor | NOT E2E | NOT E2E | NOT E2E |
|
||||
| PC HX370 + AMD NPU / Windows worker | NOT E2E (output-head component passed) | NOT E2E | NOT E2E | NOT E2E | NOT E2E |
|
||||
| PC CPU+iGPU+NPU +/- discrete GPU, joint model execution | NOT E2E | NOT E2E | NOT E2E | NOT E2E | NOT E2E |
|
||||
| PC Snapdragon X Elite CRD / AI Hub | NOT E2E | NOT E2E | NOT E2E | NOT E2E | NOT E2E |
|
||||
@@ -46,7 +46,7 @@ NOT E2E means no complete device/model workload was verified. “Scoped E2E” i
|
||||
| PC HX370 + RTX 5090 Laptop / Windows | MiniCPM-o 4.5 | SCOPED_E2E | The verified checkpoint completed native Windows three-stage BF16 text, one synthetic image, and one synthetic audio input to text+speech in separate constrained plans with 5 GiB thinker host offload and explicit 2,048/512-token limits. Text and all 32 thinker token IDs matched WSL CUDA; a 5.2 s WAV was nonzero. The red-square image produced the same description and 27 thinker token IDs as WSL plus a nonzero 5.2 s WAV in 17.15 s. The 2 s/440 Hz tone produced the same whistling description and nine IDs as WSL plus a nonzero 2.16 s WAV in 8.26 s. The initial text run needed 900/600 s startup limits after a 300 s timeout; a separate 1-warmup/20-measured serial text run had request wall p50 18.38 s/p95 18.73 s, with sampled host available RAM as low as 0.78 GB and pagefile use up to 11.17 GB. These synthetic inputs do not establish general image/audio or speech quality. | Check real image/audio suites, video input, speech intelligibility/alignment, concurrency, interruption, loading-peak admission and sustained thermal/power behavior before broader qualification; [native evidence](../../../e2e_expansion_20260923/README.md). |
|
||||
| PC HX370 + RTX 5090 Laptop / Windows | InternVLA-A1 | SYNTHETIC_POLICY_PASS | The Place_Markpen checkpoint strict-loaded from a UNC path and produced finite `[1, 50, 32]` actions on synthetic zero observations/noise. Policy/output CUDA placement was checked; one native forward took 1.12 s, with 6.68 GB peak allocated. Relative L2 difference from WSL CUDA was 0.83% (no task tolerance). | Validate real observations/reference actions, units/timestamps, memory and repeated latency before task qualification; [native evidence](../../../e2e_expansion_20260923/README.md). |
|
||||
| PC HX370 + Radeon 890M / Windows worker | Spark-X2.5 | SCOPED_E2E_STANDALONE | The same real Spark-X2.5-1.7B Q4_K_M GGUF completed text prefill/decode via llama.cpp Vulkan1 on Radeon 890M; the placement log assigns Spark layers to Vulkan1, not the installed RTX 5090. It returned `Paris` and `1511` on the named short/2,463-token inventory inputs. One warmup plus 20 uncached serial inventory requests were 20/20 correct, p50/p95 wall 2.18/2.20 s. Closing a stream after its first content delta was followed by a correct new request. This is outside Omni and has only a post-profile process-memory snapshot, no loading peak, device-memory attribution or sustained power/thermal check. | Add a bounded llama.cpp whole-model stage to Omni, then verify placement, state, memory admission, token quality, cancellation and full-request benefit against CPU; [standalone backend evidence](../../../e2e_expansion_20260923/evidence/spark_radeon890m_llamacpp/README.md). |
|
||||
| PC HX370 + Radeon 890M / Windows worker | Qwen3-TTS 0.6B CustomVoice | NOT_E2E_PROFILEABLE | No placement- and quality-verified whole-model graph bundle/stateful adapter for this model on this AMD route. Small backend graphs do not establish model support. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. |
|
||||
| PC HX370 + Radeon 890M / Windows worker | Qwen3-TTS 0.6B CustomVoice | SCOPED_E2E_STANDALONE_HYBRID | The Q8_0 CustomVoice GGUF and F16 codec GGUF completed two named text-to-WAV requests in standalone CrispASR on native Windows with Vulkan0 placed on Radeon 890M for the talker/codec and the 432 MB code predictor explicitly pinned to CPU FP32. Whisper tiny.en transcribed both sentences exactly (WER 0 as an intelligibility proxy). One warmup plus 20 serial resident-server requests for one repeated prompt had nearest-rank client wall p50/p95 3.310/3.345 s for identical 2.56 s PCM (RTF 1.29/1.31). The default Vulkan configuration actually fell back to CPU; forcing all stages to Vulkan ran away to the 360-frame cap. A separate DirectML route failed waveform quality. No Omni binding, playable streaming, loading peak, broad quality or sustained power/thermal run was verified. | Bind the whole hybrid session with explicit CPU+iGPU placement/admission and cancellation; validate quality, real-time playback and full-chain benefit before broader qualification; [joint backend evidence](../../../e2e_expansion_20260923/evidence/qwen_tts_radeon890m_joint/README.md), [failed DirectML route](../../../e2e_expansion_20260923/evidence/qwen_tts_radeon890m_directml/README.md). |
|
||||
| PC HX370 + Radeon 890M / Windows worker | Qwen3.8-27B | NOT_E2E_PROFILEABLE | FP32 448x448 vision tower: DirectML 85/113 nodes; normalized max error 9.095e-06 versus torch CPU. Historical component path, not full 27B or current graph-stage image-to-text integration. | Recover the hashed tower bundle and qualify its current Omni graph handoff with the language stage. |
|
||||
| PC HX370 + Radeon 890M / Windows worker | MiniCPM-o 4.5 | NOT_E2E_PROFILEABLE | No placement- and quality-verified whole-model graph bundle/stateful adapter for this model on this AMD route. Small backend graphs do not establish model support. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. |
|
||||
| PC HX370 + Radeon 890M / Windows worker | InternVLA-A1 | NOT_E2E_PROFILEABLE | No placement- and quality-verified whole-model graph bundle/stateful adapter for this model on this AMD route. Small backend graphs do not establish model support. | Supply and validate the missing matching artifact/backend, then run the complete specified workload. |
|
||||
|
||||
@@ -108,6 +108,7 @@ Model support is specific to the following pairings:
|
||||
| Spark-X2.5-1.7B INT8 | CPU execution; no NVIDIA dependency | Native Windows | Model path not yet qualified; CPU Add graph success is not text-model support. |
|
||||
| Qwen3-TTS-12Hz-0.6B CustomVoice | CPU + RTX 5090 Laptop GPU; both stages on GPU | WSL / vLLM CUDA | Current branch: real-weight audio streaming completes; playback stalls and remaining M2 gates stay open. |
|
||||
| Qwen3-TTS-12Hz-0.6B CustomVoice | CPU + RTX 5090 Laptop GPU; both stages on GPU | Native Windows / vLLM CUDA | Current branch: real-weight audio streaming completes; playback stalls and remaining M2 gates stay open. |
|
||||
| Qwen3-TTS-12Hz-0.6B CustomVoice, Q8_0 GGUF talker + F16 codec | CPU + Radeon 890M iGPU; code predictor on CPU FP32, talker/codec on Radeon | Native Windows / standalone CrispASR Vulkan | Two named text-to-WAV requests and a 20-request serial resident profile passed; [placement and quality evidence](../../benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/qwen_tts_radeon890m_joint/README.md). Still outside Omni, slower than real time and unqualified for streaming or sustained use. |
|
||||
| Qwen3.8-27B vision tower, FP32 ONNX | CPU + Radeon 890M iGPU | Windows / ORT DirectML | Historical component validation only; not the complete 27B model or a newly qualified graph-stage vision-to-language pipeline. |
|
||||
| Qwen3.8-27B vision tower, tested A16W8 exports | CPU + AMD NPU | Windows / ORT VitisAI | Tested whole-tower artifacts were rejected by NPU partitioning. This does not rule out other exports or smaller components. |
|
||||
| Qwen3.8-27B complete multimodal pipeline | CPU/iGPU/NPU, with optional discrete GPU | Target-specific | Fresh public Omni startup fails pipeline resolution on Windows/WSL; earlier bare-vLLM short-text loading is separate and not multimodal validation. |
|
||||
|
||||
@@ -56,6 +56,17 @@ 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.
|
||||
|
||||
A separate native Windows CPU+Radeon 890M Qwen3-TTS route now completes two
|
||||
named text-to-WAV requests in standalone CrispASR using a Q8_0 talker, F16
|
||||
codec, Vulkan talker/codec and CPU FP32 code predictor. Whisper tiny.en returned
|
||||
both reference sentences exactly; one warmup and 20 serial resident-server
|
||||
requests measured p50/p95 3.310/3.345 s for 2.56 s of audio. The
|
||||
[placement and failed-route record](../../benchmarks/edge_harness/results/e2e_expansion_20260923/evidence/qwen_tts_radeon890m_joint/README.md)
|
||||
shows that default Vulkan silently becomes CPU for this backend, all-Vulkan
|
||||
generation ran away, and DirectML did not pass quality. The explicit hybrid
|
||||
route remains outside Omni and slower than real time. Its CPU+iGPU evidence
|
||||
does not advance the NPU joint-execution row or mobile M2 gate.
|
||||
|
||||
## Architecture and prerequisites
|
||||
|
||||
Keep Omni's PipelineConfig, StageRuntime, StageClient, orchestration and admission
|
||||
|
||||
Reference in new issue
Block a user