diff --git a/docs/community_growth_20k.md b/docs/community_growth_20k.md index 9cb8506f1..41db04e71 100644 --- a/docs/community_growth_20k.md +++ b/docs/community_growth_20k.md @@ -34,14 +34,20 @@ This plan focuses on useful adoption work rather than vanity marketing: if more ## Current campaign snapshot -As of 2026-08-17 00:48 UTC, the ecosystem has 36,584 combined GitHub stars, or 5,360 additional stars since the 31,224 baseline. Exceeding the +20,000 target requires another 14,641 stars to reach at least 51,225 by 2026-09-30, or roughly 326 stars/day across the remaining 45 days. +As of 2026-08-21 03:58 UTC, the ecosystem has 36,713 combined GitHub stars, or 5,489 additional stars since the 31,224 baseline. Exceeding the +20,000 target requires another 14,511 stars to reach at least 51,224 by 2026-09-30, or roughly 363 stars/day across the remaining 40 days. Public PyPI reports 121,164 downloads over the latest 7 days and 515,283 over the latest 30 days through 2026-08-20. | Repository | Stars | Forks | Open issues | Open PRs | Last push | |---|---:|---:|---:|---:|---| -| `modelscope/FunASR` | 19,870 | 1,990 | 4 | 0 | 2026-08-17 | -| `QwenAudio/Fun-ASR` | 1,478 | 146 | 0 | 0 | 2026-07-24 | -| `QwenAudio/SenseVoice` | 9,084 | 808 | 0 | 0 | 2026-08-12 | -| `modelscope/FunClip` | 6,152 | 736 | 0 | 0 | 2026-08-03 | +| `modelscope/FunASR` | 19,944 | 1,996 | 5 | 2 | 2026-08-21 | +| `QwenAudio/Fun-ASR` | 1,483 | 147 | 0 | 0 | 2026-08-19 | +| `QwenAudio/SenseVoice` | 9,118 | 808 | 1 | 0 | 2026-08-18 | +| `modelscope/FunClip` | 6,168 | 738 | 0 | 0 | 2026-08-19 | + +### 2026-08-21 FunASR v1.4.3 stable release + +- FunASR PR [#3519](https://github.com/modelscope/FunASR/pull/3519) merged as `eedd4e22d10dc2e81d9c2bb321edb3750253964b`. The release adds the optional `AutoModel(vad_model="silero-vad")` adapter with millisecond segments, threshold controls, 8/16 kHz input, ONNX mode, and bounded segment lengths. Large embedding sets with a known speaker count now use fixed-K clustering instead of dense spectral clustering. +- Exact-main validation passed 167 source tests, compileall, PEP 517 wheel/sdist builds, Twine, source-to-artifact diff checks, and isolated installs with no dependencies and full dependencies. The public wheel SHA-256 is `4b1491643a5bc6ccdd8acfc3ec438f9d9b9aaca8c2bf2d0e71f737dfc03025b9`; the sdist SHA-256 is `74a9a60eac4f05b7cba25d31bdc0f6bba5d70dbe9fd326291b362a5e425ba01a`. +- Signed tag `v1.4.3` peels exactly to the merge commit. The unique public [GitHub Release](https://github.com/modelscope/FunASR/releases/tag/v1.4.3) has the wheel, sdist, nine `runtime-llamacpp-v0.2.0` platform archives, and `SHA256SUMS-v1.4.3`, exactly 12 assets. Public PyPI and GitHub no-cache downloads matched every expected size and SHA-256, and a fresh public-wheel installation reported version 1.4.3. ### 2026-08-16 product-site attribution and claim audit diff --git a/web-pages/product-site/content/legacy-manifest.json b/web-pages/product-site/content/legacy-manifest.json index c8b3ecc89..88287c92a 100644 --- a/web-pages/product-site/content/legacy-manifest.json +++ b/web-pages/product-site/content/legacy-manifest.json @@ -16,11 +16,12 @@ "blog/funasr-v1-3-27-language-metadata-vllm-fallback.html": "f1dbbc70fdd630c8a3953bda3b3a1697412b3c4bc25fc3969385583cd47874d2", "blog/funasr-v1-3-28-realtime-websocket-subtitles.html": "46a8d4c310e7f76da632d558d057484f48b345d9616873e1416fc68fcb9e9633", "blog/funasr-v1-4-0-pypi-release.html": "b5d05ac559435837caf2c3ea2531b581541d283bbecd7c4f3c1d367a2fe81c38", + "blog/funasr-v1-4-3-pypi-release.html": "6bd73c114653a12e0f8078c4cc7cc89f44cff53f106e12c79b7e6b78b36d922f", "blog/funasr-vs-faster-whisper-chinese.html": "bfe9bb8017be80c7e7f4587726f43f6064f1dc4c65e39788f836fdfb0c9789f7", "blog/funasr-vs-whisper-benchmark.html": "b7b49adf24d20570abb09b733ce03d4a50a4a0e98e746b4a9320f453e01cce84", "blog/funclip-v2-1-0-video-clipping-release.html": "88f6c44e5332d1746c4db0fc97d755ef82f12e46d8f1c1c0ad9351152ff9dfc1", "blog/generate-subtitles-srt-vtt-from-audio-video.html": "f1133235673d441cc654310581f59a319f182314ab7c0b0824af87da9f4a0591", - "blog/index.html": "41627afff22279325c3d5344514ed1fb689c1010f4f139ffb2a44bab3d4c2cf2", + "blog/index.html": "ff7a046ed66e6794e4e0743f531bd4a698efac7519a9414f6d3cd76672eaf33a", "blog/japanese-speech-recognition.html": "399f5ce84e68ac00854bdf70b52b1cde6795efca7c800fd6492035a37a7c1b68", "blog/lightweight-speech-recognition-cpu.html": "d6270066222ed5baef0df108e6a4155f4a87bb5482169f23f218794d371f3281", "blog/punctuation-restoration-python.html": "6cd26e03bf75b4343afd7b351c2681ebd513b058fb549c5888802be9ff3a1229", @@ -52,11 +53,12 @@ "en/blog/funasr-v1-3-27-language-metadata-vllm-fallback.html": "ffaca54d75c561bda82b6063b27f2a81d810f4f0e89030b6be7a64696ada44b4", "en/blog/funasr-v1-3-28-realtime-websocket-subtitles.html": "233534cb4306387f1a9a695886a5f515679dff591d04b90827f41a668d7f7ada", "en/blog/funasr-v1-4-0-pypi-release.html": "76fce7c27ad057d160236541369fa6c6d9f143ad03754fd3269ff2c4e32908f9", + "en/blog/funasr-v1-4-3-pypi-release.html": "b9007b4e74de38a4a7a38ef6f3659336c16c2159d454f290e7e702a4d59cc4d5", "en/blog/funasr-vs-faster-whisper-chinese.html": "abf31d3827dfba9b31ccd4e76229de9e4bfff00ab8bcee33bd718c88249630f4", "en/blog/funasr-vs-whisper-benchmark.html": "367d4a8a1cc09ac932c80cdad065127925c5e5f942a806ace683c16dc1132769", "en/blog/funclip-v2-1-0-video-clipping-release.html": "229baf59adf2c3290541d9b3c8a6243992406ba84b712714e9d14599205cb1d4", "en/blog/generate-subtitles-srt-vtt-from-audio-video.html": "1530d4b9e94820a0b60d801e8d1c19b7aeb031b2f2b76c092657392e47706c6d", - "en/blog/index.html": "828bcfa76d0911e13340fd03bdbea8a97c6a3407d04914b4d72564da25214cec", + "en/blog/index.html": "e5133a6b41024c574f4d9ae7df9d3db2094913c67de69f3ae8d5639d61acc37f", "en/blog/japanese-speech-recognition.html": "c476adcc2be1ed7c19e2345cc91b8ee6a0e04efd794b9b6476dd5d9b3a2c8b04", "en/blog/lightweight-speech-recognition-cpu.html": "0e02c0e0853b12613d32c250f593c05c2052f18231207b63ee01d6e6600a86f7", "en/blog/punctuation-restoration-python.html": "d6e30049f48d9dc6e6bc22eb567830013e4161eca51215616738b675dd1ffc40", diff --git a/web-pages/product-site/legacy/blog/funasr-v1-4-3-pypi-release.html b/web-pages/product-site/legacy/blog/funasr-v1-4-3-pypi-release.html new file mode 100644 index 000000000..2bc8a6de2 --- /dev/null +++ b/web-pages/product-site/legacy/blog/funasr-v1-4-3-pypi-release.html @@ -0,0 +1,108 @@ + + + + + + FunASR v1.4.3:可选 Silero VAD 与大规模固定 K 说话人聚类 | FunASR + + + + + + + + + + + + + + + + + + +
+

