{"adoption": {"forks": 454, "observed_at": "2026-08-28T04:07:42.439799+00:00", "stars": 3094}, "canonical_url": "https://ross.abutalabs.com/products/voice", "card": {"archived": false, "artifact_type": "application", "description": "Minimalistic audiobook player", "domain": ["mobile-development", "media", "developer-tools"], "enriched": true, "function": ["gui"], "health_score": 99, "homepage": "https://voice.woitaschek.de", "language": "Kotlin", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["PaulWoitaschek/Voice"], "name": "PaulWoitaschek/Voice", "platform": [], "pushed_at": "2026-08-26T21:53:23+00:00", "repo": "PaulWoitaschek/Voice", "stars": 3094, "tags": ["audiobook-player", "jetpack-compose", "material-design", "offline-first", "privacy", "android-auto", "sleep-timer", "bookmarks", "android"], "topics": ["audiobook-player", "kotlin", "kotlin-android", "minimal", "material-design", "android", "compose", "jetpack-compose"], "urls": [], "use_cases": ["play local m4b and mp3 audiobooks on android", "resume audiobook where i left off", "set a sleep timer with fade-out for listening at night", "skip silence and adjust playback speed in audiobooks", "navigate audiobook chapters and add bookmarks", "listen to audiobooks in the car with android auto", "manage a private offline audiobook library without accounts or ads"], "what_it_is": "Voice is a minimalistic, open-source audiobook player for Android built with Kotlin and Jetpack Compose. It plays local audiobook files (M4B, MP3, M4A, OGG, OPUS) with resume positions, chapter navigation, bookmarks, sleep timer, playback speed, silence skipping, and Android Auto support.", "when_to_avoid": ["you need streaming from audiobook services like Audible", "you want cloud sync across devices", "you need formats not natively supported by Android", "you want a feature-rich player with extensive settings and plugins"], "when_to_choose": []}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/voice", "repo": "PaulWoitaschek/Voice", "role": "main", "score": 96}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:42.439799+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:46:23.567997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b2e3493398e05c71039be67366c4b5eb3832c86c7944cfbe49b14b8e163837fc", "fetched_at": "2026-08-28T04:07:42.439799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaulWoitaschek/Voice"}, {"content_hash": "eeb16eddf7a28677063719344e400c188304d7c0ff8efca5d79188c54d368fb2", "fetched_at": "2026-08-29T09:42:31.955534+00:00", "kind": "homepage", "missing": false, "url": "https://voice.woitaschek.de"}, {"content_hash": "2e9201625ad3ea8d791fe44edfda4b08ad944d2fcc1e981ea9dcef58249ef004", "fetched_at": "2026-08-29T09:42:31.964360+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/about"}, {"content_hash": "45cc90e81f340641ae8b4dbc7181378959de4498954dafb15215851662b3362f", "fetched_at": "2026-08-29T09:42:31.966742+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/faq"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:42.439799+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:46:23.567997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b2e3493398e05c71039be67366c4b5eb3832c86c7944cfbe49b14b8e163837fc", "fetched_at": "2026-08-28T04:07:42.439799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaulWoitaschek/Voice"}, {"content_hash": "eeb16eddf7a28677063719344e400c188304d7c0ff8efca5d79188c54d368fb2", "fetched_at": "2026-08-29T09:42:31.955534+00:00", "kind": "homepage", "missing": false, "url": "https://voice.woitaschek.de"}, {"content_hash": "2e9201625ad3ea8d791fe44edfda4b08ad944d2fcc1e981ea9dcef58249ef004", "fetched_at": "2026-08-29T09:42:31.964360+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/about"}, {"content_hash": "45cc90e81f340641ae8b4dbc7181378959de4498954dafb15215851662b3362f", "fetched_at": "2026-08-29T09:42:31.966742+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/faq"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:46:23.567997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b2e3493398e05c71039be67366c4b5eb3832c86c7944cfbe49b14b8e163837fc", "fetched_at": "2026-08-28T04:07:42.439799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaulWoitaschek/Voice"}, {"content_hash": "eeb16eddf7a28677063719344e400c188304d7c0ff8efca5d79188c54d368fb2", "fetched_at": "2026-08-29T09:42:31.955534+00:00", "kind": "homepage", "missing": false, "url": "https://voice.woitaschek.de"}, {"content_hash": "2e9201625ad3ea8d791fe44edfda4b08ad944d2fcc1e981ea9dcef58249ef004", "fetched_at": "2026-08-29T09:42:31.964360+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/about"}, {"content_hash": "45cc90e81f340641ae8b4dbc7181378959de4498954dafb15215851662b3362f", "fetched_at": "2026-08-29T09:42:31.966742+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/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:42.439799+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:42.439799+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:42.439799+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:46:23.567997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b2e3493398e05c71039be67366c4b5eb3832c86c7944cfbe49b14b8e163837fc", "fetched_at": "2026-08-28T04:07:42.439799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaulWoitaschek/Voice"}, {"content_hash": "eeb16eddf7a28677063719344e400c188304d7c0ff8efca5d79188c54d368fb2", "fetched_at": "2026-08-29T09:42:31.955534+00:00", "kind": "homepage", "missing": false, "url": "https://voice.woitaschek.de"}, {"content_hash": "2e9201625ad3ea8d791fe44edfda4b08ad944d2fcc1e981ea9dcef58249ef004", "fetched_at": "2026-08-29T09:42:31.964360+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/about"}, {"content_hash": "45cc90e81f340641ae8b4dbc7181378959de4498954dafb15215851662b3362f", "fetched_at": "2026-08-29T09:42:31.966742+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/faq"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:42.439799+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:42.439799+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:46:23.567997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b2e3493398e05c71039be67366c4b5eb3832c86c7944cfbe49b14b8e163837fc", "fetched_at": "2026-08-28T04:07:42.439799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaulWoitaschek/Voice"}, {"content_hash": "eeb16eddf7a28677063719344e400c188304d7c0ff8efca5d79188c54d368fb2", "fetched_at": "2026-08-29T09:42:31.955534+00:00", "kind": "homepage", "missing": false, "url": "https://voice.woitaschek.de"}, {"content_hash": "2e9201625ad3ea8d791fe44edfda4b08ad944d2fcc1e981ea9dcef58249ef004", "fetched_at": "2026-08-29T09:42:31.964360+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/about"}, {"content_hash": "45cc90e81f340641ae8b4dbc7181378959de4498954dafb15215851662b3362f", "fetched_at": "2026-08-29T09:42:31.966742+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/faq"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:42.439799+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:42.439799+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:42.439799+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:46:23.567997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b2e3493398e05c71039be67366c4b5eb3832c86c7944cfbe49b14b8e163837fc", "fetched_at": "2026-08-28T04:07:42.439799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaulWoitaschek/Voice"}, {"content_hash": "eeb16eddf7a28677063719344e400c188304d7c0ff8efca5d79188c54d368fb2", "fetched_at": "2026-08-29T09:42:31.955534+00:00", "kind": "homepage", "missing": false, "url": "https://voice.woitaschek.de"}, {"content_hash": "2e9201625ad3ea8d791fe44edfda4b08ad944d2fcc1e981ea9dcef58249ef004", "fetched_at": "2026-08-29T09:42:31.964360+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/about"}, {"content_hash": "45cc90e81f340641ae8b4dbc7181378959de4498954dafb15215851662b3362f", "fetched_at": "2026-08-29T09:42:31.966742+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/faq"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:42.439799+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:42.439799+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:46:23.567997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b2e3493398e05c71039be67366c4b5eb3832c86c7944cfbe49b14b8e163837fc", "fetched_at": "2026-08-28T04:07:42.439799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaulWoitaschek/Voice"}, {"content_hash": "eeb16eddf7a28677063719344e400c188304d7c0ff8efca5d79188c54d368fb2", "fetched_at": "2026-08-29T09:42:31.955534+00:00", "kind": "homepage", "missing": false, "url": "https://voice.woitaschek.de"}, {"content_hash": "2e9201625ad3ea8d791fe44edfda4b08ad944d2fcc1e981ea9dcef58249ef004", "fetched_at": "2026-08-29T09:42:31.964360+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/about"}, {"content_hash": "45cc90e81f340641ae8b4dbc7181378959de4498954dafb15215851662b3362f", "fetched_at": "2026-08-29T09:42:31.966742+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/faq"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:46:23.567997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b2e3493398e05c71039be67366c4b5eb3832c86c7944cfbe49b14b8e163837fc", "fetched_at": "2026-08-28T04:07:42.439799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaulWoitaschek/Voice"}, {"content_hash": "eeb16eddf7a28677063719344e400c188304d7c0ff8efca5d79188c54d368fb2", "fetched_at": "2026-08-29T09:42:31.955534+00:00", "kind": "homepage", "missing": false, "url": "https://voice.woitaschek.de"}, {"content_hash": "2e9201625ad3ea8d791fe44edfda4b08ad944d2fcc1e981ea9dcef58249ef004", "fetched_at": "2026-08-29T09:42:31.964360+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/about"}, {"content_hash": "45cc90e81f340641ae8b4dbc7181378959de4498954dafb15215851662b3362f", "fetched_at": "2026-08-29T09:42:31.966742+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/faq"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:46:23.567997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b2e3493398e05c71039be67366c4b5eb3832c86c7944cfbe49b14b8e163837fc", "fetched_at": "2026-08-28T04:07:42.439799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaulWoitaschek/Voice"}, {"content_hash": "eeb16eddf7a28677063719344e400c188304d7c0ff8efca5d79188c54d368fb2", "fetched_at": "2026-08-29T09:42:31.955534+00:00", "kind": "homepage", "missing": false, "url": "https://voice.woitaschek.de"}, {"content_hash": "2e9201625ad3ea8d791fe44edfda4b08ad944d2fcc1e981ea9dcef58249ef004", "fetched_at": "2026-08-29T09:42:31.964360+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/about"}, {"content_hash": "45cc90e81f340641ae8b4dbc7181378959de4498954dafb15215851662b3362f", "fetched_at": "2026-08-29T09:42:31.966742+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/faq"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:46:23.567997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b2e3493398e05c71039be67366c4b5eb3832c86c7944cfbe49b14b8e163837fc", "fetched_at": "2026-08-28T04:07:42.439799+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaulWoitaschek/Voice"}, {"content_hash": "eeb16eddf7a28677063719344e400c188304d7c0ff8efca5d79188c54d368fb2", "fetched_at": "2026-08-29T09:42:31.955534+00:00", "kind": "homepage", "missing": false, "url": "https://voice.woitaschek.de"}, {"content_hash": "2e9201625ad3ea8d791fe44edfda4b08ad944d2fcc1e981ea9dcef58249ef004", "fetched_at": "2026-08-29T09:42:31.964360+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/about"}, {"content_hash": "45cc90e81f340641ae8b4dbc7181378959de4498954dafb15215851662b3362f", "fetched_at": "2026-08-29T09:42:31.966742+00:00", "kind": "site_page", "missing": false, "url": "https://voice.woitaschek.de/faq"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 89}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4414, "days_push": 7, "days_rel": 78, "gap_med": 6.0, "n_releases_24m": 29}, "score": 96, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}