TR
Section 4 Blog · 4.1.6
5 min read

Listening to the news
instead of reading it

Build note · Chrome extension · Two voices · Zero servers

In short§1

I built a Chrome extension that reads Turkish news aloud: İstima. On a news site you click its icon, it pulls the article out of the page and reads it in a natural Turkish voice. The paragraph being read is highlighted, and reading continues when you switch tabs.

The voice is generated on your own computer. No server, no account, and the article you are reading goes nowhere. The extension is free and open source.

İstima on a news page: the paragraph being read is highlighted in light red, with the player and paragraph count in the bottom right
İstima on a news page · current paragraph highlighted, player in the corner

Why now§2

Reading the news with your eyes is not always possible: while cooking, when your eyes are tired, while doing something else. Built-in browser read-aloud sounds robotic in Turkish and often gets numbers, dates and abbreviations wrong. The good voices live in the cloud, which means sending the text to a company and usually paying for it.

In early October the PatientDesk AI team released Antalia-2 Mini as open source: a small Turkish voice model with 7.6 million parameters that needs no graphics card. Its own demo page ran entirely in the browser. That was the missing piece.

Sez Saygılı’s X post announcing Antalia-2 Mini as open source, above a video frame comparing the model with cloud voices
The Antalia-2 Mini announcement (in Turkish) · X · 9 October 2026

Moving the model into the browser§3

The model comes in four parts and runs in the browser through WebAssembly. I took the inference code and the model’s Turkish text normaliser from the demo page and put them inside the extension; the roughly 23 MB model ships with it.

The background part of a Chrome extension cannot play sound, so the voice is generated and played in a separate, invisible page. Once that page ran in the most isolated mode the browser allows, the model could use four cores: it is ready in under a second on a laptop and speaks much faster than real time. It prepares the next paragraphs while you listen, so reading never stalls.

The real work: getting the article out§4

The hard part was the text, not the voice. On a news page the article is a small island surrounded by menus, ads, “you may also like” boxes and comments. I extracted the body with Mozilla Readability, the library behind Firefox’s reader view, but Turkish news sites left behind debris it could not handle.

Category labels were taken for paragraphs. Bylines like “Newsroom, 10 October 2026, 09:45” were read aloud. One site had “Follow our news on Google” in the middle of the article, another a copyright note at the end, another a list of tags. Each got a small rule. A short line without closing punctuation is a label unless it is a heading. A short line carrying a date and time is a byline.

Then I tried the extension one by one on Anadolu Agency, NTV, Hürriyet, Sözcü, Cumhuriyet, Habertürk, Milliyet and TRT Haber. TRT’s short news items failed Readability’s “is this page readable” pre-check, so I added a fallback that checks whether the page declares itself an article. On Anadolu Agency the article arrived a moment after the page loaded; the extension now takes a second look a few seconds later.

Three rounds with the store§5

The Chrome Web Store did not even accept the first upload: the package contained two manifest.json files, one of them the model’s own info file. I renamed it.

The second warning was about permissions. To work on every site by itself, the extension asked for access to all sites, and the store said that meant a longer review. Fair enough. I changed the default: İstima now touches no site when installed and reads a tab only when you click its icon. If you want the automatic “Listen” button in the corner, you turn it on in the settings and grant the permission yourself.

The “Find articles automatically?” card on İstima’s welcome page, with a button to turn it on (Turkish interface)
Automatic detection is now opt-in · the user grants the permission

The third was a rejection for keyword spam. I had listed the browsers the extension works in at the end of the description. I removed that line, resubmitted, and it went live.

First feedback, first contribution§6

After launch, Sez Saygılı from the team behind the model pointed out that the jump from the headline to the first paragraph felt abrupt. Fair point: there was no silence between paragraphs at all. The new version takes a short breath after headings and a small pause between paragraphs.

Sez Saygılı’s X reply suggesting a longer pause after headlines (in Turkish)
The first piece of feedback (in Turkish) · X · 12 October 2026

Then the first outside contribution arrived. Ahmet Bedir sent a change that adds a second Turkish voice: Canberk Aslan’s EMA Lightning model. A careful contribution that came with its own tests. You can now choose between two voices in the settings.

Ahmet Bedir’s X post announcing EMA Lightning support, above a frame from a demo video of İstima reading with EMA (in Turkish)
The EMA Lightning contribution (in Turkish) · X · 12 October 2026

The price of staying serverless§7

The easy way to add the second model was to download it when a user picks it. I did not. İstima’s promise from day one was that the article you read never leaves your computer and the extension never connects anywhere. A single download would break that sentence.

The price was size: the extension grew from 25 MB to 57 MB. That is a few seconds on a fast connection and about a minute on a slow one. Only the voice you pick is loaded while reading, so speed and quality stay the same. I made that trade on purpose.

The Reading section of İstima’s settings: voice model choice between Antalia-2 Mini and EMA Lightning, and default speed (Turkish interface)
Choosing the voice in the settings · only the selected model is loaded

What stayed with me§8

The hardest part of this project was not the AI; it was the mess of news sites and the rules of the store. The model was ready and worked well. My job was to carry it to where people already are every day: the corner of their browser. I had an AI coding assistant beside me while building it, but the extension itself needs no cloud to run.

A small coincidence: the Turkish posts on this blog are voiced with the same model. Press “Listen” on the Turkish version of this post and you will hear İstima’s voice.

The extension is on the Chrome Web Store and the source is on GitHub.

Ubeyd Gencer · Istanbul, Türkiye Section 4 · Blog Reference manual · Revision 2026.08