Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/community_projects.md
Original file line number Diff line number Diff line change
Expand Up @@ -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). |
Expand Down
2 changes: 1 addition & 1 deletion docs/community_projects_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)。 |
Expand Down
4 changes: 2 additions & 2 deletions web-pages/product-site/content/legacy-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion web-pages/product-site/legacy/ecosystem.html
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ <h2>AI 平台与框架</h2>
<div class="card">
<div class="card-title"><a href="https://github.com/langflow-ai/langflow">Langflow</a></div>
<div class="card-stars">75K+ stars</div>
<div class="card-desc">可视化工作流与 Agent 平台,已通过 <a href="https://github.com/langflow-ai/langflow/pull/14225">#14225</a> 合并专用 FunASR speech-to-text 组件。默认连接本地 <code>/v1</code> 与 <code>sensevoice</code>,支持可选网关鉴权和语言选择;自托管服务启用 SSRF 防护时,请把服务主机加入 allow-list。</div>
<div class="card-desc">FunASR 转写组件已通过 <a href="https://github.com/langflow-ai/langflow/pull/14225">#14225</a> 合入 <code>release-1.13.0</code>;正式版 <code>Langflow 1.12.1</code> 和 <code>lfx-bundles 1.1.23</code> <strong>尚未包含</strong>该组件(2026-09-10 核验)。<a href="https://github.com/langflow-ai/langflow/blob/8a56d1b1c93c30661984f3626e8969e41cfcf10a/src/bundles/lfx-bundles/src/lfx_bundles/funasr/funasr_transcription.py">已审阅源码</a>默认使用 <code>/v1</code> 与 <code>sensevoice</code>,支持网关鉴权、语言选择和私有主机 SSRF allow-list。发行前可直接使用 <a href="https://github.com/modelscope/FunASR/tree/main/examples/openai_api">FunASR API</a>。</div>
<div><span class="card-tag">Workflow</span><span class="card-tag">Local FunASR</span><span class="card-tag">OpenAI 兼容</span></div>
</div>
<div class="card">
Expand Down
2 changes: 1 addition & 1 deletion web-pages/product-site/legacy/en/ecosystem.html
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ <h2>AI Platforms & Frameworks</h2>
<div class="card">
<div class="card-title"><a href="https://github.com/langflow-ai/langflow">Langflow</a></div>
<div class="card-stars">75K+ stars</div>
<div class="card-desc">A visual workflow and agent platform with a dedicated FunASR speech-to-text component merged in <a href="https://github.com/langflow-ai/langflow/pull/14225">#14225</a>. It defaults to local <code>/v1</code> and <code>sensevoice</code>, with optional gateway authentication and language selection; add a self-hosted service host to Langflow's SSRF allow-list when that protection is enabled.</div>
<div class="card-desc">FunASR transcription was merged into <code>release-1.13.0</code> via <a href="https://github.com/langflow-ai/langflow/pull/14225">#14225</a>, but is <strong>not included</strong> in stable <code>Langflow 1.12.1</code> or <code>lfx-bundles 1.1.23</code> (checked 2026-09-10). The <a href="https://github.com/langflow-ai/langflow/blob/8a56d1b1c93c30661984f3626e8969e41cfcf10a/src/bundles/lfx-bundles/src/lfx_bundles/funasr/funasr_transcription.py">reviewed source</a> defaults to <code>/v1</code> and <code>sensevoice</code>, with gateway auth, language selection and a private-host SSRF allow-list. Until its release, use the <a href="https://github.com/modelscope/FunASR/tree/main/examples/openai_api">FunASR API</a> directly.</div>
<div><span class="card-tag">Workflow</span><span class="card-tag">Local FunASR</span><span class="card-tag">OpenAI-compat</span></div>
</div>
<div class="card">
Expand Down
35 changes: 35 additions & 0 deletions web-pages/product-site/tests/test_legacy.py
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
Loading