diff --git a/web-pages/product-site/content/legacy-manifest.json b/web-pages/product-site/content/legacy-manifest.json index 43d0059df..0f946829b 100644 --- a/web-pages/product-site/content/legacy-manifest.json +++ b/web-pages/product-site/content/legacy-manifest.json @@ -38,7 +38,7 @@ "css/index.1682178c.css": "b5f6034ce886c25773928c114e4290d1c491a3d081677b488810198efd76b4e1", "decoder.js": "f2023a28036b1ff58e5bdabbb72ea427f8faaf60e89acd78ff183c313bdb0a2c", "donors.html": "eec6b789b29c27d372925ae0ad3e13d4c6e62978b3c38c4da9e3aec129f10934", - "ecosystem.html": "3b227e085d285018188ac3c2891d8940455f661fa7dcfa3a69ef4c4b12a8a7db", + "ecosystem.html": "6c547fd83f245652513fcd739db7d314cf8b3b6b9e4ce75b1840cff58039dab0", "en/blog/cantonese-speech-recognition.html": "b9bd146198206f781c37f341c370a690dc83cd7163334e34b4e7f65e69af8ff2", "en/blog/chinese-speech-recognition.html": "16b68bd2a1122236c580c62275002ae2c0875ca14e32686e88d3b5ccfa9f56ef", "en/blog/fun-asr-nano-guide.html": "1746c708bd0606188de4266d8255984dd9e14634af33c54ad65a5f05b767be1b", @@ -69,7 +69,7 @@ "en/blog/voice-activity-detection-python.html": "d12f5d0f4ae07c3434f6188d12f5603b8abb9578413b79133668638d1c5e18a7", "en/blog/which-funasr-model.html": "1207180aa929a3aa51db136c1098f4edc8f07405e2b56fe033998bf996f8ec7f", "en/donors.html": "eacb7f9434b1b29e13e9b0175bb9680556ee72ab4dbd155e68f9c912eb0212b1", - "en/ecosystem.html": "e07daf9a241d28b9a25df7d58c693289d61e056cb864faf71095aa6cef7b5b32", + "en/ecosystem.html": "e498a8740c1cdf757556b40941b77f470ad51fb744d29e98025b4293e7e96f2e", "en/index.html": "4950bc2e0b337637300c5bcd45d1820d9636c4f1dab34e0ec8d3443be44bd277", "en/llama-cpp.html": "dbfbd125ebbf07f7d923c91b122818f8b09484ce54c1e80eba66a89d22dfb5b4", "en/models.html": "c2add621edc3aa63e6d49587f089ee5ac6c05faf5f68e14fef70a7a5ab443a4d", diff --git a/web-pages/product-site/legacy/ecosystem.html b/web-pages/product-site/legacy/ecosystem.html index f0e3c65f2..634c215eb 100644 --- a/web-pages/product-site/legacy/ecosystem.html +++ b/web-pages/product-site/legacy/ecosystem.html @@ -88,6 +88,12 @@

视频与媒体工具

视频官方
+
WhisperLiveKit
+
10.5K+ stars
+
实时流式转写服务。已合并的 SenseVoiceSmall backend 接入 LocalAgreement 与 VAC/VAD 流水线,保留 word timestamp,支持自动检测及普通话、粤语、英语、日语和韩语。
+
实时转写SenseVoiceSmall
+
+
pyVideoTrans
17.6K stars
视频翻译工具。使用 FunASR 进行中文语音识别,自动生成和翻译字幕。
diff --git a/web-pages/product-site/legacy/en/ecosystem.html b/web-pages/product-site/legacy/en/ecosystem.html index 903b23977..d069654f0 100644 --- a/web-pages/product-site/legacy/en/ecosystem.html +++ b/web-pages/product-site/legacy/en/ecosystem.html @@ -89,6 +89,12 @@

Video & Media Tools

VideoOfficial
+
WhisperLiveKit
+
10.5K+ stars
+
Real-time streaming transcription. The merged SenseVoiceSmall backend runs through LocalAgreement and the VAC/VAD pipeline, preserves word timestamps, and supports auto detection plus Mandarin, Cantonese, English, Japanese, and Korean.
+
Live TranscriptionSenseVoiceSmall
+
+
pyVideoTrans
17.6K stars
Video translation tool. Uses FunASR for Chinese speech recognition with subtitle generation.
diff --git a/web-pages/product-site/tests/test_output.py b/web-pages/product-site/tests/test_output.py index fb89b73e8..0463b61e4 100644 --- a/web-pages/product-site/tests/test_output.py +++ b/web-pages/product-site/tests/test_output.py @@ -177,6 +177,25 @@ def test_ecosystem_surfaces_orca_sensevoice_desktop_integration(built_site, rela assert marker in text +@pytest.mark.parametrize('relative', ('ecosystem.html', 'en/ecosystem.html')) +def test_ecosystem_surfaces_merged_whisperlivekit_sensevoice_backend( + built_site, relative +): + soup = read_soup(built_site / relative) + anchor = soup.select_one( + '.card-title a[href="https://github.com/QuentinFuxa/WhisperLiveKit"]' + ) + + assert anchor + card = anchor.find_parent(class_='card') + assert card + links = {link.get('href') for link in card.select('a[href]')} + assert 'https://github.com/QuentinFuxa/WhisperLiveKit/pull/385' in links + text = card.get_text(' ', strip=True) + for marker in ('SenseVoiceSmall', 'LocalAgreement', 'VAC/VAD', 'timestamp'): + assert marker in text + + def test_complete_build_passes_output_validation(built_site): assert validate_output(built_site) == []