33 Commits
Author SHA1 Message Date
Pascal 7b6ed4f6db codec: drop the fused streaming tail
The fused mode appended the codec stream tail to the predictor frame
graph, so one compute produced both a frame's codes and its 80 ms of
audio with no host round trip. The experiment applied to max_batch 1
with a streaming synthesis only, it cost throughput against the
buffered flush that stays the default, and it kept a second frame
graph, its ring inputs and an init flag alive for that single case. It
is not worth keeping.

Remove the tail helpers, the fused graph of CodePredGraphSet, the
codec_fused field of qt_init_params, the --codec-fused flag of both
tools and the harness switch that exercised it. The predictor frame
unroll and the in graph sampler are untouched.
2026-08-05 18:20:08 +02:00
Pascal abab6b3bf3 tests: refresh the clone grid logs 2026-07-30 23:05:37 +02:00
Pascal 9a9a425260 tests: exercise the fused decode in every cossim harness
Each harness re-runs the C++ side with --codec-fused after the
buffered run and gates on codes-full.bin equality between the two:
the decode path cannot change the predictor, so any divergence is a
bug. The fused run's perf lines land in the log as [Perf Fused] next
to the buffered ones, so every grid cell carries the buffered vs
fused comparison per backend and quant.

The fused audio itself is not scored here: greedy amplitudes vanish
in the streamed PCM_16 and the fused FP envelope has its own
validation against the stream path.
2026-07-30 22:54:44 +02:00
Pascal 13686e8d34 logs 2026-07-25 18:56:39 +02:00
Pascal d03ffb97f9 api: derived codec left context, chunk width hoisted to qt_init
The left context of the buffered chunked decode is no longer a caller
knob: it derives from the codec's own sliding window (2x144 frames),
placing the default decode at the residual floor of the split.
codec_chunk_sec moves from qt_tts_params to qt_init_params, resolved
once to frames at load. The mid-struct removal bumps the ABI to a
closed range [QT_ABI_MIN_VERSION, QT_ABI_VERSION] = [4, 4]; the probe
asserts both bounds reject through the range check.
2026-07-25 18:56:28 +02:00
Pascal ba4c7f7838 logs 2026-07-20 20:36:48 +02:00
Pascal 877d8e1389 logs 2026-07-20 19:27:39 +02:00
Pascal c39ef15bab logs 2026-07-05 10:25:31 +02:00
Pascal bcac46352e logs 2026-07-05 07:47:07 +02:00
Pascal f84fc05292 logs 2026-07-04 22:47:51 +02:00
Pascal 9dbe7ea26a tests: absolute paths are prohibited 2026-06-24 19:00:33 +02:00
Andres Marafioti 5ce30d34a4 Add voice reference extraction ABI 2026-06-24 17:18:32 +02:00
Pascal f3cfa5cf47 server: add OpenAI compatible TTS server (chunked PCM streaming, WAV one-shot) 2026-06-06 12:47:10 +02:00
Pascal 8aba0f012a logs 2026-05-31 17:49:31 +02:00
Pascal 199a65813a logs 2026-05-31 15:41:34 +02:00
Pascal 29a7fa0f97 test logs 2026-05-31 02:39:03 +02:00
smashingtags dc8d2d59a5 tests: add Intel Arc A310 SYCL generation log
Captured from LXC 140 on Proxmox 49: Intel Arc A310 (DG2, 4 GB),
oneAPI 2026.0, Level Zero 1.6.33578+15, Ubuntu 24.04.
0.6B-Base Q8_0, seed 42, 63 frames -> 5.04s WAV on SYCL0 backend.
2026-05-19 19:40:48 -04:00
Pascal 5523143942 tests 2026-05-15 00:02:37 +02:00
Pascal dda50c2225 codec: add chunked decode with rolling left context 2026-05-14 22:53:28 +02:00
Pascal b1339f7cae abi: drop QT_CODEC_SAMPLE_RATE macro, hardcode 24000 like omnivoice 2026-05-14 21:55:23 +02:00
Pascal 38bf6d762a abi, pipeline, cli: conform qwentts on omnivoice convention 2026-05-14 21:42:52 +02:00
Pascal 259e7059f6 align symbol naming on omnivoice convention 2026-05-14 18:09:07 +02:00
Pascal e8f1c2a053 nits 2026-05-14 16:47:45 +02:00
Pascal b1e864cb8d cli, facade: rename --ref-audio to --ref-wav, align with omnivoice convention 2026-05-14 15:46:46 +02:00
Pascal 6ad6a7db7a facade, abi: thin CLI on top of qwen_* public ABI, lock contract with C99 probe 2026-05-14 15:31:47 +02:00
Pascal eefb13043e tests logs 2026-05-11 16:27:12 +02:00
Pascal 42510fff59 tests logs 2026-05-11 13:38:21 +02:00
Pascal 59fda26827 tests logs 2026-05-11 07:23:36 +02:00
Pascal 7b9435c886 clone: mode B fix, librosa to torchaudio resample, plus SEANet bisection tooling 2026-05-10 22:11:45 +02:00
Pascal 7e89929a70 fix speaker encoder ECAPA forward cossim 0.86 -> 0.996
mel-spk and mel-mag dumps in speaker-encoder-extract.h applied an extra
ggml_transpose plus cont before write. Raw ggml ne=(C, T) already
streams as numpy [T, C], so the transpose was inverting axes vs the
python upstream. Removed it.
MelMag 0.04 -> 0.999, MelSpk 0.92 -> 0.998

spk_conv1d_same passed ggml_im2col a kernel ne=(K, 1, IC, 1) and an
input ne=(T_pad, 1, IC, 1) with IC in ne[2]. But the im2col impl reads
IC = b->ne[1] when is_2D=false, so it saw IC=1, wrote OW*K floats into
a buffer declared for OW*IC*K floats, and mul_mat consumed 99% garbage.
Moved IC into ne[1] for both kernel and input, which makes the impl
read the real IC and writes a buffer coherent with the declared ne. The
permute and the retranspose after pad become unnecessary, dropped both.
SpkFrontend 0.74 -> 0.994, SpeakerEmb 0.86 -> 0.996

Adds ECAPA bisection infrastructure : 4 stage out params in
speaker_encoder_forward (frontend, block3, mfa, asp), codec encoder
intermediate dumps in pipeline-codec.cpp (seanet-out, enc-transformer
out, codec-pre-fsq), matching pytorch hooks in debug-clone-cossim.py.
2026-05-10 20:56:14 +02:00
Pascal acb75fca36 tests 2026-05-10 17:24:33 +02:00
Pascal 4feb286f04 tests 2026-05-10 16:43:58 +02:00
Pascal add3f940a0 Initial release 2026-05-10 15:57:15 +02:00