FunASR v1.4.3:可选 Silero VAD 与大规模固定 K 说话人聚类

+ + FunASR v1.4.3 发布视觉图 +

FunASR v1.4.3 为 AutoModel(vad_model="silero-vad") 增加可选 Silero VAD 适配器,直接返回 FunASR 兼容的毫秒级片段,并支持阈值、8/16 kHz 输入、ONNX 模式和最长片段限制。

+

已知说话人数的说话人分离在大规模 embedding 输入下改用固定 K 聚类,避免内存开销较高的稠密谱聚类。签名 GitHub Release 同时提供 wheel、sdist、九个平台的 llama.cpp / GGUF 运行时和 SHA256SUMS-v1.4.3,共 12 个资产。

+ +

本次更新

+ + + + + + + + +
能力v1.4.3 内容用户收益
可选 VADsilero-vadsilero_vad 别名接入现有 AutoModel VAD 流程无需改变后续 ASR 流程即可选择 Silero VAD
输入与输出8/16 kHz waveform 输入,输出毫秒级区间;支持阈值、最短静音、ONNX 与最长片段参数片段边界可直接供 FunASR 的长音频识别使用
说话人聚类已知说话人数且 embedding 较大时使用固定 K 聚类避开稠密谱聚类的平方级内存压力
默认行为Silero 作为 funasr[silero] 可选依赖,原有 FSMN VAD 不变基础安装与既有生产配置保持兼容
+ +

