{"adoption": {"forks": 271, "observed_at": "2026-08-28T04:07:02.623009+00:00", "stars": 2585}, "canonical_url": "https://ross.abutalabs.com/products/polyglot", "card": {"archived": false, "artifact_type": "application", "description": "🤖️  Cross-platform AI language practice app （跨平台AI语言练习应用）", "domain": ["artificial-intelligence", "large-language-models", "education", "cross-platform", "desktop-applications"], "enriched": true, "function": ["chatbot", "speech-recognition", "tts", "chat-interface", "llm-inference", "internationalization"], "health_score": 53, "homepage": "https://doc.polyglotai.xyz", "language": "TypeScript", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["liou666/polyglot"], "name": "liou666/polyglot", "platform": ["windows", "cross-platform"], "pushed_at": "2025-09-03T09:45:40+00:00", "repo": "liou666/polyglot", "stars": 2585, "tags": ["language-learning", "speaking-practice", "openai", "azure-tts", "voice-chat", "desktop-app", "macos", "linux", "web-server", "electron"], "topics": ["azure", "chatgpt", "electron", "polyglot", "tts", "openai"], "urls": [], "use_cases": ["practice speaking a foreign language with an AI tutor", "have voice conversations with ChatGPT in different languages", "improve pronunciation with text-to-speech and word highlighting", "create custom AI characters and conversation scenarios for language practice", "learn English or other languages through spoken dialogue", "translate text while practicing a new language"], "what_it_is": "Polyglot is a cross-platform desktop (and web) application for practicing spoken language with AI conversation partners, built on ChatGPT for dialogue and Azure TTS/speech services for voice. It supports dozens of languages, custom AI personas and scenarios, speech recognition with hotkeys, word highlighting during playback, and translation.", "when_to_avoid": ["you need fully offline language practice without cloud AI services", "you require strong mobile support - the web version is not well adapted for phones", "you want a structured curriculum with lessons and grammar exercises rather than free-form conversation", "you cannot obtain OpenAI or Azure API keys and do not want a paid membership"], "when_to_choose": ["you want an interactive speaking-practice app rather than passive lessons", "you have your own OpenAI and Azure API keys and want a free self-configured experience", "you need a desktop app on macOS, Windows, or Linux (or a web version)", "you want customizable AI personas, scenarios, and multiple languages"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/polyglot", "repo": "liou666/polyglot", "role": "main", "score": 39}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:02.623009+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:22:27.993654+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0805dc812890900efcbc4ef2a83668f8886f7343466244a74267fb0cb5b8c5e3", "fetched_at": "2026-08-28T04:07:02.623009+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liou666/polyglot"}, {"content_hash": "b5371357cc7dd57f9dda571371613fcc577b167ef0378944db9fa1e0c22718d5", "fetched_at": "2026-08-29T10:05:12.380476+00:00", "kind": "homepage", "missing": false, "url": "https://doc.polyglotai.xyz"}, {"content_hash": "f8053f146370d1fdab639708fe436f8c7841956ce0f7020813bc693b569d9d43", "fetched_at": "2026-08-29T10:05:12.389468+00:00", "kind": "site_page", "missing": false, "url": "https://doc.polyglotai.xyz/faq"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:02.623009+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:22:27.993654+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0805dc812890900efcbc4ef2a83668f8886f7343466244a74267fb0cb5b8c5e3", "fetched_at": "2026-08-28T04:07:02.623009+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liou666/polyglot"}, {"content_hash": "b5371357cc7dd57f9dda571371613fcc577b167ef0378944db9fa1e0c22718d5", "fetched_at": "2026-08-29T10:05:12.380476+00:00", "kind": "homepage", "missing": false, "url": "https://doc.polyglotai.xyz"}, {"content_hash": "f8053f146370d1fdab639708fe436f8c7841956ce0f7020813bc693b569d9d43", "fetched_at": "2026-08-29T10:05:12.389468+00:00", "kind": "site_page", "missing": false, "url": "https://doc.polyglotai.xyz/faq"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:22:27.993654+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0805dc812890900efcbc4ef2a83668f8886f7343466244a74267fb0cb5b8c5e3", "fetched_at": "2026-08-28T04:07:02.623009+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liou666/polyglot"}, {"content_hash": "b5371357cc7dd57f9dda571371613fcc577b167ef0378944db9fa1e0c22718d5", "fetched_at": "2026-08-29T10:05:12.380476+00:00", "kind": "homepage", "missing": false, "url": "https://doc.polyglotai.xyz"}, {"content_hash": "f8053f146370d1fdab639708fe436f8c7841956ce0f7020813bc693b569d9d43", "fetched_at": "2026-08-29T10:05:12.389468+00:00", "kind": "site_page", "missing": false, "url": "https://doc.polyglotai.xyz/faq"}], "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:07:02.623009+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:02.623009+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:02.623009+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:22:27.993654+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0805dc812890900efcbc4ef2a83668f8886f7343466244a74267fb0cb5b8c5e3", "fetched_at": "2026-08-28T04:07:02.623009+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liou666/polyglot"}, {"content_hash": "b5371357cc7dd57f9dda571371613fcc577b167ef0378944db9fa1e0c22718d5", "fetched_at": "2026-08-29T10:05:12.380476+00:00", "kind": "homepage", "missing": false, "url": "https://doc.polyglotai.xyz"}, {"content_hash": "f8053f146370d1fdab639708fe436f8c7841956ce0f7020813bc693b569d9d43", "fetched_at": "2026-08-29T10:05:12.389468+00:00", "kind": "site_page", "missing": false, "url": "https://doc.polyglotai.xyz/faq"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:02.623009+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:02.623009+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:22:27.993654+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0805dc812890900efcbc4ef2a83668f8886f7343466244a74267fb0cb5b8c5e3", "fetched_at": "2026-08-28T04:07:02.623009+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liou666/polyglot"}, {"content_hash": "b5371357cc7dd57f9dda571371613fcc577b167ef0378944db9fa1e0c22718d5", "fetched_at": "2026-08-29T10:05:12.380476+00:00", "kind": "homepage", "missing": false, "url": "https://doc.polyglotai.xyz"}, {"content_hash": "f8053f146370d1fdab639708fe436f8c7841956ce0f7020813bc693b569d9d43", "fetched_at": "2026-08-29T10:05:12.389468+00:00", "kind": "site_page", "missing": false, "url": "https://doc.polyglotai.xyz/faq"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:02.623009+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:02.623009+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:02.623009+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:22:27.993654+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0805dc812890900efcbc4ef2a83668f8886f7343466244a74267fb0cb5b8c5e3", "fetched_at": "2026-08-28T04:07:02.623009+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liou666/polyglot"}, {"content_hash": "b5371357cc7dd57f9dda571371613fcc577b167ef0378944db9fa1e0c22718d5", "fetched_at": "2026-08-29T10:05:12.380476+00:00", "kind": "homepage", "missing": false, "url": "https://doc.polyglotai.xyz"}, {"content_hash": "f8053f146370d1fdab639708fe436f8c7841956ce0f7020813bc693b569d9d43", "fetched_at": "2026-08-29T10:05:12.389468+00:00", "kind": "site_page", "missing": false, "url": "https://doc.polyglotai.xyz/faq"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:02.623009+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:02.623009+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:22:27.993654+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0805dc812890900efcbc4ef2a83668f8886f7343466244a74267fb0cb5b8c5e3", "fetched_at": "2026-08-28T04:07:02.623009+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liou666/polyglot"}, {"content_hash": "b5371357cc7dd57f9dda571371613fcc577b167ef0378944db9fa1e0c22718d5", "fetched_at": "2026-08-29T10:05:12.380476+00:00", "kind": "homepage", "missing": false, "url": "https://doc.polyglotai.xyz"}, {"content_hash": "f8053f146370d1fdab639708fe436f8c7841956ce0f7020813bc693b569d9d43", "fetched_at": "2026-08-29T10:05:12.389468+00:00", "kind": "site_page", "missing": false, "url": "https://doc.polyglotai.xyz/faq"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:22:27.993654+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0805dc812890900efcbc4ef2a83668f8886f7343466244a74267fb0cb5b8c5e3", "fetched_at": "2026-08-28T04:07:02.623009+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liou666/polyglot"}, {"content_hash": "b5371357cc7dd57f9dda571371613fcc577b167ef0378944db9fa1e0c22718d5", "fetched_at": "2026-08-29T10:05:12.380476+00:00", "kind": "homepage", "missing": false, "url": "https://doc.polyglotai.xyz"}, {"content_hash": "f8053f146370d1fdab639708fe436f8c7841956ce0f7020813bc693b569d9d43", "fetched_at": "2026-08-29T10:05:12.389468+00:00", "kind": "site_page", "missing": false, "url": "https://doc.polyglotai.xyz/faq"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:22:27.993654+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0805dc812890900efcbc4ef2a83668f8886f7343466244a74267fb0cb5b8c5e3", "fetched_at": "2026-08-28T04:07:02.623009+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liou666/polyglot"}, {"content_hash": "b5371357cc7dd57f9dda571371613fcc577b167ef0378944db9fa1e0c22718d5", "fetched_at": "2026-08-29T10:05:12.380476+00:00", "kind": "homepage", "missing": false, "url": "https://doc.polyglotai.xyz"}, {"content_hash": "f8053f146370d1fdab639708fe436f8c7841956ce0f7020813bc693b569d9d43", "fetched_at": "2026-08-29T10:05:12.389468+00:00", "kind": "site_page", "missing": false, "url": "https://doc.polyglotai.xyz/faq"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:22:27.993654+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0805dc812890900efcbc4ef2a83668f8886f7343466244a74267fb0cb5b8c5e3", "fetched_at": "2026-08-28T04:07:02.623009+00:00", "kind": "readme", "missing": false, "url": "https://github.com/liou666/polyglot"}, {"content_hash": "b5371357cc7dd57f9dda571371613fcc577b167ef0378944db9fa1e0c22718d5", "fetched_at": "2026-08-29T10:05:12.380476+00:00", "kind": "homepage", "missing": false, "url": "https://doc.polyglotai.xyz"}, {"content_hash": "f8053f146370d1fdab639708fe436f8c7841956ce0f7020813bc693b569d9d43", "fetched_at": "2026-08-29T10:05:12.389468+00:00", "kind": "site_page", "missing": false, "url": "https://doc.polyglotai.xyz/faq"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 40, "longevity": 90, "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": 1267, "days_push": 364, "days_rel": 683, "gap_med": null, "n_releases_24m": 1}, "score": 39, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}