diff --git a/web-pages/product-site/content/legacy-manifest.json b/web-pages/product-site/content/legacy-manifest.json index 2b83e7131..28457cfe9 100644 --- a/web-pages/product-site/content/legacy-manifest.json +++ b/web-pages/product-site/content/legacy-manifest.json @@ -37,7 +37,7 @@ "css/index.1682178c.css": "b5f6034ce886c25773928c114e4290d1c491a3d081677b488810198efd76b4e1", "decoder.js": "f2023a28036b1ff58e5bdabbb72ea427f8faaf60e89acd78ff183c313bdb0a2c", "donors.html": "eec6b789b29c27d372925ae0ad3e13d4c6e62978b3c38c4da9e3aec129f10934", - "ecosystem.html": "2214922049961927cc9f45cf379b7205b39b11ce0e687d294b3f60816a63d7a6", + "ecosystem.html": "1774b107ae9c29dea63889df7fc72ce9f20482c9531c20a93b956e6d1e735c14", "en/blog/cantonese-speech-recognition.html": "b9bd146198206f781c37f341c370a690dc83cd7163334e34b4e7f65e69af8ff2", "en/blog/chinese-speech-recognition.html": "16b68bd2a1122236c580c62275002ae2c0875ca14e32686e88d3b5ccfa9f56ef", "en/blog/fun-asr-nano-guide.html": "1746c708bd0606188de4266d8255984dd9e14634af33c54ad65a5f05b767be1b", @@ -67,7 +67,7 @@ "en/blog/voice-activity-detection-python.html": "d12f5d0f4ae07c3434f6188d12f5603b8abb9578413b79133668638d1c5e18a7", "en/blog/which-funasr-model.html": "1207180aa929a3aa51db136c1098f4edc8f07405e2b56fe033998bf996f8ec7f", "en/donors.html": "eacb7f9434b1b29e13e9b0175bb9680556ee72ab4dbd155e68f9c912eb0212b1", - "en/ecosystem.html": "259afda1471c6df08914756b25c0a4a9e0df2c7b1a021643cd8808377a8b6f58", + "en/ecosystem.html": "ba37210274c38f1a8aa3cee762e866f2dc5fb70c7690d7313d45f40f9274aa43", "en/index.html": "4950bc2e0b337637300c5bcd45d1820d9636c4f1dab34e0ec8d3443be44bd277", "en/llama-cpp.html": "dbfbd125ebbf07f7d923c91b122818f8b09484ce54c1e80eba66a89d22dfb5b4", "en/models.html": "07421617d1e56a6b5d239fc683bdf62d6bd9e5ecb0f4f82013ee9929cfd91829", diff --git a/web-pages/product-site/legacy/ecosystem.html b/web-pages/product-site/legacy/ecosystem.html index 1bca6463c..e5845724c 100644 --- a/web-pages/product-site/legacy/ecosystem.html +++ b/web-pages/product-site/legacy/ecosystem.html @@ -122,6 +122,12 @@

语音输入与桌面应用

桌面macOS
+
Orca
+
30K+ stars
+
跨平台本地 AI 桌面应用。SenseVoice 集成已在 #7436 合并,通过 sherpa-onnx 在 macOS、Linux 和 Windows 离线自动识别中文、英文、日文、韩文和粤语。当前可在 v1.4.159-rc.1 预发布版使用;v1.4.158 稳定版尚不包含。
+
桌面离线SenseVoice
+
+
ququ
2.2K stars
开源 Wispr Flow 替代方案。集成 FunASR 本地模型和可配置大语言模型的桌面语音工作流。
diff --git a/web-pages/product-site/legacy/en/ecosystem.html b/web-pages/product-site/legacy/en/ecosystem.html index 06fc8200f..799f8ce96 100644 --- a/web-pages/product-site/legacy/en/ecosystem.html +++ b/web-pages/product-site/legacy/en/ecosystem.html @@ -123,6 +123,12 @@

Voice Input & Desktop Apps

DesktopmacOS
+
Orca
+
30K+ stars
+
Cross-platform local AI desktop app. The SenseVoice integration was merged in #7436 and uses sherpa-onnx for offline automatic Chinese, English, Japanese, Korean, and Cantonese recognition on macOS, Linux, and Windows. It is available in the v1.4.159-rc.1 prerelease; v1.4.158 stable predates the integration.
+
DesktopOfflineSenseVoice
+
+
ququ
2.2K stars
Open-source Wispr Flow alternative. Desktop voice workflow integrating FunASR local models with configurable LLMs.
diff --git a/web-pages/product-site/tests/test_output.py b/web-pages/product-site/tests/test_output.py index 0195c594c..404ccfc26 100644 --- a/web-pages/product-site/tests/test_output.py +++ b/web-pages/product-site/tests/test_output.py @@ -112,6 +112,24 @@ def test_old_llama_routes_point_to_product_pages(built_site): ) +@pytest.mark.parametrize('relative', ('ecosystem.html', 'en/ecosystem.html')) +def test_ecosystem_surfaces_orca_sensevoice_desktop_integration(built_site, relative): + soup = read_soup(built_site / relative) + anchor = soup.select_one( + '.card-title a[href="https://github.com/stablyai/orca"]' + ) + + 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/stablyai/orca/pull/7436' in links + assert 'https://github.com/stablyai/orca/releases/tag/v1.4.159-rc.1' in links + text = card.get_text(' ', strip=True) + for marker in ('SenseVoice', 'macOS', 'Linux', 'Windows', 'v1.4.158'): + assert marker in text + + def test_complete_build_passes_output_validation(built_site): assert validate_output(built_site) == []