1. 安装并确认版本

+

从 public PyPI 固定正式版:

+
python -m pip install -U "funasr==1.4.3"
+funasr --version
+

启用 Silero VAD:

+
python -m pip install -U "funasr[silero]==1.4.3"
+
+model = AutoModel(
+    model="paraformer-zh",
+    vad_model="silero-vad",
+    device="cpu",
+    vad_kwargs={"silero_threshold": 0.5, "silero_min_silence_duration_ms": 100},
+)
+result = model.generate(input="audio.wav")
+

public PyPI 只发布 funasr-1.4.3-py3-none-any.whlfunasr-1.4.3.tar.gz。它们从 exact main 独立构建,并再次 no-cache 下载、隔离安装和 smoke。

+
exact-main 源码测试 167 项全部通过;compileall、PEP 517 构建、Twine、源码与产物 diff、无依赖与完整依赖隔离安装均通过。public wheel、sdist 与 GitHub 12 个资产已重新下载并逐项核对 size 和 SHA-256。
+ +

2. 九个平台运行时与校验清单

+

同一发布页复用并验证了 runtime-llamacpp-v0.2.0 的全部九个平台资产:

+ +

下载后在同一目录校验:

+
sha256sum -c SHA256SUMS-v1.4.3
+

模型、命令与硬件选择见 llama.cpp / GGUF 专页。manifest 覆盖 wheel、sdist 和九个 runtime;manifest 自身的 GitHub digest 也已核验。

+ +
+

先用固定版本在真实音频上复现,再按 SHA-256 选择适合硬件的运行时。遇到问题请附模型、设备、输入边界和可复现命令。

+ 查看 v1.4.3 发布与 12 个资产 +
+
+ + + diff --git a/web-pages/product-site/legacy/blog/index.html b/web-pages/product-site/legacy/blog/index.html index 07f356bc5..549977da5 100644 --- a/web-pages/product-site/legacy/blog/index.html +++ b/web-pages/product-site/legacy/blog/index.html @@ -48,7 +48,7 @@ @media(max-width:900px){.nav-links{display:none}.nav .container{gap:16px}.nav-logo{margin-right:auto}.launch-feature a{grid-template-columns:1fr}.launch-feature .action{white-space:normal}.previous-release .container{grid-template-columns:1fr}} -
2026-07-31 · 正式 Release

FunASR v1.4.0:更完整的 PyPI 安装包与更安全的 AutoModel 参数

