From 4744ed7a05fd8db672b619b59c0906e2fd9d6078 Mon Sep 17 00:00:00 2001 From: zhifu gao Date: Wed, 9 Sep 2026 22:31:09 +0000 Subject: [PATCH] docs: clarify Langflow FunASR release availability Signed-off-by: zhifu gao --- docs/community_projects.md | 2 +- docs/community_projects_zh.md | 2 +- .../product-site/content/legacy-manifest.json | 4 +-- web-pages/product-site/legacy/ecosystem.html | 2 +- .../product-site/legacy/en/ecosystem.html | 2 +- web-pages/product-site/tests/test_legacy.py | 35 +++++++++++++++++++ 6 files changed, 41 insertions(+), 6 deletions(-) diff --git a/docs/community_projects.md b/docs/community_projects.md index d8bf30546..168cbdc38 100644 --- a/docs/community_projects.md +++ b/docs/community_projects.md @@ -26,7 +26,7 @@ These integrations are community-maintained. Their release cadence, hardware sup | [NarratoAI](https://github.com/linyqh/NarratoAI) | An AI video narration and editing app whose OpenAI-compatible transcription endpoint can point subtitle generation at a self-hosted FunASR service. | [FunASR subtitle service](https://github.com/linyqh/NarratoAI/blob/main/app/services/fun_asr_subtitle.py), [configuration example](https://github.com/linyqh/NarratoAI/blob/main/config.example.toml), and merged [#259](https://github.com/linyqh/NarratoAI/pull/259). | | [wyoming-faster-whisper](https://github.com/OHF-Voice/wyoming-faster-whisper) | A Wyoming protocol speech-to-text server with an optional FunASR backend, making SenseVoice/FunASR available to local voice-assistant deployments that speak Wyoming. | [FunASR handler](https://github.com/OHF-Voice/wyoming-faster-whisper/blob/master/wyoming_faster_whisper/funasr_handler.py), [model registry](https://github.com/OHF-Voice/wyoming-faster-whisper/blob/master/wyoming_faster_whisper/models.py), and merged [#95](https://github.com/OHF-Voice/wyoming-faster-whisper/pull/95). | | [Dify FunASR plugin](https://marketplace.dify.ai/plugin/langgenius/funasr) | The official Dify speech-to-text model provider for self-hosted FunASR endpoints. Marketplace version 0.1.1 includes SenseVoice, Fun-ASR-Nano, Paraformer, and Paraformer English presets with a 25 MB upload limit. | [Official plugin source](https://github.com/langgenius/dify-official-plugins/tree/main/models/funasr), [provider implementation](https://github.com/langgenius/dify-official-plugins/blob/main/models/funasr/provider/funasr.py), initial integration [#3281](https://github.com/langgenius/dify-official-plugins/pull/3281), and 0.1.1 release update [#3498](https://github.com/langgenius/dify-official-plugins/pull/3498). | -| [Langflow](https://github.com/langflow-ai/langflow) | A visual workflow and agent platform with a dedicated FunASR speech-to-text component for self-hosted OpenAI-compatible endpoints. It defaults to the local `/v1` route and `sensevoice`, supports optional gateway authentication and language selection, and documents the SSRF allow-list needed for private service hosts. | [FunASR component](https://github.com/langflow-ai/langflow/blob/main/src/bundles/lfx-bundles/src/lfx_bundles/funasr/funasr_transcription.py), [component tests](https://github.com/langflow-ai/langflow/blob/main/src/bundles/lfx-bundles/tests/test_funasr_transcription.py), and merged [#14225](https://github.com/langflow-ai/langflow/pull/14225). | +| [Langflow](https://github.com/langflow-ai/langflow) | FunASR transcription is merged into `release-1.13.0`, but is **not included** in stable Langflow `1.12.1` or `lfx-bundles 1.1.23` (checked 2026-09-10). The component defaults to `/v1` and `sensevoice`, with optional gateway authentication, language selection and a private-host SSRF allow-list. Until its release, use the FunASR API directly; a merged PR is not an installed component. | [Reviewed component](https://github.com/langflow-ai/langflow/blob/8a56d1b1c93c30661984f3626e8969e41cfcf10a/src/bundles/lfx-bundles/src/lfx_bundles/funasr/funasr_transcription.py), [component tests](https://github.com/langflow-ai/langflow/blob/8a56d1b1c93c30661984f3626e8969e41cfcf10a/src/bundles/lfx-bundles/tests/test_funasr_transcription.py), merged [#14225](https://github.com/langflow-ai/langflow/pull/14225), and [FunASR API quickstart](https://github.com/modelscope/FunASR/tree/main/examples/openai_api). | | [RAGFlow](https://github.com/infiniflow/ragflow) | A Retrieval-Augmented Generation and agent platform with a local FunASR / SenseVoice speech-to-text provider for self-hosted document and media ingestion workflows, plus hosted Fun-ASR-Flash speech-to-text through the Tongyi-Qianwen provider. | [Provider registration](https://github.com/infiniflow/ragflow/blob/main/rag/llm/sequence2txt_model.py), [supported models docs](https://github.com/infiniflow/ragflow/blob/main/docs/guides/models/supported_models.mdx), merged [#16473](https://github.com/infiniflow/ragflow/pull/16473), and merged [#16844](https://github.com/infiniflow/ragflow/pull/16844). | | [LiveTalking](https://github.com/lipku/LiveTalking) | A real-time interactive digital-human server with a local FunASR/SenseVoice ASR server path; the merged fix serializes shared model access so concurrent requests do not race during lazy model loading or `generate()`. | [ASR server](https://github.com/lipku/LiveTalking/blob/main/server/asr_server.py), [project README](https://github.com/lipku/LiveTalking#readme), and merged [#611](https://github.com/lipku/LiveTalking/pull/611). | | [Sokuji](https://github.com/kizuna-ai-lab/sokuji) | A live speech translation app whose local inference sidecar supports GPU-native SenseVoice through FunASR plus built-in offline Fun-ASR-Nano and Fun-ASR-MLT-Nano catalog cards for CPU/GPU ASR. | [Sidecar model catalog](https://github.com/kizuna-ai-lab/sokuji/blob/main/sidecar/sokuji_sidecar/catalog.py), [native model catalog](https://github.com/kizuna-ai-lab/sokuji/blob/main/src/lib/local-inference/native/nativeCatalog.ts), merged [#268](https://github.com/kizuna-ai-lab/sokuji/pull/268), merged [#270](https://github.com/kizuna-ai-lab/sokuji/pull/270), and merged [#329](https://github.com/kizuna-ai-lab/sokuji/pull/329). | diff --git a/docs/community_projects_zh.md b/docs/community_projects_zh.md index 4e81b15df..c23927a30 100644 --- a/docs/community_projects_zh.md +++ b/docs/community_projects_zh.md @@ -26,7 +26,7 @@ | [NarratoAI](https://github.com/linyqh/NarratoAI) | AI 视频解说与剪辑应用,可通过 OpenAI 兼容转写 endpoint,把字幕生成连接到自托管 FunASR 服务。 | [FunASR 字幕服务](https://github.com/linyqh/NarratoAI/blob/main/app/services/fun_asr_subtitle.py)、[配置示例](https://github.com/linyqh/NarratoAI/blob/main/config.example.toml) 和已合并 [#259](https://github.com/linyqh/NarratoAI/pull/259)。 | | [wyoming-faster-whisper](https://github.com/OHF-Voice/wyoming-faster-whisper) | Wyoming 协议 speech-to-text server,提供可选 FunASR backend,让本地语音助手和 Home Assistant 相关部署可以通过 Wyoming 使用 SenseVoice/FunASR。 | [FunASR handler](https://github.com/OHF-Voice/wyoming-faster-whisper/blob/master/wyoming_faster_whisper/funasr_handler.py)、[模型注册](https://github.com/OHF-Voice/wyoming-faster-whisper/blob/master/wyoming_faster_whisper/models.py) 和已合并 [#95](https://github.com/OHF-Voice/wyoming-faster-whisper/pull/95)。 | | [Dify FunASR 插件](https://marketplace.dify.ai/plugin/langgenius/funasr) | 面向自托管 FunASR endpoint 的 Dify 官方 speech-to-text 模型 provider。Marketplace 0.1.1 内置 SenseVoice、Fun-ASR-Nano、Paraformer 和 Paraformer English 配置,上传上限为 25 MB。 | [官方插件源码](https://github.com/langgenius/dify-official-plugins/tree/main/models/funasr)、[provider 实现](https://github.com/langgenius/dify-official-plugins/blob/main/models/funasr/provider/funasr.py)、初始集成 [#3281](https://github.com/langgenius/dify-official-plugins/pull/3281) 和 0.1.1 发布更新 [#3498](https://github.com/langgenius/dify-official-plugins/pull/3498)。 | -| [Langflow](https://github.com/langflow-ai/langflow) | 可视化工作流与 Agent 平台,提供面向自托管 OpenAI 兼容 endpoint 的专用 FunASR speech-to-text 组件。默认连接本地 `/v1` 路径与 `sensevoice`,支持可选网关鉴权和语言选择,并说明私有服务主机所需的 SSRF allow-list 配置。 | [FunASR 组件](https://github.com/langflow-ai/langflow/blob/main/src/bundles/lfx-bundles/src/lfx_bundles/funasr/funasr_transcription.py)、[组件测试](https://github.com/langflow-ai/langflow/blob/main/src/bundles/lfx-bundles/tests/test_funasr_transcription.py) 和已合并 [#14225](https://github.com/langflow-ai/langflow/pull/14225)。 | +| [Langflow](https://github.com/langflow-ai/langflow) | FunASR 转写组件已合入 `release-1.13.0`,但正式版 Langflow `1.12.1` 和 `lfx-bundles 1.1.23` **尚未包含**该组件(核验于 2026-09-10)。组件默认连接 `/v1` 与 `sensevoice`,支持可选网关鉴权、语言选择和私有主机 SSRF allow-list。发行前可直接使用 FunASR API;PR 已合并不等于安装后已有该组件。 | [已审阅组件](https://github.com/langflow-ai/langflow/blob/8a56d1b1c93c30661984f3626e8969e41cfcf10a/src/bundles/lfx-bundles/src/lfx_bundles/funasr/funasr_transcription.py)、[组件测试](https://github.com/langflow-ai/langflow/blob/8a56d1b1c93c30661984f3626e8969e41cfcf10a/src/bundles/lfx-bundles/tests/test_funasr_transcription.py)、已合并 [#14225](https://github.com/langflow-ai/langflow/pull/14225) 和 [FunASR API 入门](https://github.com/modelscope/FunASR/tree/main/examples/openai_api)。 | | [RAGFlow](https://github.com/infiniflow/ragflow) | RAG 与 Agent 平台,提供本地 FunASR / SenseVoice speech-to-text provider,适合自托管文档和媒体摄取工作流;同时可通过 Tongyi-Qianwen provider 使用托管 Fun-ASR-Flash speech-to-text。 | [Provider 注册](https://github.com/infiniflow/ragflow/blob/main/rag/llm/sequence2txt_model.py)、[支持模型文档](https://github.com/infiniflow/ragflow/blob/main/docs/guides/models/supported_models.mdx)、已合并 [#16473](https://github.com/infiniflow/ragflow/pull/16473) 和已合并 [#16844](https://github.com/infiniflow/ragflow/pull/16844)。 | | [LiveTalking](https://github.com/lipku/LiveTalking) | 实时交互数字人服务,包含本地 FunASR/SenseVoice ASR server 路径;已合并修复会串行化共享模型访问,避免并发请求在懒加载模型或 `generate()` 时竞争。 | [ASR server](https://github.com/lipku/LiveTalking/blob/main/server/asr_server.py)、[项目 README](https://github.com/lipku/LiveTalking#readme) 和已合并 [#611](https://github.com/lipku/LiveTalking/pull/611)。 | | [Sokuji](https://github.com/kizuna-ai-lab/sokuji) | 实时语音翻译应用,本地推理 sidecar 支持通过 FunASR 使用 GPU-native SenseVoice,并在内置模型目录中提供离线 CPU/GPU Fun-ASR-Nano 与 Fun-ASR-MLT-Nano ASR。 | [Sidecar 模型目录](https://github.com/kizuna-ai-lab/sokuji/blob/main/sidecar/sokuji_sidecar/catalog.py)、[native model catalog](https://github.com/kizuna-ai-lab/sokuji/blob/main/src/lib/local-inference/native/nativeCatalog.ts)、已合并 [#268](https://github.com/kizuna-ai-lab/sokuji/pull/268)、已合并 [#270](https://github.com/kizuna-ai-lab/sokuji/pull/270) 和已合并 [#329](https://github.com/kizuna-ai-lab/sokuji/pull/329)。 | diff --git a/web-pages/product-site/content/legacy-manifest.json b/web-pages/product-site/content/legacy-manifest.json index 030b3a13f..3815e2ab4 100644 --- a/web-pages/product-site/content/legacy-manifest.json +++ b/web-pages/product-site/content/legacy-manifest.json @@ -51,7 +51,7 @@ "css/index.1682178c.css": "b5f6034ce886c25773928c114e4290d1c491a3d081677b488810198efd76b4e1", "decoder.js": "f2023a28036b1ff58e5bdabbb72ea427f8faaf60e89acd78ff183c313bdb0a2c", "donors.html": "eec6b789b29c27d372925ae0ad3e13d4c6e62978b3c38c4da9e3aec129f10934", - "ecosystem.html": "9b73450837efdc36805d0eb7a05ccfd855f3af3f1fdf4f0a5312341a7fad13ec", + "ecosystem.html": "de151aebb8d807b21e719d59a54766f4998945310c97bbabf2ac31dae5c0a283", "en/blog/cantonese-speech-recognition.html": "b9bd146198206f781c37f341c370a690dc83cd7163334e34b4e7f65e69af8ff2", "en/blog/chinese-speech-recognition.html": "16b68bd2a1122236c580c62275002ae2c0875ca14e32686e88d3b5ccfa9f56ef", "en/blog/fun-asr-nano-guide.html": "1746c708bd0606188de4266d8255984dd9e14634af33c54ad65a5f05b767be1b", @@ -88,7 +88,7 @@ "en/blog/voice-activity-detection-python.html": "d12f5d0f4ae07c3434f6188d12f5603b8abb9578413b79133668638d1c5e18a7", "en/blog/which-funasr-model.html": "1207180aa929a3aa51db136c1098f4edc8f07405e2b56fe033998bf996f8ec7f", "en/donors.html": "eacb7f9434b1b29e13e9b0175bb9680556ee72ab4dbd155e68f9c912eb0212b1", - "en/ecosystem.html": "f02ee516440dfc3757165df801fbf93b403b2ef1fdbee1a2dee26cd2a3ef9fa3", + "en/ecosystem.html": "81cec9464db159189ef29df884b124c795fce01ef08bfaae03d982696de13701", "en/index.html": "d86effc3bf4d218eabd465cbbe026f62c98dd50110ddd58251d9d271a64882a2", "en/llama-cpp.html": "dbfbd125ebbf07f7d923c91b122818f8b09484ce54c1e80eba66a89d22dfb5b4", "en/models.html": "9806d01ba1807c2a6a88f7232102e185426fb8458bf51e1d7a8ce872352e1fd1", diff --git a/web-pages/product-site/legacy/ecosystem.html b/web-pages/product-site/legacy/ecosystem.html index 0d1efd81e..949c7e272 100644 --- a/web-pages/product-site/legacy/ecosystem.html +++ b/web-pages/product-site/legacy/ecosystem.html @@ -246,7 +246,7 @@

AI 平台与框架

75K+ stars
-
可视化工作流与 Agent 平台,已通过 #14225 合并专用 FunASR speech-to-text 组件。默认连接本地 /v1sensevoice,支持可选网关鉴权和语言选择;自托管服务启用 SSRF 防护时,请把服务主机加入 allow-list。
+
FunASR 转写组件已通过 #14225 合入 release-1.13.0;正式版 Langflow 1.12.1lfx-bundles 1.1.23 尚未包含该组件(2026-09-10 核验)。已审阅源码默认使用 /v1sensevoice,支持网关鉴权、语言选择和私有主机 SSRF allow-list。发行前可直接使用 FunASR API
WorkflowLocal FunASROpenAI 兼容
diff --git a/web-pages/product-site/legacy/en/ecosystem.html b/web-pages/product-site/legacy/en/ecosystem.html index bfd6d11b3..5f252de3d 100644 --- a/web-pages/product-site/legacy/en/ecosystem.html +++ b/web-pages/product-site/legacy/en/ecosystem.html @@ -247,7 +247,7 @@

AI Platforms & Frameworks

75K+ stars
-
A visual workflow and agent platform with a dedicated FunASR speech-to-text component merged in #14225. It defaults to local /v1 and sensevoice, with optional gateway authentication and language selection; add a self-hosted service host to Langflow's SSRF allow-list when that protection is enabled.
+
FunASR transcription was merged into release-1.13.0 via #14225, but is not included in stable Langflow 1.12.1 or lfx-bundles 1.1.23 (checked 2026-09-10). The reviewed source defaults to /v1 and sensevoice, with gateway auth, language selection and a private-host SSRF allow-list. Until its release, use the FunASR API directly.
WorkflowLocal FunASROpenAI-compat
diff --git a/web-pages/product-site/tests/test_legacy.py b/web-pages/product-site/tests/test_legacy.py index ccefd6c2c..17d37d003 100644 --- a/web-pages/product-site/tests/test_legacy.py +++ b/web-pages/product-site/tests/test_legacy.py @@ -196,6 +196,41 @@ def test_openmaic_ecosystem_entry_is_merged_attributed_and_bounded(): assert 'https://github.com/THU-MAIC/OpenMAIC/pull/1044' in text +def test_langflow_entries_distinguish_release_branch_from_published_packages(): + revision = '8a56d1b1c93c30661984f3626e8969e41cfcf10a' + source = ( + f'https://github.com/langflow-ai/langflow/blob/{revision}/' + 'src/bundles/lfx-bundles/src/lfx_bundles/funasr/funasr_transcription.py' + ) + api_guide = 'https://github.com/modelscope/FunASR/tree/main/examples/openai_api' + for language in ('en', 'zh'): + page = LEGACY / ('en/ecosystem.html' if language == 'en' else 'ecosystem.html') + soup = BeautifulSoup(page.read_text(encoding='utf-8'), 'html.parser') + cards = [ + card for card in soup.select('.card') + if card.select_one('.card-title').get_text(' ', strip=True) == 'Langflow' + ] + assert len(cards) == 1 + card = cards[0] + text = card.get_text(' ', strip=True) + links = {link.get('href') for link in card.select('a[href]')} + assert {source, api_guide} <= links + assert 'release-1.13.0' in text + assert '1.12.1' in text and '1.1.23' in text + assert '2026-09-10' in text + assert ('尚未包含' in text) if language == 'zh' else ('not included' in text) + assert 'SSRF' in text + + name = 'community_projects.md' if language == 'en' else 'community_projects_zh.md' + document = (SITE_ROOT.parents[1] / 'docs' / name).read_text(encoding='utf-8') + row = next(line for line in document.splitlines() if '[Langflow](' in line) + assert source in row and api_guide in row + assert 'release-1.13.0' in row + assert '1.12.1' in row and '1.1.23' in row + assert ('尚未包含' in row) if language == 'zh' else ('not included' in row) + assert 'https://github.com/langflow-ai/langflow/blob/main/' not in row + + def test_recent_merged_ecosystem_integrations_are_bilingual_and_attributed(): pages = { 'zh': LEGACY / 'ecosystem.html',