Commit Graph
5961 Commits
Author SHA1 Message Date
zhifu gao 460f006754 docs: surface merged speech-to-speech SenseVoice integration (#3743)
docs: surface merged speech-to-speech SenseVoice integration
2026-10-01 00:57:08 +08:00
LauraGPT a31746dea0 docs: surface merged speech-to-speech SenseVoice integration
Signed-off-by: LauraGPT <[email protected]>
2026-09-30 16:36:43 +00:00
Chi-Wei Lee be7557f27c fix: stop timestamp_sentence_en reusing a stale sentence start (#3741)
When punc_id_list is longer than timestamp_postprocessed (a mismatch
the function already logs a warning for), the entries past the end of
timestamp_postprocessed get timestamp=None from zip_longest. For the
sentence that starts on one of those entries, the is_sentence_start
flag was consumed unconditionally on the first iteration regardless of
whether timestamp was None, so sentence_start kept whatever value was
left over from the previous, unrelated sentence instead of being
reported as unknown.

The sibling function timestamp_sentence already handles this correctly
by resetting sentence_start to None after each flush and only setting
it once a real timestamp shows up. Mirror that logic here instead of
the one-shot is_sentence_start flag.

Before: a trailing sentence whose first word has no timestamp gets
start reused from the previous sentence (wrong, looks valid).
After: start is None for that sentence, matching timestamp_sentence.
2026-09-30 22:52:09 +08:00
zhifu gao 7b098acefc fix(auto): warn when unavailable accelerators fall back to CPU (#3742)
fix(auto): warn when unavailable accelerators fall back to CPU
2026-09-30 20:42:24 +08:00
LauraGPT 9c9067f334 fix(auto): warn when unavailable accelerators fall back to CPU
Signed-off-by: LauraGPT <[email protected]>
2026-09-30 12:02:57 +00:00
li-lizhe 7f85ddd299 fix(amp): resolve autocast/GradScaler device type for non-CUDA accelerators (#3735)
* fix(amp): resolve autocast/GradScaler device type for non-CUDA accelerators

funasr/utils/amp.py pinned device_type="cuda" in the torch.amp compatibility shim, so on Ascend NPU (and XPU/MPS) builds torch.amp only warned "CUDA is not available ... Disabling autocast" and the context became a no-op: use_fp16/use_bf16 training silently ran in float32 and GradScaler(enabled=True) was silently disabled.

Resolve the device type from the running accelerator (torch.accelerator), the same policy funasr/models/fun_asr_nano/device_utils.py already applies to the inference path, and keep "cuda" as the historical no-op default when no accelerator is available so CPU behaviour is unchanged. GradScaler prefers an accelerator-specific implementation (e.g. torch.npu.amp.GradScaler) when one exists.

Signed-off-by: li-lizhe <[email protected]>

* fix(amp): honour an explicit device before choosing the GradScaler implementation

An explicit device (positional or keyword) now selects the scaler for that
device instead of the active accelerator, so GradScaler(device="cpu") no longer
reaches torch.npu.amp.GradScaler (its constructor has no device parameter and
raised TypeError) and GradScaler("cpu") no longer consumed "cpu" as init_scale.
The device argument is dropped before dispatching to an accelerator-specific
scaler and forwarded unchanged to the generic one; torch.cpu.amp is no longer
mistaken for a backend-specific scaler. Explicit keyword/positional/torch.device
coverage added.

Signed-off-by: li-lizhe <[email protected]>

* fix(amp): bind the generic GradScaler signature before native dispatch

The accelerator scalers do not share the generic torch.amp.GradScaler
positional order: torch_npu inserts `dynamic` before `enabled`, so
forwarding the caller's positional tail unchanged turned
GradScaler("npu", 1024.0, 2.0, 0.5, 2000, False) into an enabled static
scaler while the keyword form kept working. Bind a call written against
the generic signature to its parameter names first, drop the `device`
the accelerator constructor does not accept, and forward the rest by
name. Calls that do not match the generic signature keep the previous
plain re-export behaviour.

Tests: cover the positional enabled=False/True tail against a strict
torch_npu-signature stand-in (a *args/**kwargs recorder cannot detect a
shifted argument slot).

Signed-off-by: li-lizhe <[email protected]>

* docs(amp): narrow the _generic_arguments docstring claim

Signed-off-by: li-lizhe <[email protected]>

---------

Signed-off-by: li-lizhe <[email protected]>
2026-09-30 16:48:49 +08:00
zhifu gao e9d002b54d docs: diagnose actual AutoModel GPU placement (#3740)
docs: diagnose actual AutoModel GPU placement
2026-09-30 15:37:12 +08:00
LauraGPT 03e18dccb1 docs: explain actual AutoModel device placement
Signed-off-by: LauraGPT <[email protected]>
2026-09-30 06:56:53 +00:00
zhifu gao 12e417f4fa Merge pull request #3736: correct LiteLLM website transcription route
Validate the combined website and SenseVoice tree against current main.

Signed-off-by: LauraGPT <[email protected]>
2026-09-29 14:43:39 +08:00
zhifu gao 15c1959811 Merge pull request #3737: preserve SenseVoice word boundaries
Normalize leading and standalone SentencePiece boundaries and add CPU timestamp regression coverage.

Signed-off-by: LauraGPT <[email protected]>
2026-09-29 14:26:04 +08:00
LauraGPT a57cc3f92a fix(sensevoice): keep words separate at standalone boundaries
Signed-off-by: LauraGPT <[email protected]>
2026-09-29 06:12:59 +00:00
LauraGPT 2ddabb2c91 fix(sensevoice): normalize first word before joining subpieces
Signed-off-by: LauraGPT <[email protected]>
2026-09-29 05:58:08 +00:00
LauraGPT f950854db3 fix(website): correct LiteLLM transcription route and guards
Signed-off-by: LauraGPT <[email protected]>
2026-09-29 03:10:14 +00:00
zhifu gao 55203a9995 feat(benchmark): report first nonempty transcript latency (#3734)
feat(benchmark): report first nonempty transcript latency
2026-09-28 21:57:23 +08:00
LauraGPT 99ef3b727b feat(benchmark): report first nonempty transcript latency
Signed-off-by: LauraGPT <[email protected]>
2026-09-28 13:36:31 +00:00
zhifu gao e1ceba0aa8 Merge pull request #3733 from modelscope/codex/speaker-overlap-accounting-20260928
fix: assign sentence speakers by total overlap without double counting
2026-09-28 20:55:07 +08:00
LauraGPT e7006a9315 fix: count speaker overlap once per diarization segment
Signed-off-by: LauraGPT <[email protected]>
2026-09-28 12:50:06 +00:00
da12182b6b Fix invalid escape sequences in text normalization and models (#3709)
Three modules use invalid escapes in non-raw string literals:
- fun_text_processing/text_normalization/normalize.py - \., \w
- funasr/models/fsmn_kws/encoder.py - \[
- funasr/models/fun_asr_nano/tools/format5res.py - \.

On Python 3.12+ each raises SyntaxWarning: invalid escape sequence on
import, and FunASR runs the 3.10-3.12 CI matrix. Escaping the
backslashes leaves every string value identical (ruff W605-style).


Claude-Session: https://claude.ai/code/session_014HBQNzAf5C2E3MiJC48HQw

Co-authored-by: Mehdi Boutayeb <[email protected]>
Co-authored-by: Claude Opus 4.8 <[email protected]>
2026-09-28 16:08:01 +08:00
Jingguo Yao 2d4566d4a4 Remove unused imports (#3731)
Removes two unused slice_padding_audio_samples imports.
2026-09-27 11:17:40 +08:00
YYDH 9e7f6af8c3 fix: avoid deep-copying the checkpoint in load_pretrained_model (#3729) 2026-09-26 18:56:23 +08:00
Bruce-YiiandBruce-Yii 41778c45de fix(nano): correct punctuation timestamps across VAD merges (#3703)
* fix(nano): correct punctuation timestamps across VAD merges

Anchor zero-acoustic-mass punctuation at the preceding spoken token end (FunASR #3702). Reviewed patch only.

* fix(nano): keep byte-fragment spoken timestamps

* test(nano): cover byte-fragment timestamp preservation

* fix(nano): preserve semantic symbol timestamp spans

* test(nano): preserve semantic symbol timestamp spans

---------

Signed-off-by: Bruce-Yii <[email protected]>
Co-authored-by: Bruce-Yii <[email protected]>
2026-09-25 10:16:47 +08:00
LiuZi816 3ff9259aad docs: 新增《在昇腾 NPU 上运行 FunASR》指南 (#3708)
* Create ascend_npu.md

* Update ascend_npu.md

* Update ascend_npu.md

* docs: 补全 funasr 1.3.14 声明依赖清单并区分镜像预装

补全 hydra-core、modelscope、huggingface_hub、safetensors、transformers、tiktoken 等全部声明依赖(取自 PyPI 1.3.14 元数据),注明目标版本;区分常见 NPU 镜像预装与需手动安装的包;标注此前 dry-run 解析出的 7 个包为该环境当次差异、非通用依赖表。回应 #3707 的审查意见。

* docs: 固定 funasr==1.3.14 并限定 torch 配对论述的适用范围

安装命令钉到 1.3.14,与依赖清单及验证环境一致;将已配对 torch 不被解析触碰的结论限定到 #3707 的 dry-run 环境与命令;写明 --no-deps 仅覆盖第一条命令、后续普通 pip 安装仍解析传递依赖,建议安装前 dry-run 检查或用 constraint 固定 torch。
2026-09-24 10:18:09 +08:00
zhifu gao 02f8b43fc9 docs(nano): clarify training-speed evidence and release scope (#3725)
docs(nano): clarify training-speed evidence and release scope
2026-09-21 19:42:39 +08:00
zhifu gao f027d65110 docs(nano): clarify training speed evidence and release scope
Signed-off-by: zhifu gao <[email protected]>
2026-09-21 11:36:49 +00:00
zhifu gao 8d8a1a6b6e docs: note mixed-device support in PyPI 1.4.16 (#3724)
docs: note mixed-device support in PyPI 1.4.16
2026-09-21 18:34:47 +08:00
zhifu gao 0aaf6652f6 docs: note mixed-device support in PyPI 1.4.16
Signed-off-by: zhifu gao <[email protected]>
2026-09-21 10:16:28 +00:00
li-lizhe bad0781a2e fix: use y.device instead of hardcoded .cuda() in data2vec compute_var (#3710)
* fix: use y.device instead of hardcoded .cuda() in data2vec compute_var

In compute_var(), zc = torch.tensor(y.size(0)).cuda() unconditionally
calls .cuda() which raises RuntimeError: Torch not compiled with CUDA
enabled on non-CUDA accelerators (Ascend NPU, XPU, HPU, MPS).

Use device=y.device to respect the input tensor's current device.

Signed-off-by: li-lizhe <[email protected]>

* test: add CPU/Gloo regression tests for data2vec compute_var

Cover both the uninitialized (no process group) branch and a real
2-rank Gloo process group with unequal local row counts, pinning the
device-agnostic contract introduced in the parent commit (PR #3710).

Signed-off-by: li-lizhe <[email protected]>

* fix(test): resolve compute_var import and f32_worker spawn pickle

* fix(test): ensure Manager and workers are cleaned up on failure paths

join(timeout) does not terminate a still-running worker, so a crashed or
hung rank could leak a subprocess on test failure. Wrap the two-rank
runner in try/finally that terminate()+join()s any alive worker and shuts
down the Manager.

Signed-off-by: li-lizhe <[email protected]>

---------

Signed-off-by: li-lizhe <[email protected]>
2026-09-21 10:28:58 +08:00
Hexu Zhao 782a7a99d5 [perf] Fun-ASR-Nano fine-tuning on B200: 0.244 s to 0.068 s per step at 1 GPU, mostly from cuDNN SDPA plan builds on every new batch shape (#3705)
* fun_asr_nano: opt-in scoped SDPA backends and compiled decoder for fine-tuning

* tests: FunASRNano opt-ins leave defaults untouched

* fun_asr_nano: declare the torch 2.3 floor the fine-tuning recipe needs
2026-09-21 10:20:05 +08:00
Xu Xiang 1878d61dbe fix(paraformer): correct timestamp alpha and peak argument order (#3716)
Pass CIF alpha weights and peak indices to the timestamp helper in its declared order and add boundary/content regressions. Fixes #3723.
2026-09-19 10:42:09 +08:00
Gmgge b096b7950f fix(campplus): bound clustering thread usage and spectrum work (#3699)
Apply ncpu to BLAS without rolling back torch OpenMP settings, compute only the required leading spectral pairs, and add regression coverage for repeated AutoModel construction and process-wide thread limits.
2026-09-19 10:32:10 +08:00
zhifu gao cf33286387 Record FunASR 1.4.16 release closeout (#3722)
Record the verified release, package, website deployment, announcement, and model-card audit in the community growth ledger.

Signed-off-by: LauraGPT <[email protected]>
2026-09-18 15:41:06 +08:00
zhifu gao acca7ea070 Publish FunASR 1.4.16 bilingual site guide (#3721)
Publish bilingual 1.4.16 release pages, catalogue and sitemap entries, and exact release-asset contracts.

Signed-off-by: LauraGPT <[email protected]>
2026-09-18 14:58:31 +08:00
zhifu gao 904cd18681 Release FunASR 1.4.16 (#3719)
Prepare the 1.4.16 Python release, synchronize four-language release entry points, and make the native Transformers site contract follow the current package version.

Signed-off-by: LauraGPT <[email protected]>
v1.4.16
2026-09-18 12:03:34 +08:00
zhifu gao 615ef059c9 Merge pull request #3714 from modelscope/codex/mixed-device-availability-20260916
docs: clarify mixed-device source version requirement
2026-09-16 12:55:18 +08:00
zhifu gao b2d63f021a docs: clarify mixed-device source version requirement
Signed-off-by: zhifu gao <[email protected]>
2026-09-16 04:21:01 +00:00
zhifu gao 4d8e08748c Merge pull request #3706 from damnwenxi/fix/submodel-device-placement
fix: honor submodel device placement across inference calls
2026-09-16 10:27:29 +08:00
LauraGPT 1605ad20a3 test: isolate optional clustering dependency
Signed-off-by: LauraGPT <[email protected]>
2026-09-16 02:21:55 +00:00
zhifu gao 6444e200ca Merge pull request #3713 from modelscope/codex/growth-target-strict-20260916
docs: correct strict ecosystem growth target
2026-09-16 08:11:58 +08:00
zhifu gao fc98a60342 docs: correct strict ecosystem growth target
Signed-off-by: zhifu gao <[email protected]>
2026-09-15 23:34:51 +00:00
zhifu gao 66eb99a3d2 Merge pull request #3712 from modelscope/codex/roadmap-status-20260916
docs: align bilingual roadmap with delivered milestones
2026-09-16 02:24:35 +08:00
zhifu gao 8181a0225e docs: align bilingual roadmap with delivered milestones
Signed-off-by: zhifu gao <[email protected]>
2026-09-15 17:47:50 +00:00
zhifu gao b07c5facc8 Merge pull request #3711 from modelscope/codex/sensevoice-punctuation-doc-20260915
docs(punctuation): clarify SenseVoice postprocessing
2026-09-15 23:14:39 +08:00
zhifu gao 42a7f02d93 test(punctuation): guard SenseVoice documentation on exact PR heads
Signed-off-by: zhifu gao <[email protected]>
2026-09-15 14:30:57 +00:00
zhifu gao 176e35ec7c docs(punctuation): clarify SenseVoice postprocessing
Signed-off-by: zhifu gao <[email protected]>
2026-09-15 14:26:43 +00:00
damnwenxi eee63614f0 test: avoid Python 3.11-only unittest cleanup API 2026-09-14 18:42:44 +08:00
damnwenxi aa353d6d22 fix: honor submodel device placement across inference calls 2026-09-14 09:20:40 +08:00
zhifu gao 486b4b7ceb docs: connect native Transformers guides to tested CUDA recipe (#3697)
Connect bilingual source guides to the tested canonical GPU example without changing CPU recipes or model capabilities.

Signed-off-by: LauraGPT <[email protected]>
2026-09-10 18:58:26 +08:00
zhifu gao 2f0de0ef52 Merge pull request #3696 from modelscope/codex/pages-sdk-entry-20260910
docs: connect Pages API references to practical guides
2026-09-10 17:33:30 +08:00
zhifu gao 87bcc4bcc5 docs: connect Pages API references to practical guides
Signed-off-by: zhifu gao <[email protected]>
2026-09-10 09:18:28 +00:00
zhifu gao c87086f1ce Merge pull request #3695 from modelscope/codex/sensevoice-alignment-docs-20260910
docs: clarify SenseVoice word timestamp alignment
2026-09-10 16:51:06 +08:00