修复 SenseVoice 与 RWKV-BAT 包数据,提前拒绝 vda_model 误拼写,并提供 12 个带 SHA-256 的发布资产。

查看发布与校验指南 →
-
2026-08-03 · 生态集成

Subtitle Edit 5.2:Fun-ASR Nano / SenseVoice 本地视频字幕

在 Windows、macOS 与 Linux 的成熟字幕工作区中直接选择本地 ASR 引擎,支持 Q4、Q8、F16。

2026-07-24

FunClip v2.1.0:本地 AI 视频剪辑的首个版本化发布

Paraformer、Fun-ASR-Nano、SenseVoice 与大模型剪辑,提供可校验、可回退的源码下载。

+
2026-08-21 · 正式 Release

FunASR v1.4.3:可选 Silero VAD 与大规模固定 K 说话人聚类

新增毫秒级 Silero VAD 适配器,降低已知说话人数的大规模聚类内存压力,并提供 12 个带 SHA-256 的发布资产。

查看发布与校验指南 →
+
2026-07-31 · 正式 Release

FunASR v1.4.0:更完整的 PyPI 安装包与更安全的 AutoModel 参数

修复 SenseVoice 与 RWKV-BAT 包数据,提前拒绝 vda_model 误拼写,并提供 12 个带 SHA-256 的发布资产。

2026-08-03 · 生态集成

Subtitle Edit 5.2:Fun-ASR Nano / SenseVoice 本地视频字幕

在 Windows、macOS 与 Linux 的成熟字幕工作区中直接选择本地 ASR 引擎,支持 Q4、Q8、F16。

FunASR 技术博客

2026-06-23

语音识别带时间戳(字级 timestamps)Python 实战:每个字精确到毫秒

FunASR Paraformer 原生字级时间戳:每个字带 [起始毫秒,结束毫秒],一次调用即有。可做逐字高亮、点击跳转、字幕对齐。附真实实测+配对代码。

2026-06-23

标点恢复 Python 实战:给无标点文本/ASR 结果自动加标点

FunASR ct-punc 开源标点恢复,中英双语,3 行 Python 补全 ,。?(英文还做句首大写),也能一行挂到 ASR 上。附真实实测。

2026-06-22

中文语音识别(普通话)Python 实战:用 FunASR 又快又准

FunASR 专为中文打造:默认旗舰 Fun-ASR-Nano(CER 8.06%),CPU 用 SenseVoice(7.81%)/ Paraformer(10.18%,时间戳/热词),都远好于 Whisper(~20%)。3 行 Python。

2026-06-22

自托管语音转文字:Google / AWS / Azure 云语音 API 的免费开源替代

开源免费(MIT)、本地推理、不按分钟计费、数据不出内网、中文强,OpenAI 兼容改 base_url 即可迁移。附实测代码 + FunASR vs 云 API 对比 + 成本分析。

2026-06-22

Python 语音活动检测(VAD):检测语音、去静音、按停顿切分音频

FunASR fsmn-vad 3 行代码返回每段语音的起止毫秒。实测 13s 录音 0.12s 切成 2 段、去除 18% 静音;可去静音、切分长录音、给 Whisper 等做预处理防幻觉。

2026-06-22

日语语音识别:SenseVoice 一个模型搞定日语转写+标点+情感

同一段日语音频实测:SenseVoice 写对同音字 転売、自动加标点,Whisper-small 误为 天売、无标点。原生 ja 支持 + 自动语种识别 + 情感事件,3 行 Python。

2026-06-23

自托管替代 Deepgram / AssemblyAI

开源免费、自托管、音频不出本地、中文领先,自带 OpenAI 兼容 API——客户端只改 base_url 即可替代按分钟付费的云 STT。

2026-06-23

选哪个 FunASR 模型?Nano vs MLT-Nano vs SenseVoice vs Paraformer

模型选型表 + 场景代码:中英日及中文方言/口音选旗舰 Nano,31 语种选独立 MLT-Nano,CPU 再选 SenseVoice 或 Paraformer。

2026-06-22

轻量语音识别:CPU 上约 250MB 跑中文 ASR

单二进制 + 254MB q8 模型,无需 GPU/Python,CPU 0.16s,中文 CER 7.99%——比 whisper.cpp small 还小且准 3 倍。

2026-06-21

