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
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 @@ -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",
Expand Down Expand Up @@ -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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<link rel="alternate" hreflang="x-default" href="https://www.funasr.com/en/blog/funasr-llama-cpp-whisper-cpp-alternative.html">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","headline":"FunASR 跑进 llama.cpp:中文 ASR 的 whisper.cpp 替代品(CPU/零 Python/下载即用)| FunASR 博客","description":"FunASR 的 llama.cpp/GGUF 端侧运行时:单个自包含二进制、零 Python、内置 VAD、吃任意音频,下载即用转写中文。中文 CPU 上比 whisper.cpp 准约 2.7 倍。3 步实测跑通。","datePublished":"2026-06-20","dateModified":"2026-06-20","author":{"@type":"Organization","name":"FunASR / Tongyi Lab"},"publisher":{"@type":"Organization","name":"FunASR","logo":{"@type":"ImageObject","url":"https://www.funasr.com/logo.png"}},"mainEntityOfPage":{"@type":"WebPage","@id":"https://www.funasr.com/blog/funasr-llama-cpp-whisper-cpp-alternative.html"},"image":"https://www.funasr.com/logo.png"}
{"@context":"https://schema.org","@type":"BlogPosting","headline":"FunASR 跑进 llama.cpp:中文 ASR 的 whisper.cpp 替代品(CPU/零 Python/下载即用)| FunASR 博客","description":"FunASR 的 llama.cpp/GGUF 端侧运行时:单个自包含二进制、零 Python、内置 VAD、吃任意音频,下载即用转写中文。中文 CPU 上比 whisper.cpp 准约 2.7 倍。3 步实测跑通。","datePublished":"2026-06-20","dateModified":"2026-08-15","author":{"@type":"Organization","name":"FunASR / Tongyi Lab"},"publisher":{"@type":"Organization","name":"FunASR","logo":{"@type":"ImageObject","url":"https://www.funasr.com/logo.png"}},"mainEntityOfPage":{"@type":"WebPage","@id":"https://www.funasr.com/blog/funasr-llama-cpp-whisper-cpp-alternative.html"},"image":"https://www.funasr.com/logo.png"}
</script>
<style>:root{--primary:#2563eb;--primary-dark:#1d4ed8;--bg:#fff;--surface:#f8fafc;--border:#e2e8f0;--text:#0f172a;--text-soft:#475569;--text-muted:#94a3b8;--radius:12px}
*{margin:0;padding:0;box-sizing:border-box}
Expand Down Expand Up @@ -54,20 +54,28 @@
.post-card p{margin:0;color:var(--text-soft);font-size:0.9rem}
.post-card .date{color:var(--text-muted);font-size:0.8rem}
footer{background:#0f172a;color:#94a3b8;padding:28px 0;text-align:center;font-size:0.8rem}
footer a{color:#94a3b8}</style>
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}
}</style>
</head>
<body>
<nav class="nav"><div class="container"><a href="/" class="nav-logo">Fun<span>ASR</span></a><div class="nav-links"><a href="/#capabilities">核心能力</a><a href="/#usage">如何使用</a><a href="/#benchmark">性能</a><a href="/#demo">演示</a><a href="https://modelscope.github.io/FunASR/zh/" target="_blank">文档</a><a href="/quickstart.html">快速上手</a><a href="/models.html">模型</a><a href="/ecosystem.html">生态</a><a href="/blog/">技术博客</a><a href="/vs-whisper.html">对比 Whisper</a><a href="/donors.html">功德榜</a></div><a href="https://www.funasr.com/en/blog/funasr-llama-cpp-whisper-cpp-alternative.html" style="font-size:0.83rem;font-weight:500;color:var(--text-soft)">EN</a><a href="https://github.com/modelscope/FunASR" target="_blank" class="nav-btn">GitHub ★</a></div></nav>
<article><div class="container">
<h1>FunASR 跑进 llama.cpp:中文语音识别的 whisper.cpp 替代品(CPU、零 Python、下载即用)</h1>
<p class="post-meta">2026-06-20 · FunASR 团队</p>
<p class="post-meta">2026-06-20 · 2026-08-15 更新 · FunASR 团队</p>

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

<p style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 16px"><strong>👉 想直接下载?</strong> 各平台预编译二进制(Linux/macOS/Windows)+ 一站式 quickstart 与 benchmark 见 <a href="/llama-cpp.html">在 CPU 上运行 FunASR(llama.cpp 下载页)</a>。</p>
<p style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 16px"><strong>👉 想直接下载?</strong> v0.2.0 提供 9 个 LinuxmacOSWindows 预编译包及 SHA-256;下载矩阵、quickstart 与已知限制见 <a href="/deploy/llama-cpp.html">llama.cpp / GGUF 部署页</a>。</p>
<h2>3 步跑通(全部实测)</h2>
<pre># 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)

Expand All @@ -90,7 +98,8 @@ <h2>你能得到什么</h2>
<ul>
<li><strong>内置 FSMN-VAD</strong>:长音频自动分段(`--vad fsmn-vad.gguf`),裸二进制即达参考精度,无需 Python 前端</li>
<li><strong>任意音频</strong>:wav / mp3 / flac、任意采样率/声道,二进制内部重采样</li>
<li><strong>多平台预编译</strong>:Linux x64/arm64、macOS arm64、Windows x64,含 Linux/Windows Vulkan 与 Windows CUDA 加速包(<a href="https://github.com/modelscope/FunASR/releases/tag/runtime-llamacpp-v0.1.9" target="_blank">Release</a>);其它平台一条 CMake 命令自构建</li>
<li><strong>多平台预编译</strong>:v0.2.0 提供 9 个 Linux x64/arm64、macOS arm64、Windows x64 包,含 Linux/Windows Vulkan 与 Windows CUDA 加速包(<a href="https://github.com/modelscope/FunASR/releases/tag/runtime-llamacpp-v0.2.0" target="_blank">Release</a>);其它平台一条 CMake 命令自构建</li>
<li><strong>直接输出字幕</strong>:Fun-ASR-Nano、SenseVoiceSmall 和 Paraformer CLI 均可通过 <code>--srt</code> 输出带时间戳的 SRT 字幕</li>
</ul>

<h2>中文 CPU 上 vs whisper.cpp</h2>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<link rel="alternate" hreflang="x-default" href="https://www.funasr.com/en/blog/funasr-llama-cpp-whisper-cpp-alternative.html">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","headline":"FunASR on llama.cpp — a whisper.cpp Alternative for Chinese ASR (CPU, no Python) | FunASR Blog","description":"FunASR's llama.cpp/GGUF on-device runtime: a single self-contained binary, no Python, built-in VAD, any audio format — download and transcribe Chinese. ~2.7x more accurate than whisper.cpp on CPU. Verified 3-step quickstart.","datePublished":"2026-06-20","dateModified":"2026-06-20","author":{"@type":"Organization","name":"FunASR / Tongyi Lab"},"publisher":{"@type":"Organization","name":"FunASR","logo":{"@type":"ImageObject","url":"https://www.funasr.com/logo.png"}},"mainEntityOfPage":{"@type":"WebPage","@id":"https://www.funasr.com/en/blog/funasr-llama-cpp-whisper-cpp-alternative.html"},"image":"https://www.funasr.com/logo.png"}
{"@context":"https://schema.org","@type":"BlogPosting","headline":"FunASR on llama.cpp — a whisper.cpp Alternative for Chinese ASR (CPU, no Python) | FunASR Blog","description":"FunASR's llama.cpp/GGUF on-device runtime: a single self-contained binary, no Python, built-in VAD, any audio format — download and transcribe Chinese. ~2.7x more accurate than whisper.cpp on CPU. Verified 3-step quickstart.","datePublished":"2026-06-20","dateModified":"2026-08-15","author":{"@type":"Organization","name":"FunASR / Tongyi Lab"},"publisher":{"@type":"Organization","name":"FunASR","logo":{"@type":"ImageObject","url":"https://www.funasr.com/logo.png"}},"mainEntityOfPage":{"@type":"WebPage","@id":"https://www.funasr.com/en/blog/funasr-llama-cpp-whisper-cpp-alternative.html"},"image":"https://www.funasr.com/logo.png"}
</script>
<style>:root{--primary:#2563eb;--primary-dark:#1d4ed8;--bg:#fff;--surface:#f8fafc;--border:#e2e8f0;--text:#0f172a;--text-soft:#475569;--text-muted:#94a3b8;--radius:12px}
*{margin:0;padding:0;box-sizing:border-box}
Expand Down Expand Up @@ -54,20 +54,28 @@
.post-card p{margin:0;color:var(--text-soft);font-size:0.9rem}
.post-card .date{color:var(--text-muted);font-size:0.8rem}
footer{background:#0f172a;color:#94a3b8;padding:28px 0;text-align:center;font-size:0.8rem}
footer a{color:#94a3b8}</style>
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}
}</style>
</head>
<body>
<nav class="nav"><div class="container"><a href="/en/" class="nav-logo">Fun<span>ASR</span></a><div class="nav-links"><a href="/en/#capabilities">Capabilities</a><a href="/en/#usage">How to Use</a><a href="/en/#benchmark">Benchmark</a><a href="/en/#demo">Demo</a><a href="https://modelscope.github.io/FunASR/" target="_blank">Docs</a><a href="/en/quickstart.html">Quickstart</a><a href="/en/models.html">Models</a><a href="/en/ecosystem.html">Ecosystem</a><a href="/en/blog/">Blog</a><a href="/en/vs-whisper.html">vs Whisper</a><a href="/en/donors.html">Thanks</a></div><a href="https://www.funasr.com/blog/funasr-llama-cpp-whisper-cpp-alternative.html" style="font-size:0.83rem;font-weight:500;color:var(--text-soft)">中文</a><a href="https://github.com/modelscope/FunASR" target="_blank" class="nav-btn">GitHub ★</a></div></nav>
<article><div class="container">
<h1>FunASR on llama.cpp — a whisper.cpp Alternative for Chinese ASR (CPU, no Python)</h1>
<p class="post-meta">2026-06-20 · FunASR Team</p>
<p class="post-meta">2026-06-20 · Updated 2026-08-15 · FunASR Team</p>

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

<p style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 16px"><strong>👉 Just want the download?</strong> Prebuilt binaries for Linux/macOS/Windows plus a one-page quickstart and benchmarks are on the <a href="/en/llama-cpp.html">Run FunASR on CPU (llama.cpp) page</a>.</p>
<p style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 16px"><strong>👉 Just want the download?</strong> v0.2.0 ships nine Linux, macOS, and Windows archives with SHA-256 values. Use the <a href="/en/deploy/llama-cpp.html">llama.cpp / GGUF deployment page</a> for the download matrix, quickstart, and known limitations.</p>
<h2>Run it in 3 steps (all verified)</h2>
<pre># 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)

Expand All @@ -90,7 +98,8 @@ <h2>What you get</h2>
<ul>
<li><strong>Built-in FSMN-VAD</strong>: automatic long-audio segmentation (`--vad fsmn-vad.gguf`); the bare binary reaches reference accuracy with no Python front end.</li>
<li><strong>Any audio</strong>: wav / mp3 / flac, any sample rate / channels — resampled inside the binary.</li>
<li><strong>Multi-platform prebuilts</strong>: Linux x64/arm64, macOS arm64, Windows x64, including Linux/Windows Vulkan and Windows CUDA acceleration packages (<a href="https://github.com/modelscope/FunASR/releases/tag/runtime-llamacpp-v0.1.9" target="_blank">Release</a>); one CMake command to build for others.</li>
<li><strong>Multi-platform prebuilts</strong>: v0.2.0 ships nine Linux x64/arm64, macOS arm64, and Windows x64 archives, including Linux/Windows Vulkan and Windows CUDA packages (<a href="https://github.com/modelscope/FunASR/releases/tag/runtime-llamacpp-v0.2.0" target="_blank">Release</a>); use one CMake command to build for other targets.</li>
<li><strong>Direct subtitle output</strong>: the Fun-ASR-Nano, SenseVoiceSmall, and Paraformer CLIs can emit timestamped SRT subtitles with <code>--srt</code>.</li>
</ul>

<h2>vs whisper.cpp on Chinese CPU</h2>
Expand Down
22 changes: 22 additions & 0 deletions web-pages/product-site/tests/browser/product-site.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<HTMLElement>('nav.nav');
const heading = document.querySelector<HTMLElement>('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,
});
});
22 changes: 22 additions & 0 deletions web-pages/product-site/tests/test_legacy.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Loading