Merge pull request #3501 from modelscope/codex/docs-mlx-ecosystem-20260817

docs: publish MLX Audio Fun-ASR integration
This commit is contained in:
zhifu gao
2026-08-17 06:09:18 +08:00
committed by GitHub
7 changed files with 85 additions and 2 deletions
+1
View File
@@ -39,6 +39,7 @@ These integrations are community-maintained. Their release cadence, hardware sup
| Project | What is integrated | Start here |
|---|---|---|
| [Xinference](https://github.com/xorbitsai/inference) | Built-in audio model specifications for SenseVoiceSmall, Fun-ASR-Nano-2512, and Fun-ASR-MLT-Nano-2512 through Xinference's unified inference API. | [Audio model specifications](https://github.com/xorbitsai/inference/blob/main/xinference/model/audio/model_spec.json) and the FunASR 1.3 compatibility update in merged [#5140](https://github.com/xorbitsai/inference/pull/5140). |
| [MLX Audio](https://github.com/Blaizzy/mlx-audio) | Apple Silicon-native Fun-ASR-Nano conversion and transcription through Python, CLI, and the OpenAI-compatible `POST /v1/audio/transcriptions` endpoint, including language hints and hotwords/context. The current public checkpoint path is transcription-only: it emits no timestamps, and VAD or diarization must run separately. | [Fun-ASR-Nano model guide](https://github.com/Blaizzy/mlx-audio/blob/main/docs/models/stt/fun-asr-nano.md), [server guide](https://github.com/Blaizzy/mlx-audio/blob/main/docs/guides/web-ui-api-server.md), and merged hotword support [#885](https://github.com/Blaizzy/mlx-audio/pull/885). |
| [Optimum Intel](https://github.com/huggingface/optimum-intel) | OpenVINO export and inference support for Fun-ASR models through Hugging Face Optimum Intel, including FunASR-specific modeling and ASR/export/quantization coverage. | [FunASR OpenVINO modeling](https://github.com/huggingface/optimum-intel/blob/main/optimum/intel/openvino/modeling_funasr.py), [supported models docs](https://github.com/huggingface/optimum-intel/blob/main/docs/source/openvino/models.mdx), and merged [#1801](https://github.com/huggingface/optimum-intel/pull/1801). |
| [OpenVINO Notebooks](https://github.com/openvinotoolkit/openvino_notebooks) | Official OpenVINO tutorial material for FunASR-Nano, including helper code and NPU device fixes for running the notebook on Intel acceleration paths. | [FunASR-Nano notebook](https://github.com/openvinotoolkit/openvino_notebooks/tree/latest/notebooks/funasr-nano), [OpenVINO FunASR helper](https://github.com/openvinotoolkit/openvino_notebooks/blob/latest/notebooks/funasr-nano/ov_funasr_helper.py), merged [#3497](https://github.com/openvinotoolkit/openvino_notebooks/pull/3497), and NPU fix [#3517](https://github.com/openvinotoolkit/openvino_notebooks/pull/3517). |
| [SGLang Omni](https://github.com/sgl-project/sglang-omni) | A multi-stage pipeline runtime for omni models with built-in Fun-ASR model support, OpenAI-compatible serving, cookbook docs, benchmark tasks, and formatted stream-output tests. | [Fun-ASR cookbook](https://github.com/sgl-project/sglang-omni/blob/main/docs/cookbook/fun_asr.md), [Fun-ASR model runtime](https://github.com/sgl-project/sglang-omni/tree/main/sglang_omni/models/fun_asr), merged [#1078](https://github.com/sgl-project/sglang-omni/pull/1078), and merged review-fix [#1079](https://github.com/sgl-project/sglang-omni/pull/1079). |
+1
View File
@@ -39,6 +39,7 @@
| 项目 | 已集成能力 | 从这里开始 |
|---|---|---|
| [Xinference](https://github.com/xorbitsai/inference) | 通过 Xinference 统一推理 API 提供 SenseVoiceSmall、Fun-ASR-Nano-2512 和 Fun-ASR-MLT-Nano-2512 内置音频模型规格。 | [音频模型规格](https://github.com/xorbitsai/inference/blob/main/xinference/model/audio/model_spec.json) 和已合并 [#5140](https://github.com/xorbitsai/inference/pull/5140) 中的 FunASR 1.3 兼容性更新。 |
| [MLX Audio](https://github.com/Blaizzy/mlx-audio) | 面向 Apple Silicon 的原生 MLX Fun-ASR-Nano 转换与转写路径,覆盖 Python、CLI 和 OpenAI 兼容的 `POST /v1/audio/transcriptions`,支持语种提示与 hotwords/context。当前公开 checkpoint 路径仅转写、无时间戳;VAD 与说话人分离需要在外部完成。 | [Fun-ASR-Nano 模型指南](https://github.com/Blaizzy/mlx-audio/blob/main/docs/models/stt/fun-asr-nano.md)、[服务端指南](https://github.com/Blaizzy/mlx-audio/blob/main/docs/guides/web-ui-api-server.md) 和 hotword 支持已合并 [#885](https://github.com/Blaizzy/mlx-audio/pull/885)。 |
| [Optimum Intel](https://github.com/huggingface/optimum-intel) | 通过 Hugging Face Optimum Intel 支持 Fun-ASR 模型的 OpenVINO 导出与推理,包括 FunASR 专用 modeling 代码以及 ASR、export、quantization 覆盖。 | [FunASR OpenVINO modeling](https://github.com/huggingface/optimum-intel/blob/main/optimum/intel/openvino/modeling_funasr.py)、[支持模型文档](https://github.com/huggingface/optimum-intel/blob/main/docs/source/openvino/models.mdx) 和已合并 [#1801](https://github.com/huggingface/optimum-intel/pull/1801)。 |
| [OpenVINO Notebooks](https://github.com/openvinotoolkit/openvino_notebooks) | OpenVINO 官方 FunASR-Nano 教程资料,包含 helper 代码和 NPU device 修复,方便用户在 Intel 加速路径上运行 notebook。 | [FunASR-Nano notebook](https://github.com/openvinotoolkit/openvino_notebooks/tree/latest/notebooks/funasr-nano)、[OpenVINO FunASR helper](https://github.com/openvinotoolkit/openvino_notebooks/blob/latest/notebooks/funasr-nano/ov_funasr_helper.py)、已合并 [#3497](https://github.com/openvinotoolkit/openvino_notebooks/pull/3497) 和 NPU 修复 [#3517](https://github.com/openvinotoolkit/openvino_notebooks/pull/3517)。 |
| [SGLang Omni](https://github.com/sgl-project/sglang-omni) | 面向 omni models 的 multi-stage pipeline runtime,已内置 Fun-ASR 模型支持、OpenAI 兼容服务、cookbook 文档、benchmark 任务和格式化后的 stream-output 测试。 | [Fun-ASR cookbook](https://github.com/sgl-project/sglang-omni/blob/main/docs/cookbook/fun_asr.md)、[Fun-ASR 模型 runtime](https://github.com/sgl-project/sglang-omni/tree/main/sglang_omni/models/fun_asr)、已合并 [#1078](https://github.com/sgl-project/sglang-omni/pull/1078) 和 review-fix 已合并 [#1079](https://github.com/sgl-project/sglang-omni/pull/1079)。 |
@@ -39,7 +39,7 @@
"css/index.1682178c.css": "b5f6034ce886c25773928c114e4290d1c491a3d081677b488810198efd76b4e1",
"decoder.js": "f2023a28036b1ff58e5bdabbb72ea427f8faaf60e89acd78ff183c313bdb0a2c",
"donors.html": "eec6b789b29c27d372925ae0ad3e13d4c6e62978b3c38c4da9e3aec129f10934",
"ecosystem.html": "35c5507fc3cabb519aaa657208e187c44e323f3115befab11af262afa836abbf",
"ecosystem.html": "ae547554ccffe30436109c95313250f908826ee4c51494a5856e4f0dd0cc37aa",
"en/blog/cantonese-speech-recognition.html": "b9bd146198206f781c37f341c370a690dc83cd7163334e34b4e7f65e69af8ff2",
"en/blog/chinese-speech-recognition.html": "16b68bd2a1122236c580c62275002ae2c0875ca14e32686e88d3b5ccfa9f56ef",
"en/blog/fun-asr-nano-guide.html": "1746c708bd0606188de4266d8255984dd9e14634af33c54ad65a5f05b767be1b",
@@ -71,7 +71,7 @@
"en/blog/voice-activity-detection-python.html": "d12f5d0f4ae07c3434f6188d12f5603b8abb9578413b79133668638d1c5e18a7",
"en/blog/which-funasr-model.html": "1207180aa929a3aa51db136c1098f4edc8f07405e2b56fe033998bf996f8ec7f",
"en/donors.html": "eacb7f9434b1b29e13e9b0175bb9680556ee72ab4dbd155e68f9c912eb0212b1",
"en/ecosystem.html": "93e688e4c7274a06e3bae0c9aef60251419fa1bb7c72352ea74607fde69c883d",
"en/ecosystem.html": "9e761043c8e20fa7d876edb4a83592edd1bb4c74e8a88a6bf58cd19d04624965",
"en/index.html": "d86effc3bf4d218eabd465cbbe026f62c98dd50110ddd58251d9d271a64882a2",
"en/llama-cpp.html": "dbfbd125ebbf07f7d923c91b122818f8b09484ce54c1e80eba66a89d22dfb5b4",
"en/models.html": "321a63caace107d5ce6d470948c2f5954f2d8e25306d8227b4a85ec3663ad49e",
@@ -354,6 +354,12 @@ footer a{color:#60a5fa}
<div><span class="card-tag">Fun-ASR-Nano</span><span class="card-tag">C++ / GGML</span></div>
</div>
<div class="card">
<div class="card-title"><a href="https://github.com/Blaizzy/mlx-audio">MLX Audio</a></div>
<div class="card-stars">7.7K+ stars</div>
<div class="card-desc">面向 Apple Silicon 的原生 MLX 音频运行时。主分支已提供 <a href="https://github.com/Blaizzy/mlx-audio/blob/main/docs/models/stt/fun-asr-nano.md">Fun-ASR-Nano 模型转换、Python/CLI 与 OpenAI 兼容转写</a>,并在 <a href="https://github.com/Blaizzy/mlx-audio/pull/885">#885</a> 合并统一 hotwords/context 支持。当前路径仅转写、无时间戳,VAD 与说话人分离需外置;模型范围见 <a href="/go/fun-asr">Fun-ASR 仓库</a>。</div>
<div><span class="card-tag">Apple Silicon</span><span class="card-tag">Fun-ASR-Nano</span><span class="card-tag">OpenAI 兼容</span></div>
</div>
<div class="card">
<div class="card-title"><a href="https://github.com/RapidAI/RapidASR">RapidASR</a></div>
<div class="card-stars">608 stars</div>
<div class="card-desc">跨平台 ASR 推理库,基于 ONNX Runtime 和 FunASR。开箱即用,支持中英文混合识别。</div>
@@ -355,6 +355,12 @@ footer a{color:#60a5fa}
<div><span class="card-tag">Fun-ASR-Nano</span><span class="card-tag">C++ / GGML</span></div>
</div>
<div class="card">
<div class="card-title"><a href="https://github.com/Blaizzy/mlx-audio">MLX Audio</a></div>
<div class="card-stars">7.7K+ stars</div>
<div class="card-desc">An Apple Silicon-native MLX audio runtime. Main now documents <a href="https://github.com/Blaizzy/mlx-audio/blob/main/docs/models/stt/fun-asr-nano.md">Fun-ASR-Nano conversion, Python/CLI, and OpenAI-compatible transcription</a>, with uniform hotwords/context support merged in <a href="https://github.com/Blaizzy/mlx-audio/pull/885">#885</a>. This path is transcription-only with no timestamps; VAD and diarization remain external. See the model scope in the <a href="/go/fun-asr">Fun-ASR repository</a>.</div>
<div><span class="card-tag">Apple Silicon</span><span class="card-tag">Fun-ASR-Nano</span><span class="card-tag">OpenAI-compat</span></div>
</div>
<div class="card">
<div class="card-title"><a href="https://github.com/RapidAI/RapidASR">RapidASR</a></div>
<div class="card-stars">608 stars</div>
<div class="card-desc">Cross-platform ASR inference library based on ONNX Runtime and FunASR. Ready to use, supports Chinese-English mixed recognition.</div>
@@ -194,6 +194,35 @@ for (const viewport of [
});
}
for (const viewport of [
{ name: 'mobile', width: 390, height: 844 },
{ name: 'desktop', width: 1440, height: 900 },
]) {
test(`MLX Audio ecosystem entry is stable at ${viewport.name}`, async ({ page }, testInfo) => {
await page.setViewportSize(viewport);
for (const route of ['/ecosystem.html', '/en/ecosystem.html']) {
await page.goto(route);
const card = page.locator('.card').filter({ hasText: 'MLX Audio' });
await expect(card).toHaveCount(1);
await expect(card.locator('.card-tag', { hasText: 'Fun-ASR-Nano' })).toBeVisible();
await expect(card.locator('a[href="https://github.com/Blaizzy/mlx-audio/pull/885"]')).toBeVisible();
await expect(card.locator('a[href="/go/fun-asr"]')).toBeVisible();
const layout = await page.evaluate(() => ({
overflow: document.documentElement.scrollWidth - document.documentElement.clientWidth,
}));
expect(layout.overflow).toBeLessThanOrEqual(1);
}
await page.screenshot({
path: testInfo.outputPath(`mlx-audio-ecosystem-${viewport.name}.png`),
fullPage: true,
});
});
}
test('reduced motion disables smooth scrolling', async ({ page }) => {
await page.emulateMedia({ reducedMotion: 'reduce' });
await page.goto('/en/');
@@ -113,6 +113,46 @@ def test_english_navigation_uses_language_peer():
assert soup.select_one('[data-language-peer]')['href'] == '/blog/example.html'
def test_mlx_audio_ecosystem_entry_is_merged_attributed_and_bounded():
pages = {
'zh': LEGACY / 'ecosystem.html',
'en': LEGACY / 'en' / 'ecosystem.html',
}
required_links = {
'https://github.com/Blaizzy/mlx-audio',
'https://github.com/Blaizzy/mlx-audio/blob/main/docs/models/stt/fun-asr-nano.md',
'https://github.com/Blaizzy/mlx-audio/pull/885',
'/go/fun-asr',
}
for language, path in pages.items():
soup = BeautifulSoup(path.read_text(encoding='utf-8'), 'html.parser')
card = next(
item
for item in soup.select('.card')
if item.select_one('.card-title').get_text(' ', strip=True) == 'MLX Audio'
)
text = card.get_text(' ', strip=True)
hrefs = {link.get('href') for link in card.select('a[href]')}
assert required_links <= hrefs
assert 'Apple Silicon' in text
assert 'Fun-ASR-Nano' in text
assert 'OpenAI' in text
assert ('仅转写' in text) if language == 'zh' else ('transcription-only' in text)
assert ('无时间戳' in text) if language == 'zh' else ('no timestamps' in text)
community_docs = {
'en': Path(__file__).resolve().parents[3] / 'docs' / 'community_projects.md',
'zh': Path(__file__).resolve().parents[3] / 'docs' / 'community_projects_zh.md',
}
for text_path in community_docs.values():
text = text_path.read_text(encoding='utf-8')
assert '[MLX Audio](https://github.com/Blaizzy/mlx-audio)' in text
assert 'docs/models/stt/fun-asr-nano.md' in text
assert 'https://github.com/Blaizzy/mlx-audio/pull/885' in text
def test_v140_release_pages_are_bilingual_indexed_and_precise():
slug = 'funasr-v1-4-0-pypi-release.html'
pages = {