{"adoption": {"forks": 857, "observed_at": "2026-08-28T04:09:35.057637+00:00", "stars": 6101}, "canonical_url": "https://ross.abutalabs.com/products/tts-vue", "card": {"archived": false, "artifact_type": "application", "description": "🎤 微软语音合成工具，使用 Electron + Vue + ElementPlus + Vite 构建。", "domain": ["speech-processing", "desktop-applications", "developer-tools"], "enriched": true, "function": ["tts", "speech-recognition", "gui"], "health_score": 69, "homepage": "https://tts-doc.loker.vip/home.html", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["LokerL/tts-vue"], "name": "LokerL/tts-vue", "platform": ["windows", "cross-platform"], "pushed_at": "2026-04-24T03:10:09+00:00", "repo": "LokerL/tts-vue", "stars": 6101, "tags": ["text-to-speech", "microsoft-edge-tts", "ssml", "vue", "electron", "voice-synthesis", "batch-conversion", "audio", "macos", "linux", "desktop"], "topics": ["electron", "element-plus", "tts", "vue"], "urls": [], "use_cases": ["convert text to speech using Microsoft voices", "batch convert multiple txt files to audio", "generate narration audio from long documents", "preview and select different TTS voices", "create voiceovers for videos or presentations", "use SSML to control speech synthesis output"], "what_it_is": "TTS-Vue is a cross-platform desktop text-to-speech application built with Electron, Vue, ElementPlus, and Vite that uses Microsoft's Edge TTS WebSocket service. It supports SSML, batch conversion of multiple text files, automatic slicing of long texts, voice preview, and logging.", "when_to_avoid": ["you need fully offline speech synthesis without Microsoft's online service", "you require commercial-use licensing - the project restricts usage to personal learning/testing", "you need a CLI or programmatic API rather than a GUI"], "when_to_choose": ["you want a free desktop GUI for Microsoft Edge TTS voices", "you need batch conversion or long-text slicing into a single audio file", "you want SSML support with voice preview in a desktop app"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/tts-vue", "repo": "LokerL/tts-vue", "role": "main", "score": 58}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:35.057637+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:48:15.555807+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ebcb4f073f2b77d57a14da946ddad2a83d23828951a36e788777fa275d081e3", "fetched_at": "2026-08-28T04:09:35.057637+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LokerL/tts-vue"}, {"content_hash": "78e9409f964c48bd9636439033f2d8455701494f2e035db4032aac583dc30803", "fetched_at": "2026-08-29T08:45:02.447395+00:00", "kind": "homepage", "missing": false, "url": "https://tts-doc.loker.vip/home.html"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:35.057637+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:48:15.555807+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ebcb4f073f2b77d57a14da946ddad2a83d23828951a36e788777fa275d081e3", "fetched_at": "2026-08-28T04:09:35.057637+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LokerL/tts-vue"}, {"content_hash": "78e9409f964c48bd9636439033f2d8455701494f2e035db4032aac583dc30803", "fetched_at": "2026-08-29T08:45:02.447395+00:00", "kind": "homepage", "missing": false, "url": "https://tts-doc.loker.vip/home.html"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:48:15.555807+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ebcb4f073f2b77d57a14da946ddad2a83d23828951a36e788777fa275d081e3", "fetched_at": "2026-08-28T04:09:35.057637+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LokerL/tts-vue"}, {"content_hash": "78e9409f964c48bd9636439033f2d8455701494f2e035db4032aac583dc30803", "fetched_at": "2026-08-29T08:45:02.447395+00:00", "kind": "homepage", "missing": false, "url": "https://tts-doc.loker.vip/home.html"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:09:35.057637+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:35.057637+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:35.057637+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:48:15.555807+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ebcb4f073f2b77d57a14da946ddad2a83d23828951a36e788777fa275d081e3", "fetched_at": "2026-08-28T04:09:35.057637+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LokerL/tts-vue"}, {"content_hash": "78e9409f964c48bd9636439033f2d8455701494f2e035db4032aac583dc30803", "fetched_at": "2026-08-29T08:45:02.447395+00:00", "kind": "homepage", "missing": false, "url": "https://tts-doc.loker.vip/home.html"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:35.057637+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:35.057637+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:48:15.555807+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ebcb4f073f2b77d57a14da946ddad2a83d23828951a36e788777fa275d081e3", "fetched_at": "2026-08-28T04:09:35.057637+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LokerL/tts-vue"}, {"content_hash": "78e9409f964c48bd9636439033f2d8455701494f2e035db4032aac583dc30803", "fetched_at": "2026-08-29T08:45:02.447395+00:00", "kind": "homepage", "missing": false, "url": "https://tts-doc.loker.vip/home.html"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:35.057637+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:35.057637+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:35.057637+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:48:15.555807+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ebcb4f073f2b77d57a14da946ddad2a83d23828951a36e788777fa275d081e3", "fetched_at": "2026-08-28T04:09:35.057637+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LokerL/tts-vue"}, {"content_hash": "78e9409f964c48bd9636439033f2d8455701494f2e035db4032aac583dc30803", "fetched_at": "2026-08-29T08:45:02.447395+00:00", "kind": "homepage", "missing": false, "url": "https://tts-doc.loker.vip/home.html"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:35.057637+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:35.057637+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:48:15.555807+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ebcb4f073f2b77d57a14da946ddad2a83d23828951a36e788777fa275d081e3", "fetched_at": "2026-08-28T04:09:35.057637+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LokerL/tts-vue"}, {"content_hash": "78e9409f964c48bd9636439033f2d8455701494f2e035db4032aac583dc30803", "fetched_at": "2026-08-29T08:45:02.447395+00:00", "kind": "homepage", "missing": false, "url": "https://tts-doc.loker.vip/home.html"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:48:15.555807+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ebcb4f073f2b77d57a14da946ddad2a83d23828951a36e788777fa275d081e3", "fetched_at": "2026-08-28T04:09:35.057637+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LokerL/tts-vue"}, {"content_hash": "78e9409f964c48bd9636439033f2d8455701494f2e035db4032aac583dc30803", "fetched_at": "2026-08-29T08:45:02.447395+00:00", "kind": "homepage", "missing": false, "url": "https://tts-doc.loker.vip/home.html"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:48:15.555807+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ebcb4f073f2b77d57a14da946ddad2a83d23828951a36e788777fa275d081e3", "fetched_at": "2026-08-28T04:09:35.057637+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LokerL/tts-vue"}, {"content_hash": "78e9409f964c48bd9636439033f2d8455701494f2e035db4032aac583dc30803", "fetched_at": "2026-08-29T08:45:02.447395+00:00", "kind": "homepage", "missing": false, "url": "https://tts-doc.loker.vip/home.html"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:48:15.555807+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3ebcb4f073f2b77d57a14da946ddad2a83d23828951a36e788777fa275d081e3", "fetched_at": "2026-08-28T04:09:35.057637+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LokerL/tts-vue"}, {"content_hash": "78e9409f964c48bd9636439033f2d8455701494f2e035db4032aac583dc30803", "fetched_at": "2026-08-29T08:45:02.447395+00:00", "kind": "homepage", "missing": false, "url": "https://tts-doc.loker.vip/home.html"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 79, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1499, "days_push": 131, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 58, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}