粤语语音识别:SenseVoice 原生支持粤语口语(Whisper 会转成普通话)

同一段粤语音频实测:SenseVoice 保留 呢/唔/嘅,Whisper 转成普通话书面语。原生 yue 支持 + 自动语种识别,3 行 Python。

2026-06-21

FunASR vs faster-whisper:中文与粤语实测对比

粤语被 faster-whisper 误判为普通话、日语同音字错;SenseVoice 原生支持粤语+语种识别,中文 CER 低约 2.7 倍。实测。

2026-06-20

FunASR 跑进 llama.cpp:中文 ASR 的 whisper.cpp 替代品(CPU/零 Python)

单个自包含二进制、内置 VAD、吃任意音频,下载即用转写中文;中文 CPU 上比 whisper.cpp 准约 2.7 倍。3 步实测。

2026-06-18

Python 语音转文字:用 FunASR 本地免费转写音频

几行 Python 把音频转成文本,带时间戳/说话人/批量;本地、免费、无 API key、中文强。

2026-06-18

用 FunASR 自动生成字幕:音频/视频一键出 SRT 和 VTT

一行命令出 SRT,Python 同时导出 VTT,带说话人和真实时间戳;本地、免费、中文强。

2026-06-18

自托管 OpenAI Whisper API 替代:FunASR 起兼容 /v1/audio/transcriptions 服务

funasr-server 暴露 OpenAI 兼容接口,OpenAI SDK 只改 base_url 就能用;本地、免费、隐私、中文更准。

2026-06-18

用 FunASR 命令行转写音频:文本/JSON/SRT 字幕

一行命令出文字/字幕/JSON,--spk 带说话人;还能 funasr-server 起 OpenAI 兼容 API。

2026-06-17

用 FunASR 转写超长音频:1 小时一次搞定

Whisper 限 30 秒,FunASR 内置 VAD 一次吃下任意时长;实测 13 分钟 4.3 秒转完(186x)。

2026-06-17

用 FunASR 实现实时流式语音识别(边说边出字)

600ms 级低延迟流式 ASR:分块+cache 边说边出字,含 2-pass(流式+离线)最佳实践。

2026-06-17

超越转写:用 SenseVoice 识别语言、情感与声学事件

一次非自回归前向同时输出转写+语种+情感+音频事件,Whisper 做不到的四合一。

2026-06-17

用 FunASR 做说话人分离:谁在何时说了什么

一次 generate 调用同时输出转写+说话人标签+时间戳,替代 pyannote+Whisper,无需 HF 授权。

2026-06-16

FunASR vs Whisper 实测对比:谁更快更准

184 中文文件 H100 实测:SenseVoice 169.6x、CER 7.81%,完整速度+准确率数据。

2026-06-16

Fun-ASR-Nano 使用指南:800M 端到端语音识别大模型

主力旗舰,中英日 + 7 大中文方言/26 种口音,热词/流式/说话人分离;31 语种请用 MLT-Nano。

2026-06-16

SenseVoice 部署指南:五语种识别、情感与音频事件

3 行代码跑通多语言识别,含语种/情感/事件检测、VAD、GPU/CPU。

更多:快速上手 · 模型

diff --git a/web-pages/product-site/legacy/en/blog/funasr-v1-4-3-pypi-release.html b/web-pages/product-site/legacy/en/blog/funasr-v1-4-3-pypi-release.html new file mode 100644 index 000000000..bb8257f00 --- /dev/null +++ b/web-pages/product-site/legacy/en/blog/funasr-v1-4-3-pypi-release.html @@ -0,0 +1,108 @@ + + + + + + FunASR v1.4.3: Optional Silero VAD and Fixed-K Speaker Clustering | FunASR + + + + + + + + + + + + + + + + + + +
+

FunASR v1.4.3: Optional Silero VAD and Fixed-K Speaker Clustering

+ + FunASR v1.4.3 release visual +

FunASR v1.4.3 adds an optional adapter for AutoModel(vad_model="silero-vad"). It returns FunASR-compatible millisecond segments and supports threshold controls, 8/16 kHz input, ONNX mode, and bounded segment lengths.

+

Speaker diarization with a known speaker count now sends large embedding sets through fixed-K clustering instead of memory-heavy dense spectral clustering. The signed GitHub Release also contains the wheel, sdist, nine self-contained llama.cpp / GGUF runtimes, and SHA256SUMS-v1.4.3: 12 assets in total.

