Skip to content

Commit 088da04

Browse files
authored
feat(site): attribute ecosystem repository traffic (#3441)
Route Fun-ASR, SenseVoice, and FunClip repository links through fixed funasr.com conversion endpoints so ecosystem traffic can be measured per repository. Signed-off-by: Zhifu Gao <gaozhifu.gzf@alibaba-inc.com>
1 parent 30caaf8 commit 088da04

8 files changed

Lines changed: 42 additions & 10 deletions

File tree

web-pages/nginx/conversion-map.conf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
map $uri $funasr_conversion_target {
22
default "";
33
/go/github https://github.com/modelscope/FunASR;
4+
/go/fun-asr https://github.com/QwenAudio/Fun-ASR;
5+
/go/sensevoice https://github.com/QwenAudio/SenseVoice;
6+
/go/funclip https://github.com/modelscope/FunClip;
47
/go/docs https://github.com/modelscope/FunASR/tree/main/docs;
58
/go/releases https://github.com/modelscope/FunASR/releases;
69
/go/deploy-vllm https://www.funasr.com/deploy/vllm.html;

web-pages/product-site/content/legacy-manifest.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
"css/index.1682178c.css": "b5f6034ce886c25773928c114e4290d1c491a3d081677b488810198efd76b4e1",
3838
"decoder.js": "f2023a28036b1ff58e5bdabbb72ea427f8faaf60e89acd78ff183c313bdb0a2c",
3939
"donors.html": "eec6b789b29c27d372925ae0ad3e13d4c6e62978b3c38c4da9e3aec129f10934",
40-
"ecosystem.html": "1774b107ae9c29dea63889df7fc72ce9f20482c9531c20a93b956e6d1e735c14",
40+
"ecosystem.html": "3b227e085d285018188ac3c2891d8940455f661fa7dcfa3a69ef4c4b12a8a7db",
4141
"en/blog/cantonese-speech-recognition.html": "b9bd146198206f781c37f341c370a690dc83cd7163334e34b4e7f65e69af8ff2",
4242
"en/blog/chinese-speech-recognition.html": "16b68bd2a1122236c580c62275002ae2c0875ca14e32686e88d3b5ccfa9f56ef",
4343
"en/blog/fun-asr-nano-guide.html": "1746c708bd0606188de4266d8255984dd9e14634af33c54ad65a5f05b767be1b",
@@ -67,10 +67,10 @@
6767
"en/blog/voice-activity-detection-python.html": "d12f5d0f4ae07c3434f6188d12f5603b8abb9578413b79133668638d1c5e18a7",
6868
"en/blog/which-funasr-model.html": "1207180aa929a3aa51db136c1098f4edc8f07405e2b56fe033998bf996f8ec7f",
6969
"en/donors.html": "eacb7f9434b1b29e13e9b0175bb9680556ee72ab4dbd155e68f9c912eb0212b1",
70-
"en/ecosystem.html": "ba37210274c38f1a8aa3cee762e866f2dc5fb70c7690d7313d45f40f9274aa43",
70+
"en/ecosystem.html": "e07daf9a241d28b9a25df7d58c693289d61e056cb864faf71095aa6cef7b5b32",
7171
"en/index.html": "4950bc2e0b337637300c5bcd45d1820d9636c4f1dab34e0ec8d3443be44bd277",
7272
"en/llama-cpp.html": "dbfbd125ebbf07f7d923c91b122818f8b09484ce54c1e80eba66a89d22dfb5b4",
73-
"en/models.html": "07421617d1e56a6b5d239fc683bdf62d6bd9e5ecb0f4f82013ee9929cfd91829",
73+
"en/models.html": "c2add621edc3aa63e6d49587f089ee5ac6c05faf5f68e14fef70a7a5ab443a4d",
7474
"en/quickstart.html": "2735cc9e608bfc7860eaa0c0e1242088d98204bca92cfec7ae7923a056f968c4",
7575
"en/vs-whisper.html": "1779f98b2eae8579f3694577bc9dda81bd954423b49dd201ff17dcfb5e630ab1",
7676
"favicon.ico": "e5edd9f12088fa920b848485c62c72a093f27bfba7b6a46b4e7b63c34eb5126a",
@@ -94,7 +94,7 @@
9494
"lang-redirect.js": "e1189080a8e81eb76cf39e0538d0378b6631f5aa87e4679c0fd4fd34d1f6c197",
9595
"llama-cpp.html": "892b5c05e3375bcc7cd0af343b629f069d8ec4f372e6470cd830cdf2181a11d5",
9696
"logo.png": "ac0ff97f2b0203c3fad4ac5e90231d93e36d98cc8e90d383483de150b0dd0728",
97-
"models.html": "c05da7a2b1aaa7390d0e8d5135ed08646bfb50c357919ad160fd30049eb82364",
97+
"models.html": "2fa557c327c81717e5ae145ae96436168ea51f58301bd7bb6357d4e15686cdfc",
9898
"quickstart.html": "90c5f25b428b064be02df11c38d24556ec97f4bc80900398c223424aaa48e7b8",
9999
"robots.txt": "1305b0f680b3e9f73b01301dc474423230dffab85731a379a694f30c73c07f2d",
100100
"sitemap.xml": "055e1fbf6da8689720eca3ce508b7115dfbb90ebf45cd4cab18d0b13d01aa139",

web-pages/product-site/legacy/ecosystem.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ <h1>FunASR 生态系统</h1>
8282
<h2>视频与媒体工具</h2>
8383
<div class="card-grid">
8484
<div class="card">
85-
<div class="card-title"><a href="https://github.com/modelscope/FunClip">FunClip</a></div>
85+
<div class="card-title"><a href="/go/funclip">FunClip</a></div>
8686
<div class="card-stars">6K+ stars</div>
8787
<div class="card-desc">基于语音识别的智能视频剪辑。自动生成字幕,支持按关键词和说话人剪辑视频片段。<a href="https://github.com/modelscope/FunClip/releases/tag/v2.1.0">下载 v2.1.0</a></div>
8888
<div><span class="card-tag">视频</span><span class="card-tag green">官方</span></div>

web-pages/product-site/legacy/en/ecosystem.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ <h1>FunASR Ecosystem</h1>
8383
<h2>Video & Media Tools</h2>
8484
<div class="card-grid">
8585
<div class="card">
86-
<div class="card-title"><a href="https://github.com/modelscope/FunClip">FunClip</a></div>
86+
<div class="card-title"><a href="/go/funclip">FunClip</a></div>
8787
<div class="card-stars">6K+ stars</div>
8888
<div class="card-desc">ASR-powered video clipping. Automatic subtitles, keyword and speaker-based clip extraction. <a href="https://github.com/modelscope/FunClip/releases/tag/v2.1.0">Download v2.1.0</a></div>
8989
<div><span class="card-tag">Video</span><span class="card-tag green">Official</span></div>

web-pages/product-site/legacy/en/models.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ <h2>ASR Models</h2>
8787

8888
<div class="model-card">
8989
<div class="model-name">Fun-ASR-Nano <span class="badge badge-orange">⭐ Flagship / default</span></div>
90-
<div class="model-meta">800M params &middot; LLM-based (SenseVoice encoder + Qwen3-0.6B) &middot; <a href="https://github.com/QwenAudio/Fun-ASR">GitHub</a> &middot; <a href="https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512">HuggingFace</a></div>
90+
<div class="model-meta">800M params &middot; LLM-based (SenseVoice encoder + Qwen3-0.6B) &middot; <a href="/go/fun-asr">GitHub</a> &middot; <a href="https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512">HuggingFace</a></div>
9191
<div class="model-desc">Next-generation LLM-based ASR model. Combines SenseVoice's audio encoder with Qwen3-0.6B language model for superior context understanding. Supports vLLM acceleration for high-throughput batch inference and real-time streaming. The released <code>model.pt</code> checkpoint does not provide reliable checkpoint-native character timestamps (<a href="https://github.com/QwenAudio/Fun-ASR/issues/106" target="_blank" rel="noopener">issue #106</a>).</div>
9292
<div class="model-features">
9393
<span class="badge badge-green">vLLM accelerated</span>
@@ -122,7 +122,7 @@ <h3>When to use</h3>
122122

123123
<div class="model-card">
124124
<div class="model-name">SenseVoice Small</div>
125-
<div class="model-meta">234M params &middot; Non-autoregressive &middot; <a href="https://github.com/QwenAudio/SenseVoice">GitHub</a> &middot; <a href="https://huggingface.co/FunAudioLLM/SenseVoiceSmall">HuggingFace</a></div>
125+
<div class="model-meta">234M params &middot; Non-autoregressive &middot; <a href="/go/sensevoice">GitHub</a> &middot; <a href="https://huggingface.co/FunAudioLLM/SenseVoiceSmall">HuggingFace</a></div>
126126
<div class="model-desc">Ultra-fast speech recognition with built-in emotion and audio event detection. Supports 50+ languages including Chinese, English, Japanese, Korean, French, German, and more. Non-autoregressive architecture delivers 170x realtime speed on GPU.</div>
127127
<div class="model-features">
128128
<span class="badge badge-green">170x realtime</span>

web-pages/product-site/legacy/models.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ <h2>ASR 模型</h2>
8787

8888
<div class="model-card">
8989
<div class="model-name">Fun-ASR-Nano <span class="badge badge-orange">⭐ 旗舰 / 默认推荐</span></div>
90-
<div class="model-meta">800M 参数 &middot; LLM 架构 (SenseVoice 编码器 + Qwen3-0.6B) &middot; <a href="https://github.com/QwenAudio/Fun-ASR">GitHub</a> &middot; <a href="https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512">HuggingFace</a></div>
90+
<div class="model-meta">800M 参数 &middot; LLM 架构 (SenseVoice 编码器 + Qwen3-0.6B) &middot; <a href="/go/fun-asr">GitHub</a> &middot; <a href="https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512">HuggingFace</a></div>
9191
<div class="model-desc">新一代 LLM 架构 ASR 模型。融合 SenseVoice 音频编码器与 Qwen3-0.6B 语言模型,具备更强的上下文理解能力。支持 vLLM 加速的高吞吐批量推理与实时流式服务。发布的 <code>model.pt</code> checkpoint 不提供可靠的原生字级时间戳(<a href="https://github.com/QwenAudio/Fun-ASR/issues/106" target="_blank" rel="noopener">issue #106</a>)。</div>
9292
<div class="model-features">
9393
<span class="badge badge-green">vLLM 加速</span>
@@ -122,7 +122,7 @@ <h3>适用场景</h3>
122122

123123
<div class="model-card">
124124
<div class="model-name">SenseVoice Small</div>
125-
<div class="model-meta">234M 参数 &middot; 非自回归 &middot; <a href="https://github.com/QwenAudio/SenseVoice">GitHub</a> &middot; <a href="https://huggingface.co/FunAudioLLM/SenseVoiceSmall">HuggingFace</a></div>
125+
<div class="model-meta">234M 参数 &middot; 非自回归 &middot; <a href="/go/sensevoice">GitHub</a> &middot; <a href="https://huggingface.co/FunAudioLLM/SenseVoiceSmall">HuggingFace</a></div>
126126
<div class="model-desc">极速语音识别,内置情感和音频事件检测。支持 50+ 语种,包括中文、英文、日文、韩文、法文、德文等。非自回归架构在 GPU 上实现 170 倍实时速度。</div>
127127
<div class="model-features">
128128
<span class="badge badge-green">170 倍实时</span>

web-pages/product-site/tests/test_output.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,26 @@ def test_old_llama_routes_point_to_product_pages(built_site):
139139
)
140140

141141

142+
@pytest.mark.parametrize('relative', ('models.html', 'en/models.html'))
143+
def test_model_pages_use_attributed_repository_routes(built_site, relative):
144+
soup = read_soup(built_site / relative)
145+
hrefs = {link.get('href') for link in soup.select('a[href]')}
146+
147+
assert '/go/fun-asr' in hrefs
148+
assert '/go/sensevoice' in hrefs
149+
assert 'https://github.com/QwenAudio/Fun-ASR' not in hrefs
150+
assert 'https://github.com/QwenAudio/SenseVoice' not in hrefs
151+
152+
153+
@pytest.mark.parametrize('relative', ('ecosystem.html', 'en/ecosystem.html'))
154+
def test_ecosystem_pages_use_attributed_funclip_route(built_site, relative):
155+
soup = read_soup(built_site / relative)
156+
hrefs = {link.get('href') for link in soup.select('a[href]')}
157+
158+
assert '/go/funclip' in hrefs
159+
assert 'https://github.com/modelscope/FunClip' not in hrefs
160+
161+
142162
@pytest.mark.parametrize('relative', ('ecosystem.html', 'en/ecosystem.html'))
143163
def test_ecosystem_surfaces_orca_sensevoice_desktop_integration(built_site, relative):
144164
soup = read_soup(built_site / relative)

web-pages/product-site/tests/test_release_scripts.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,19 @@
1313
NGINX_CONFIG = REPO_ROOT / 'web-pages' / 'nginx' / 'funasr.com.conf'
1414
EXPECTED_FIXED_ROUTES = {
1515
'/go/github',
16+
'/go/fun-asr',
17+
'/go/sensevoice',
18+
'/go/funclip',
1619
'/go/docs',
1720
'/go/releases',
1821
'/go/deploy-vllm',
1922
'/go/deploy-llama-cpp',
2023
}
24+
EXPECTED_REPOSITORY_ROUTES = {
25+
'/go/fun-asr': 'https://github.com/QwenAudio/Fun-ASR',
26+
'/go/sensevoice': 'https://github.com/QwenAudio/SenseVoice',
27+
'/go/funclip': 'https://github.com/modelscope/FunClip',
28+
}
2129

2230

2331
def executable(path: Path, body: str) -> Path:
@@ -120,6 +128,7 @@ def test_conversion_map_contains_only_fixed_redirects():
120128
routes[route] = target
121129

122130
assert set(routes) == EXPECTED_FIXED_ROUTES
131+
assert EXPECTED_REPOSITORY_ROUTES.items() <= routes.items()
123132
assert all(
124133
target.startswith('https://github.com/') or target.startswith('https://www.funasr.com/')
125134
for target in routes.values()

0 commit comments

Comments
 (0)