Repository navigation
Find voices for stations the directory never tagged - #79
Merged
Merged
Conversation
Mode filtering reads tags, and around half the live stations in the countries with the worst coverage carry none: 9 of Bangladesh's 23, 32 of Nigeria's 62, 25 of Egypt's 47. Adds three families of name signal found by inspecting those stations: format words, networks that broadcast nothing but speech, and Quran reciter names in Latin and Arabic script. Broadcasters that also run music services are left out, since the name alone cannot settle them. Voices detected: BD 6 to 8, EG 9 to 15, NG 18 to 22, PK 10 to 12. Unchanged in IN, MX, TR, GB and US. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
raj-khan
added a commit
that referenced
this pull request
Sep 19, 2026
Mode filtering reads tags, and around half the live stations in the countries with the worst coverage carry none: 9 of Bangladesh's 23, 32 of Nigeria's 62, 25 of Egypt's 47. Adds three families of name signal found by inspecting those stations: format words, networks that broadcast nothing but speech, and Quran reciter names in Latin and Arabic script. Broadcasters that also run music services are left out, since the name alone cannot settle them. Voices detected: BD 6 to 8, EG 9 to 15, NG 18 to 22, PK 10 to 12. Unchanged in IN, MX, TR, GB and US.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Mode filtering reads tags, and in the countries with the worst coverage roughly half the live stations carry none at all: 9 of Bangladesh's 23, 32 of Nigeria's 62, 25 of Egypt's 47. Those stations can never match Voices whatever they actually broadcast.
I went through the untagged lists by hand to see what signal was actually there, rather than inventing one.
What changed
Three families added to the name signal:
Format words.
infois how French and West African networks label a news service (France Info, Nigeria Info), and a sports station is commentary and phone-ins rather than records.Networks that broadcast nothing but speech: VOA, RFI, NPR, World Service, Al Jazeera, Vaticana. Deliberately not BBC or TRT: the name alone cannot settle a broadcaster that also runs Radio 1, 6 Music or TRT Müzik, so those are left to their tags. There is a test for that.
Quran reciter names, in Latin and Arabic script. Egypt relays four of these untagged or tagged
classical, and Bangladesh carries two more (Abdulbasit Abdulsamad, Muhammad Siddiq al-Minshawi).Measured
Voices detected, before to after:
The unchanged columns are the point: the gain lands where tagging is poor and leaves well-tagged pools alone.
False positives: 9 of 2528 music-only stations (0.36%). I inspected all nine, and eight are genuinely speech stations the directory tagged as music:
88.9 Noticiastaggedacir,sky news arabia radiotaggedcountry,River Country News, and several Quran stations taggedclassical. OnlyHPR4 Bluegrass Gospelis arguably music.Checks
npm run lint,npm run format:check,npm run typecheck,npm test(437 passed) andnpm run buildpass.