+ +

What changed

+ + + + + + + + +
Areav1.4.3 behaviorWhy it matters
Optional VADsilero-vad and silero_vad aliases use the existing AutoModel VAD pipelineChoose Silero without changing downstream ASR code
Input and output8/16 kHz waveforms produce millisecond ranges, with threshold, minimum-silence, ONNX, and maximum-segment controlsSegments can feed FunASR long-audio recognition directly
Speaker clusteringLarge embedding sets with a known speaker count use fixed-K clusteringAvoids the quadratic memory pressure of dense spectral clustering
CompatibilitySilero remains an optional funasr[silero] dependency; the existing FSMN VAD path is unchangedBase installs and established production configurations remain stable
+ +

1. Install and confirm the version

+

Pin the stable build from public PyPI:

+
python -m pip install -U "funasr==1.4.3"
+funasr --version
+

Enable Silero VAD:

+
python -m pip install -U "funasr[silero]==1.4.3"
+
+model = AutoModel(
+    model="paraformer-zh",
+    vad_model="silero-vad",
+    device="cpu",
+    vad_kwargs={"silero_threshold": 0.5, "silero_min_silence_duration_ms": 100},
+)
+result = model.generate(input="audio.wav")
+

Public PyPI contains exactly funasr-1.4.3-py3-none-any.whl and funasr-1.4.3.tar.gz. Both were built independently from exact main and downloaded again with no-cache headers for isolated installation smokes.

+
All 167 exact-main source tests passed, followed by compileall, PEP 517 build, Twine, source/artifact diff checks, and isolated installs with both no dependencies and full dependencies. The public wheel, sdist, and all 12 GitHub assets were downloaded again and matched by size and SHA-256.
+ +

2. Nine runtime targets and one checksum manifest

+

The same release page reuses and verifies every asset from runtime-llamacpp-v0.2.0:

+ +

Verify the download directory before use:

+
sha256sum -c SHA256SUMS-v1.4.3
+

See the llama.cpp / GGUF page for model and hardware selection. The manifest covers the wheel, sdist, and nine runtimes, while GitHub also exposes a digest for the manifest itself.

+ +
+

Pin the Python version, verify downloaded assets, and reproduce with real audio. When reporting a problem, include the model, device, input boundary, and exact command.

+ Open v1.4.3 and all 12 assets +
+
+ + + diff --git a/web-pages/product-site/legacy/en/blog/index.html b/web-pages/product-site/legacy/en/blog/index.html index 68641de64..5f4a8668a 100644 --- a/web-pages/product-site/legacy/en/blog/index.html +++ b/web-pages/product-site/legacy/en/blog/index.html @@ -48,7 +48,7 @@ @media(max-width:900px){.nav-links{display:none}.nav .container{gap:16px}.nav-logo{margin-right:auto}.launch-feature a{grid-template-columns:1fr}.launch-feature .action{white-space:normal}.previous-release .container{grid-template-columns:1fr}} -
July 31, 2026 · Stable release

FunASR v1.4.0: Complete PyPI Packages and Safer AutoModel Arguments

SenseVoice and RWKV-BAT package-data fixes, an early vda_model typo guard, and 12 SHA-256-addressed release assets.

Read the release and verification guide →
-
August 3, 2026 · Ecosystem

Subtitle Edit 5.2: Local Video Subtitles with Fun-ASR Nano or SenseVoice

Select a local ASR engine inside a mature subtitle workspace on Windows, macOS, or Linux, with Q4, Q8, and F16 models.

July 24, 2026

FunClip v2.1.0: The First Versioned Local AI Video-Clipping Release

Paraformer, Fun-ASR-Nano, SenseVoice, and LLM clipping in verifiable, rollback-ready source downloads.

+
August 21, 2026 · Stable release

FunASR v1.4.3: Optional Silero VAD and Fixed-K Speaker Clustering

Millisecond Silero VAD segments, lower-memory clustering for large known-speaker workloads, and 12 SHA-256-addressed release assets.

Read the release and verification guide →
+
July 31, 2026 · Stable release

FunASR v1.4.0: Complete PyPI Packages and Safer AutoModel Arguments

