Commit Graph
452 Commits
Author SHA1 Message Date
LauraGPT e7ddad713e feat: serve MOSS diarization across deployment stack
Signed-off-by: LauraGPT <[email protected]>
2026-09-01 03:02:33 +00:00
LauraGPT fa64d48b2c fix(subtitles): preserve timestamp word boundaries
Signed-off-by: LauraGPT <[email protected]>
2026-08-30 11:45:25 +00:00
LauraGPT b0cdfaa4a9 fix(subtitles): split overlong source cues
Signed-off-by: LauraGPT <[email protected]>
2026-08-30 09:33:49 +00:00
LauraGPT 88a553e709 fix(realtime): avoid false keepalive timeouts under load
Signed-off-by: LauraGPT <[email protected]>
2026-08-28 14:26:58 +00:00
LauraGPT d5e0eeefd1 feat(cli): group readable subtitle cues
Signed-off-by: LauraGPT <[email protected]>
2026-08-28 14:17:41 +00:00
张思远 (ZhangSiYuan)andClaude 0738581f4b feat(nano): support LoRA finetuning of the Qwen3 LLM (#3456)
* feat(nano): support LoRA finetuning of the Qwen3 LLM

The FunASR-Nano model config already declares llm_conf.use_lora and
llm_conf.lora_conf (r/lora_alpha/lora_dropout/target_modules), but nothing
consumed them: use_lora was silently ignored and training fell back to the
full-parameter LLM path. Wire it up:

- When llm_conf.use_lora is true, replace the LLM target Linear layers
  (default q_proj/v_proj) with lora.Linear adapters, sharing the frozen base
  weight and adding trainable lora_A/lora_B. The adapter params are created in
  the base weight's dtype (bf16), so the LoRA path does not depend on autocast.
- Pairs with the existing lora_only / mark_only_lora_as_trainable flow in
  train.py / train_ds.py: lora_only=true freezes every non-LoRA parameter for
  pure-LoRA training; lora_only=false + unfrozen encoder/adaptor conf keeps
  them trainable while LoRA-tweaking only the LLM.
- Checkpoints save the full state dict (unchanged base + adapter params), so a
  LoRA run can be resumed or decoded with the same use_lora=true config; for a
  standalone deployment checkpoint, fold with W' = W + alpha/r * B @ A.
- Add lora_finetune.sh and document the recipe in finetune.md / finetune_zh.md.

Validated end-to-end with the real model: 56 adapters injected (28 Qwen3
layers x q_proj+v_proj), optimizer updates only the 112 LoRA params, and a
2-step smoke training run through funasr-train-ds completes and saves a
checkpoint whose lora keys are bf16 and match the base dtype.

Co-Authored-By: Claude <[email protected]>

* test(nano): add offline unit tests for LoRA injection

Drive FunASRNano._apply_lora_to_llm against a tiny fake LLM mirroring the
Qwen3 parameter layout (layers.<i>.self_attn.{q,k,v,o}_proj / mlp.{gate,up,down}_proj).
No model download needed.

Covers the points requested in review:
1. only configured target modules are replaced;
2. the initial output matches the original linear layers (lora_B init zero);
3. base weights stay frozen while lora_A/lora_B are trainable (llm_conf.freeze
   applied before injection, as in the real init path);
4. a non-zero adapter survives a state-dict save/load round trip and train/eval
   transitions (including the eval-merge / train-unmerge convention);
5. the no-matching-target configuration is an explicit no-op with a warning.

Verified honest: on upstream main (no _apply_lora_to_llm) all 7 fail with
AttributeError; with the fix 7/7 pass. Full nano set: 34 passed.

Co-Authored-By: Claude <[email protected]>

---------

Co-authored-by: Claude <[email protected]>
2026-08-03 14:28:02 +08:00
zhifu gao 02cc93d11f Improve MCP discovery and release 0.1.2 (#3423)
Clarify the FunASR MCP tool contract for agent discovery, update the runtime to FunASR 1.3.29, and prepare the 0.1.2 Registry/GHCR release.
2026-07-26 20:07:31 +08:00
zhifu gao 70c868cf47 fix: limit vLLM VAD segments to 30 seconds (#3420)
Configure FSMN-VAD with a 30-second maximum segment duration and add a regression test. This fixes the long-audio omission reproduced from #3419.
2026-07-26 14:53:00 +08:00
zhifu gaoandzhifu gao 19a903fa87 Use QwenAudio canonical repository links (#3412)
Co-authored-by: zhifu gao <[email protected]>
2026-07-24 19:01:36 +08:00
zhifu gao eff1080856 docs: add SenseVoice continual fine-tuning guide (#3396) 2026-07-23 15:57:15 +08:00
zhifu gao c5fb295bac Document published MCP server release (#3390) 2026-07-23 12:29:34 +08:00
zhifu gao 147a132cf7 Harden MCP registry publication (#3389) 2026-07-23 12:02:35 +08:00
zhifu gaoandLauraGPT de5418575d Add OpenAI API Docker validation helper (#3371)
Co-authored-by: LauraGPT <[email protected]>
2026-07-23 06:49:57 +08:00
zhifu gao ca3ce33ff3 docs: require FunASR 1.3.26 for Nano guides
Align Nano docs with the 1.3.26 server hub fix release.
2026-07-23 00:46:26 +08:00
zhifu gao 876641e10d docs: require FunASR 1.3.25 for Nano guides 2026-07-22 23:29:02 +08:00
zhifu gaoandLauraGPT 5133663a9e feat: add realtime postprocess hotwords (#3317)
Co-authored-by: LauraGPT <[email protected]>
2026-07-22 23:05:54 +08:00
zhifu gao c812c139a1 docs: refresh remaining stale FunASR links
Refresh remaining stale public docs and clone links, with regression coverage.
2026-07-22 22:28:45 +08:00
zhifu gao 2509e13ed5 docs: add canonical Nano finetune Chinese guide path
Add canonical Chinese finetuning guide filename and preserve the old typo path as a pointer.
2026-07-22 22:19:25 +08:00
zhifu gao 82a4d67b12 docs: fix broken markdown links
Fix stale repository-local Markdown links and add a pytest guard for future docs link regressions.
2026-07-22 22:02:41 +08:00
zhifu gaoandLauraGPT 8ca8e03cd9 docs: require FunASR 1.3.23 for Nano guides (#3310)
Co-authored-by: LauraGPT <[email protected]>
2026-07-22 21:26:16 +08:00
zhifu gao 14c75fc1a2 docs: clarify realtime partial and hotword behavior
Clarify realtime WebSocket partial rendering and hotword-bias behavior in the quickstart docs.
2026-07-22 19:40:11 +08:00
zhifu gao f53fe68b1c docs: quote current FunASR install commands
Quote FunASR install specifiers and align Fun-ASR-Nano vLLM/finetune docs with the current 1.3.19 release floor.
2026-07-19 13:29:31 +08:00
zhifu gao d41ca43b33 Release FunASR 1.3.16 (#3246)
* release v1.3.16

* Package realtime WebSocket server
2026-07-18 02:00:57 +08:00
zhifu gaoandLauraGPT bd6e72142f Add client-driven realtime endpoints (#3245)
Co-authored-by: LauraGPT <[email protected]>
2026-07-17 23:14:42 +08:00
vishnupratap3790 ea6ea1e849 docs: separate Nano and MLT-Nano language scope (#3227)
Refs #3226
2026-07-15 07:51:35 +08:00
zhifu gao ddd9a3fada Publish FunASR MCP server to the official Registry (#3228)
Add versioned OCI metadata, GHCR and OIDC release automation, strict container smoke tests, and release documentation.
2026-07-15 05:27:12 +08:00
游雁 c2f2d2ed22 fix(mcp): honor model and language configuration 2026-07-14 11:13:04 +00:00
游雁 51ef095fc9 fix(mcp): use standard newline-delimited stdio 2026-07-14 03:52:38 +00:00
zhifu gao a53497b7ae fix: bound realtime websocket state for long sessions (#3214) 2026-07-14 01:38:15 +08:00
zhifu gao aefddc1088 fix: disable timestamps when CTC weights are missing (#3211)
Fail closed for native, remote-code, and vLLM Fun-ASR-Nano timestamp inference when checkpoint CTC weights are missing, partial, shape-mismatched, DDP-prefixed, or wrapped.

Fixes #3208.
2026-07-13 23:57:17 +08:00
zhifu gao 505455eb64 fix: accept float32 dtype in realtime websocket server (#3204)
Normalize the float32 CLI alias to fp32 before constructing AutoModelVLLM, and cover the resolved value with a parser regression test.\n\nFixes #3202.
2026-07-13 15:35:59 +08:00
游雁 8cfc4f7a98 docs: add Glama maintainer metadata 2026-07-10 04:34:41 +00:00
zhifu gao bb84bd8ab3 Promote live mcp.so FunASR MCP listing (#3197)
Link the live mcp.so listing from the MCP README and archive the directory submission as an external win.
2026-07-08 16:11:14 +08:00
zhifu gao 98a47e5211 Prepare MCP server for Registry OCI verification (#3147)
Add the official MCP Registry OCI ownership label and document the matching registry name for future publication.
2026-07-08 08:59:06 +08:00
zhifu gao 58047e7462 Fix Glama MCP manifest schema (#3146)
Point the FunASR MCP server manifest at the current Glama schema and declare the maintainer for ingestion.
2026-07-08 08:54:07 +08:00
zhifu gao 5e76cd1d4b Fix realtime benchmark final lag metric (#3124)
Exclude final websocket messages from realtime response lag metrics and document the non-final preview lag semantics.

Refs #3038
2026-07-08 02:01:02 +08:00
zhifu gao 92aca6b259 docs: update FunASR repository links
Update user-facing documentation links from alibaba-damo-academy/FunASR to modelscope/FunASR.
2026-07-07 18:11:41 +08:00
zhifu gao f87e86abde Fix Fun-ASR-Nano NPU autocast device selection (#3113)
Preserve supported accelerator device types, including npu, when choosing Fun-ASR-Nano autocast device type. This prevents npu devices from falling back to CPU autocast before real torch_npu execution can be validated.
2026-07-07 17:45:00 +08:00
zhifu gao ac84c4bf67 feat: expose realtime websocket keepalive options (#3121)
Expose ping interval, ping timeout, close timeout, and max message size options for long-lived realtime WebSocket deployments.
2026-07-07 17:21:32 +08:00
zhifu gao d8df61a17a docs: add realtime websocket benchmark (#3119)
Add a reusable benchmark client and documentation for measuring serve_realtime_ws.py under realtime WebSocket workloads.
2026-07-07 17:11:31 +08:00
zhifu gao cb7adc0184 Fix Fun-ASR-Nano stereo audio preprocessing (#3102)
Fixes #3102.
2026-07-07 14:43:47 +08:00
zhifu gao bc1087c39e Preserve speaker in OpenAI transcription segments (#3086)
* Preserve speaker in OpenAI transcription segments

* Tidy OpenAI speaker response test stub
2026-06-30 17:54:28 +08:00
zhifu gao 9715e22f24 Document Glama MCP submission checklist (#3084) 2026-06-30 17:25:45 +08:00
zhifu gao 0430ec2c2f Add Glama metadata for MCP server (#3076) 2026-06-30 15:20:45 +08:00
zhifu gao 40539a5bfe Add Docker entrypoint for MCP server listing (#3075) 2026-06-30 15:13:11 +08:00
zhifu gao 150e69dee2 Fix subtitle SRT timestamp generation
Request subtitle timestamps and avoid invalid zero-length SRT fallback cues.
2026-06-30 11:00:14 +08:00
zhifu gao e483164677 Improve realtime websocket multi-client defaults
Disable streaming SPK by default, keep bounded partial previews testable, and document multi-client tuning for the realtime WebSocket service.
2026-06-29 22:53:12 +08:00
zhifu gao 9b4f700426 Add Qwen3-ASR dependency guard
Add a runtime dependency guard for qwen-asr/transformers mismatches and update Qwen3-ASR install docs.
2026-06-29 22:52:44 +08:00
qiulang 8f8ce5f48b feat: add Qwen3-ASR streaming WebSocket server with notes (#3035)
Add a Qwen3-ASR streaming WebSocket server example, bilingual notes about VAD/STOP behavior, vLLM version constraints, model download guidance, and smoke tests for the example docs and exception logging.
2026-06-28 20:29:47 +08:00
zhifu gaoandLauraGPT f17ed679b0 feat(fun_asr_nano streaming): bound the partial re-decode window (--partial-window-sec) (#3032)
The realtime WS server's interim (partial) path re-encodes the entire growing
speech segment from its start on every chunk, so a length-L segment costs O(L^2)
total re-encoding. Under high concurrency this saturates the GPU and long-segment
requests time out (e.g. a 17-29s utterance failing at 48 concurrent streams).

Cap the interim re-decode to the most recent `--partial-window-sec` seconds
(default 15; lower to 8-10 for high concurrency). Final transcripts are unchanged
- completed VAD segments are still decoded in full by _decode_segment / the
is_final path; only the interim hypothesis is bounded.

Root cause and validation by @qiulang on issue #3006: he reproduced the failure
on an L20 (long audio, 48 concurrent streams), confirmed bounding the window
restores most of the concurrency, and pinpointed that the growing window (not
partial frequency) is the dominant load for this LLM-ASR. Thanks!

Co-authored-by: LauraGPT <[email protected]>
2026-06-25 18:17:53 +08:00