diff --git a/web-pages/product-site/content/legacy-manifest.json b/web-pages/product-site/content/legacy-manifest.json index 89d5a9537..fc07e3b86 100644 --- a/web-pages/product-site/content/legacy-manifest.json +++ b/web-pages/product-site/content/legacy-manifest.json @@ -8,7 +8,7 @@ "blog/chinese-speech-recognition.html": "a78eeb4e5ea38ce95ad05ebc54eceb0185d8dddd2286769b5ba1b7dd00e8b615", "blog/fun-asr-nano-guide.html": "4e9a5c41c3846e482cc74e5379e642b16b6b35b680eea36a4cc79147933b76d5", "blog/funasr-cli-transcribe-command-line.html": "84dd389969e2795bf8bb9054b2f88b2abc16893bf6f7a7673e1f2887827da12e", - "blog/funasr-llama-cpp-whisper-cpp-alternative.html": "328e5a173381c72d4b500e9d10c4532a0574f3e477b5567eb6de8c3dc1b9244a", + "blog/funasr-llama-cpp-whisper-cpp-alternative.html": "3e1a8901c3f7f74e310b8050e2f6722c736ce0b37155805b85786d5b5455ae8f", "blog/funasr-realtime-streaming-asr.html": "7b6c34ace6c4c782f5af9c3f52181c1b1ef08d32c4ea3fafab63b1f30a9e72db", "blog/funasr-speaker-diarization.html": "451273993769f38de014160788581529788db8e4ca9fb56773d7723c51d96a52", "blog/funasr-transcribe-long-audio.html": "4f7f593c114dd54b11e3cf2b2e7ddcfea6af29326034ce4a76c690d30f41ff28", @@ -44,7 +44,7 @@ "en/blog/chinese-speech-recognition.html": "16b68bd2a1122236c580c62275002ae2c0875ca14e32686e88d3b5ccfa9f56ef", "en/blog/fun-asr-nano-guide.html": "1746c708bd0606188de4266d8255984dd9e14634af33c54ad65a5f05b767be1b", "en/blog/funasr-cli-transcribe-command-line.html": "1675699115f99e629d59f2a5323389d9405a6044c2a54efbcdd682c883c9322b", - "en/blog/funasr-llama-cpp-whisper-cpp-alternative.html": "ff1162a4691b113e133a0a9362ed5f2401899a0e0fdd7023bb4346e7df295f1a", + "en/blog/funasr-llama-cpp-whisper-cpp-alternative.html": "3808ee7a014f63e3befd83c886eca3fd96abea7d4de68a90a8bd23befe579282", "en/blog/funasr-realtime-streaming-asr.html": "65c7353fcdc393fc0adec3969d9762edc8f30dc15d20e360a2b11508d8c60a91", "en/blog/funasr-speaker-diarization.html": "db6511de2f356b7bf5e3f1f89b33991500a293c9d3bd2420d8a6cd6cf6cf3997", "en/blog/funasr-transcribe-long-audio.html": "6d486c9cee4a8c339e09e60ecee579b7cd650ce512d1ac8fe25789e2489b87fb", diff --git a/web-pages/product-site/legacy/blog/funasr-llama-cpp-whisper-cpp-alternative.html b/web-pages/product-site/legacy/blog/funasr-llama-cpp-whisper-cpp-alternative.html index 76816774c..4645ca2a7 100644 --- a/web-pages/product-site/legacy/blog/funasr-llama-cpp-whisper-cpp-alternative.html +++ b/web-pages/product-site/legacy/blog/funasr-llama-cpp-whisper-cpp-alternative.html @@ -18,7 +18,7 @@ +footer a{color:#94a3b8} +@media(max-width:760px){ +.nav{padding:12px 0} +.nav .container{gap:12px;flex-wrap:nowrap} +.nav-links{display:none} +.nav-logo{margin-right:auto} +.nav-btn{padding:7px 12px} +article{padding-top:96px} +}

FunASR 跑进 llama.cpp:中文语音识别的 whisper.cpp 替代品(CPU、零 Python、下载即用)

- + -

whisper.cpp 是端侧语音识别的事实标准——单个自包含二进制、CPU 就能跑、零依赖。但 Whisper 在中文上偏弱。现在 FunASR 有了 llama.cpp / GGUF 运行时:一样的"下载即用"体验,**单个静态二进制、零 Python、内置 VAD、吃任意音频**,而且在中文 CPU 上比 whisper.cpp 准约 2.7 倍

+

whisper.cpp 是端侧语音识别的事实标准——单个自包含二进制、CPU 就能跑、零依赖。但 Whisper 在中文上偏弱。现在 FunASR 有了 llama.cpp / GGUF 运行时:一样的"下载即用"体验,单个静态二进制、零 Python、内置 VAD、吃任意音频,而且在中文 CPU 上比 whisper.cpp 准约 2.7 倍

-

👉 想直接下载? 各平台预编译二进制(Linux/macOS/Windows)+ 一站式 quickstart 与 benchmark 见 在 CPU 上运行 FunASR(llama.cpp 下载页)

+

👉 想直接下载? v0.2.0 提供 9 个 Linux、macOS、Windows 预编译包及 SHA-256;下载矩阵、quickstart 与已知限制见 llama.cpp / GGUF 部署页

3 步跑通(全部实测)

# 1. 下预编译二进制(linux-x64 / linux-arm64 / macos-arm64 / windows-x64)
-wget https://github.com/modelscope/FunASR/releases/download/runtime-llamacpp-v0.1.9/funasr-llamacpp-linux-x64-vulkan.tar.gz
+wget https://github.com/modelscope/FunASR/releases/download/runtime-llamacpp-v0.2.0/funasr-llamacpp-linux-x64-vulkan.tar.gz
 tar xzf funasr-llamacpp-linux-x64-vulkan.tar.gz
 # Windows Vulkan 包: funasr-llamacpp-windows-x64-vulkan.zip(运行时加 --backend vulkan)
 
@@ -90,7 +98,8 @@ 

你能得到什么

  • 内置 FSMN-VAD:长音频自动分段(`--vad fsmn-vad.gguf`),裸二进制即达参考精度,无需 Python 前端
  • 任意音频:wav / mp3 / flac、任意采样率/声道,二进制内部重采样
  • -
  • 多平台预编译:Linux x64/arm64、macOS arm64、Windows x64,含 Linux/Windows Vulkan 与 Windows CUDA 加速包(Release);其它平台一条 CMake 命令自构建
  • +
  • 多平台预编译:v0.2.0 提供 9 个 Linux x64/arm64、macOS arm64、Windows x64 包,含 Linux/Windows Vulkan 与 Windows CUDA 加速包(Release);其它平台一条 CMake 命令自构建
  • +
  • 直接输出字幕:Fun-ASR-Nano、SenseVoiceSmall 和 Paraformer CLI 均可通过 --srt 输出带时间戳的 SRT 字幕

中文 CPU 上 vs whisper.cpp

diff --git a/web-pages/product-site/legacy/en/blog/funasr-llama-cpp-whisper-cpp-alternative.html b/web-pages/product-site/legacy/en/blog/funasr-llama-cpp-whisper-cpp-alternative.html index e52113009..3c174ad89 100644 --- a/web-pages/product-site/legacy/en/blog/funasr-llama-cpp-whisper-cpp-alternative.html +++ b/web-pages/product-site/legacy/en/blog/funasr-llama-cpp-whisper-cpp-alternative.html @@ -18,7 +18,7 @@ +footer a{color:#94a3b8} +@media(max-width:760px){ +.nav{padding:12px 0} +.nav .container{gap:12px;flex-wrap:nowrap} +.nav-links{display:none} +.nav-logo{margin-right:auto} +.nav-btn{padding:7px 12px} +article{padding-top:96px} +}

FunASR on llama.cpp — a whisper.cpp Alternative for Chinese ASR (CPU, no Python)

- +

whisper.cpp is the de-facto on-device ASR runtime — a single self-contained binary, runs on CPU, zero dependencies. But Whisper is comparatively weak on Chinese. Now FunASR has a llama.cpp / GGUF runtime: the same download-and-run experience — one static binary, no Python, built-in VAD, any audio format — and it is about 2.7× more accurate than whisper.cpp on Chinese CPU.

-

👉 Just want the download? Prebuilt binaries for Linux/macOS/Windows plus a one-page quickstart and benchmarks are on the Run FunASR on CPU (llama.cpp) page.

+

👉 Just want the download? v0.2.0 ships nine Linux, macOS, and Windows archives with SHA-256 values. Use the llama.cpp / GGUF deployment page for the download matrix, quickstart, and known limitations.

Run it in 3 steps (all verified)

# 1. Download a prebuilt binary (linux-x64 / linux-arm64 / macos-arm64 / windows-x64)
-wget https://github.com/modelscope/FunASR/releases/download/runtime-llamacpp-v0.1.9/funasr-llamacpp-linux-x64-vulkan.tar.gz
+wget https://github.com/modelscope/FunASR/releases/download/runtime-llamacpp-v0.2.0/funasr-llamacpp-linux-x64-vulkan.tar.gz
 tar xzf funasr-llamacpp-linux-x64-vulkan.tar.gz
 # Windows Vulkan asset: funasr-llamacpp-windows-x64-vulkan.zip (run with --backend vulkan)
 
@@ -90,7 +98,8 @@ 

What you get

  • Built-in FSMN-VAD: automatic long-audio segmentation (`--vad fsmn-vad.gguf`); the bare binary reaches reference accuracy with no Python front end.
  • Any audio: wav / mp3 / flac, any sample rate / channels — resampled inside the binary.
  • -
  • Multi-platform prebuilts: Linux x64/arm64, macOS arm64, Windows x64, including Linux/Windows Vulkan and Windows CUDA acceleration packages (Release); one CMake command to build for others.
  • +
  • Multi-platform prebuilts: v0.2.0 ships nine Linux x64/arm64, macOS arm64, and Windows x64 archives, including Linux/Windows Vulkan and Windows CUDA packages (Release); use one CMake command to build for other targets.
  • +
  • Direct subtitle output: the Fun-ASR-Nano, SenseVoiceSmall, and Paraformer CLIs can emit timestamped SRT subtitles with --srt.

vs whisper.cpp on Chinese CPU

diff --git a/web-pages/product-site/tests/browser/product-site.spec.ts b/web-pages/product-site/tests/browser/product-site.spec.ts index 1aa269a8c..ab15fae44 100644 --- a/web-pages/product-site/tests/browser/product-site.spec.ts +++ b/web-pages/product-site/tests/browser/product-site.spec.ts @@ -200,3 +200,25 @@ test('reduced motion disables smooth scrolling', async ({ page }) => { const behavior = await page.locator('html').evaluate((node) => getComputedStyle(node).scrollBehavior); expect(behavior).toBe('auto'); }); + +test('llama.cpp blog heading clears fixed navigation on mobile', async ({ page }, testInfo) => { + await page.setViewportSize({ width: 390, height: 844 }); + await page.goto('/blog/funasr-llama-cpp-whisper-cpp-alternative.html'); + + const layout = await page.evaluate(() => { + const navigation = document.querySelector('nav.nav'); + const heading = document.querySelector('h1'); + return { + overflow: document.documentElement.scrollWidth - document.documentElement.clientWidth, + navigationBottom: navigation?.getBoundingClientRect().bottom ?? 0, + headingTop: heading?.getBoundingClientRect().top ?? 0, + }; + }); + + expect(layout.overflow).toBeLessThanOrEqual(1); + expect(layout.headingTop).toBeGreaterThanOrEqual(layout.navigationBottom + 16); + await page.screenshot({ + path: testInfo.outputPath('llama-cpp-blog-mobile.png'), + fullPage: true, + }); +}); diff --git a/web-pages/product-site/tests/test_legacy.py b/web-pages/product-site/tests/test_legacy.py index d0acbff13..a39d444bf 100644 --- a/web-pages/product-site/tests/test_legacy.py +++ b/web-pages/product-site/tests/test_legacy.py @@ -156,3 +156,25 @@ def test_v140_release_pages_are_bilingual_indexed_and_precise(): assert f'/en/blog/{slug}' in en_index assert f'https://www.funasr.com/blog/{slug}' in sitemap assert f'https://www.funasr.com/en/blog/{slug}' in sitemap + + +def test_llama_cpp_blog_points_directly_to_current_runtime_release(): + pages = { + 'zh': LEGACY / 'blog' / 'funasr-llama-cpp-whisper-cpp-alternative.html', + 'en': LEGACY / 'en' / 'blog' / 'funasr-llama-cpp-whisper-cpp-alternative.html', + } + expected_routes = { + 'zh': '/deploy/llama-cpp.html', + 'en': '/en/deploy/llama-cpp.html', + } + + for language, path in pages.items(): + text = path.read_text(encoding='utf-8') + soup = BeautifulSoup(text, 'html.parser') + hrefs = {link.get('href') for link in soup.select('a[href]')} + + assert 'runtime-llamacpp-v0.2.0' in text + assert 'runtime-llamacpp-v0.1.9' not in text + assert expected_routes[language] in hrefs + assert '2026-08-15' in soup.select_one('script[type="application/ld+json"]').string + assert '**' not in soup.select_one('article').get_text()