SenseVoice and RWKV-BAT package-data fixes, an early vda_model typo guard, and 12 SHA-256-addressed release assets.

August 3, 2026 · Ecosystem

Subtitle Edit 5.2: Local Video Subtitles with Fun-ASR Nano or SenseVoice

Select a local ASR engine inside a mature subtitle workspace on Windows, macOS, or Linux, with Q4, Q8, and F16 models.

FunASR Blog

2026-06-23

Speech-to-Text with Word/Character-Level Timestamps in Python

FunASR Paraformer gives native character timestamps: every char has [start_ms, end_ms] in one call. Build word highlighting, click-to-seek, subtitle alignment. Real output + pairing code.

2026-06-23

Punctuation Restoration in Python — Add Punctuation to Text / ASR Output

FunASR ct-punc: open-source bilingual (zh+en) punctuation restoration. 3 lines of Python to add ,。? (and capitalize English), or attach to ASR in one line. Real output.

2026-06-22

Chinese (Mandarin) Speech Recognition in Python — Fast & Accurate with FunASR

Purpose-built for Chinese: default flagship Fun-ASR-Nano (CER 8.06%), with SenseVoice (7.81%) / Paraformer (10.18%, timestamps/hotwords) for CPU — all far better than Whisper (~20%).

2026-06-22

Self-Hosted Speech-to-Text — Free Alternative to Google / AWS / Azure Cloud Speech APIs

Open-source (MIT), local inference, no per-minute billing, audio stays on your network, strong Chinese, OpenAI-compatible (migrate via base_url). Runnable code + FunASR vs cloud comparison + cost analysis.

2026-06-22

Voice Activity Detection in Python — Detect Speech, Remove Silence, Split Audio

FunASR fsmn-vad returns millisecond speech spans in 3 lines. Measured: a 13s clip split into 2 segments in 0.12s, 18% silence removed. Trim silence, split long audio, preprocess Whisper to cut hallucinations.

2026-06-22

Japanese Speech Recognition in Python — SenseVoice: Transcription + Punctuation + Emotion in One Pass

Real side-by-side on one Japanese clip: SenseVoice writes 転売 correctly and adds punctuation; Whisper-small gives 天売 with none. Native ja support + auto language ID + emotion/events, 3 lines of Python.

2026-06-23

Self-Hosted Deepgram / AssemblyAI Alternative

Open-source, free, self-hosted, audio stays local, Chinese-leading, with an OpenAI-compatible API — replace per-minute cloud STT by changing base_url.

2026-06-23

Which FunASR Model? Nano vs MLT-Nano vs SenseVoice vs Paraformer

A decision table with code: flagship Nano for zh/en/ja plus Chinese dialects/accents, separate MLT-Nano for 31 languages, and CPU choices SenseVoice or Paraformer.

2026-06-22

Lightweight Speech Recognition: Chinese ASR in ~250MB on CPU

One binary + a 254MB q8 model, no GPU/Python, 0.16s on CPU, 7.99% CER — smaller than whisper.cpp small and ~3x more accurate.

2026-06-21

Cantonese Speech Recognition in Python — SenseVoice Keeps Real Cantonese (Whisper Doesn't)

Real side-by-side on one Cantonese clip: SenseVoice keeps 呢/唔/嘅, Whisper rewrites to Mandarin. Native yue support + auto language ID, 3 lines of Python.

2026-06-21

FunASR vs faster-whisper: Chinese & Cantonese Compared

faster-whisper mislabels Cantonese as Mandarin + Japanese homophone errors; SenseVoice handles Cantonese natively, ~2.7x lower CER on Chinese.

2026-06-20

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

One self-contained binary, built-in VAD, any audio — download and transcribe Chinese; ~2.7x more accurate than whisper.cpp on CPU.

2026-06-18

Speech to Text in Python with FunASR

Transcribe audio in a few lines of Python — timestamps, speakers, batching. Local, free, no API key.

2026-06-18

Auto-Generate Subtitles (SRT & VTT) from Audio or Video with FunASR

One command for SRT, Python for VTT too, with speaker labels and real timestamps. Local, free, strong on Chinese.

2026-06-18

Self-Hosted OpenAI Whisper API Alternative with FunASR

funasr-server exposes an OpenAI-compatible /v1/audio/transcriptions; the OpenAI SDK works by changing only base_url. Local, free, private.

2026-06-18

Transcribe Audio from the Command Line with FunASR

One command -> text/SRT/JSON, --spk for speakers; plus funasr-server for an OpenAI-compatible API.

2026-06-17

Transcribe Long Audio with FunASR: Hours in One Call

Whisper caps at 30s; FunASR ingests any length via built-in VAD - 13 min in 4.3s (186x).

2026-06-17

Real-Time Streaming Speech-to-Text with FunASR

~600ms low-latency streaming ASR with chunks + cache, plus the 2-pass (streaming + offline) best practice.

2026-06-17

Beyond Transcription: Language, Emotion & Audio Events with SenseVoice

Transcription + language + emotion + audio events in one pass — the 4-in-1 Whisper cannot do.

2026-06-17

Speaker Diarization with FunASR: Who Spoke When

Transcription + speaker labels + timestamps in one generate() call. A pyannote+Whisper alternative, no HF gated access.

2026-06-16

FunASR vs Whisper: Real Chinese ASR Benchmark

Measured on 184 Chinese files (H100): SenseVoice 169.6x, 7.81% CER — full speed & accuracy data.

2026-06-16

Fun-ASR-Nano Guide: 800M End-to-End ASR LLM

Flagship for zh/en/ja plus 7 Chinese dialect groups and 26 accents; choose MLT-Nano for 31 languages.

2026-06-16

SenseVoice Deployment Guide: Five-Language ASR, Emotion and Audio Events

Multilingual ASR in 3 lines, with language/emotion/event tags, VAD, GPU/CPU.

More: Quickstart · Models

diff --git a/web-pages/product-site/tests/test_output.py b/web-pages/product-site/tests/test_output.py index 582fc3636..386f73025 100644 --- a/web-pages/product-site/tests/test_output.py +++ b/web-pages/product-site/tests/test_output.py @@ -503,3 +503,55 @@ def test_hashed_asset_tampering_fails_validation(built_site): stream.write(b'changed') assert any(f'asset hash mismatch {asset}' in error for error in validate_output(built_site)) + + +@pytest.mark.parametrize( + ('relative', 'peer', 'markers'), + ( + ( + 'blog/funasr-v1-4-3-pypi-release.html', + '/en/blog/funasr-v1-4-3-pypi-release.html', + ('FunASR v1.4.3', 'Silero VAD', '固定 K', '167', 'SHA256SUMS-v1.4.3'), + ), + ( + 'en/blog/funasr-v1-4-3-pypi-release.html', + '/blog/funasr-v1-4-3-pypi-release.html', + ('FunASR v1.4.3', 'Silero VAD', 'fixed-K', '167', 'SHA256SUMS-v1.4.3'), + ), + ), +) +def test_v1_4_3_release_blog_is_bilingual_and_verifiable( + built_site, relative, peer, markers +): + soup = read_soup(built_site / relative) + text = soup.get_text(' ', strip=True) + + assert soup.select_one('link[rel="canonical"]')['href'].endswith('/' + relative) + assert soup.select_one(f'link[rel="alternate"][href$="{peer}"]') + assert soup.select_one('script[type="application/ld+json"]') + assert soup.select_one('a[href="https://github.com/modelscope/FunASR/releases/tag/v1.4.3"]') + for marker in markers: + assert marker in text + + root = ET.parse(built_site / 'sitemap.xml').getroot() + namespace = {'sitemap': 'http://www.sitemaps.org/schemas/sitemap/0.9'} + urls = { + item.findtext('sitemap:loc', namespaces=namespace) + for item in root.findall('sitemap:url', namespace) + } + assert f'https://www.funasr.com/{relative}' in urls + + +@pytest.mark.parametrize( + ('relative', 'href'), + ( + ('blog/index.html', '/blog/funasr-v1-4-3-pypi-release.html'), + ('en/blog/index.html', '/en/blog/funasr-v1-4-3-pypi-release.html'), + ), +) +def test_blog_index_features_v1_4_3_release(built_site, relative, href): + soup = read_soup(built_site / relative) + feature = soup.select_one(f'.launch-feature a[href="{href}"]') + + assert feature + assert 'v1.4.3' in feature.get_text(' ', strip=True)