Edition No. 13 · 7 Sep 2026
Twelve repositories for a one-person video channel
The voice, the cut, the loudness, the captions, and where the finished file goes.
The first twelve editions of this radar were about the website — traffic, payments, sign-in, and how the thing looks. All of it is about what a visitor sees after they arrive.
The channel that brings them is a different problem, and I have only ever handed over pieces of it. A transcriber here, a silence cutter there, a dubbing tool three weeks later. Seventeen tools across twelve editions, and never once the whole line.
I also skipped the part that decides whether anyone stays: the sound. People forgive a plain thumbnail. They do not forgive bad audio. A video that is quiet, or uneven, or hissing loses most of its viewers inside ten seconds, and not one of them will tell you why. It is not in the comments and it is not in any survey.
Today is the whole pipeline. The voice that reads the script, the cut that removes the dead air, the loudness that makes twelve videos sound like one channel, the captions that make it work in a second language, and where the finished file goes.
This edition, in numbers
| Repos | 12 |
| Hidden gems (under 3,000 stars) | 3 |
| Marketing / product / wildcard | 8 / 3 / 1 |
| New to you | 11 |
| Repeats | 1 |
| Checked and left out | 9 |
Two things worth knowing
A number in my records was wrong — and so was the correction. In Edition 2 I recorded auto-editor as version 31.5.0 from August 2026, then “corrected” it to 30.5.0 from 9 June 2026. The original was right. 31.5.0 was released on 13 August 2026 and was current when Edition 2 was written. The correction came from reading GitHub’s releases web page, which showed a partial list, and assuming the recorded number had been a transcription error. Verified against the GitHub API on 7 September 2026; the current release is 31.6.0 (6 September 2026).
There is also a rule I have repeated five times: for a Python tool, trust PyPI over GitHub. auto-editor is the first exception. Here PyPI is behind, at version 29.3.1 from November 2025. So for auto-editor, install from GitHub, not from PyPI.
DeepFilterNet is dead. The answer is no. In Edition 11 I wanted it to clean up audio noise, but I could not read its release dates. I checked properly today. The last release is v0.5.6 from 31 August 2023. That is three years ago. I will not recommend it again.
This leaves a real gap. There is no maintained open-source tool for removing noise from speech in my records. ffmpeg has a built-in filter called arnndn, which uses xiph/rnnoise. That is the honest workaround for now.
If you only do three things
- ffmpeg-normalize, tonight. Ten minutes. One command sets every video to the loudness YouTube expects, including the ones you already published.
- auto-editor, ten minutes after that. Removes the dead air from a screen recording. Videos come out 15–25% shorter, and every tool below then costs less to run.
- whisper.cpp, one afternoon. Then it pays you back three times: captions, subtitles, and an article.
Every link in one place
| # | Repository | Home / docs | Stars | Licence |
|---|---|---|---|---|
| 1 | resemble-ai/chatterbox | demo page | 26.3k | MIT |
| 2 | OHF-Voice/piper1-gpl | piper-tts on PyPI | 5.1k | GPL-3.0-or-later |
| 3 | WyattBlue/auto-editor ↻ | auto-editor.com | 5.1k | Unlicense |
| 4 | slhck/ffmpeg-normalize 💎 | slhck.info/ffmpeg-normalize | 1.5k | MIT |
| 5 | ggml-org/whisper.cpp | repository README | 53.5k | MIT |
| 6 | SubtitleEdit/subtitleedit | nikse.dk · help | 14.0k | MIT |
| 7 | jmbannon/ytdl-sub 💎 | ytdl-sub.readthedocs.io | 2.9k | GPL-3.0 |
| 8 | Chocobozzz/PeerTube | joinpeertube.org | 14.8k | AGPL-3.0 |
| 9 | yjs/yjs | docs.yjs.dev | 22.3k | MIT |
| 10 | unionai-oss/pandera | union.ai/pandera | 4.4k | MIT |
| 11 | pmorissette/ffn 💎 | pmorissette.github.io/ffn | 2.6k | MIT |
| 12 | casey/just | just.systems | 35.3k | CC0-1.0 |
Part 1 — The voice
Two ways to make a machine read a script out loud without paying by the character.
26.3k stars · MIT · chatterbox-tts 0.1.7 on PyPI (2026-03-26); the only GitHub tag is v0.1.2 (2026-06-13) — the two numbering schemes do not correspond
Open-source text-to-speech that clones a voice from a short clip and reads it back in 23 languages, Russian included.
▶Repo detailsthe review · specs · pros & cons · install
What it is
An open-source text-to-speech model from Resemble AI. It copies a voice from a short recording, then reads new text in that voice. You run it on your own computer, so no script ever leaves your machine.
Why it matters
Every tutorial costs you ElevenLabs money twice, because you publish in two languages. The Russian version is read by a voice that is not yours. That quietly tells your Russian viewers they are getting the translated version, not the real one. With this, you record thirty seconds in English and the same voice reads the Russian script. That is the difference between a dubbed video and a video you made. It also makes fixes cheap. Correcting one wrong sentence in a long series stops being a cost and becomes one command.
- One voice in both languages. That is the whole point of a bilingual channel.
- MIT licence, so nothing here limits what you sell.
- No cost per word, so length and re-records stop being money decisions.
- It wants a GPU (a graphics card that can do heavy maths). On a normal processor it is slow. Use your Mac, never the Hetzner server.
- The version numbers do not match. PyPI has 0.1.7 from March. GitHub only has a tag for v0.1.2 from June. Install from PyPI and lock the version.
- Copying your own voice is fine. Copying somebody else's voice is a legal problem, and the program cannot tell the difference.
Correcting one wrong sentence in a long series stops being a cost and becomes one command.
source venv/bin/activate pip install chatterbox-tts
5.5k stars · GPL-3.0 · v1.8.0 (2026-09-04)
Fast local neural speech on plain CPU — the licensed replacement for edge-tts's grey area.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A small speech program that runs on a normal processor. It is fast rather than beautiful. It is the voice behind Home Assistant, and it is now maintained by the Open Home Foundation. A new version came out three days before this report.
Why it matters
In Edition 3 I gave you edge-tts for free draft narration. I also said honestly that it calls a private Microsoft address and sits in a grey area for commercial use. That is fine for drafts. It is not something to build a habit on. Piper does the same job with a real licence and no dependence on a private service staying open. In practice it covers the parts of your channel that are not your voice: chapter intros, menu prompts, and test versions of a line while you decide on the wording.
- Instant on a normal processor, and fully offline. Drafts cost nothing and reveal nothing.
- The Russian voices are genuinely good. Most small tools of this kind are not.
- Released steadily. Version 1.8.0 came out on 4 September, the newest release on this page.
- It sounds like a machine, not like you. Use it for drafts only. The final voice stays with #1 or ElevenLabs.
- GPL-3.0-or-later licence. Run it as a separate program. Never build it into something you sell.
- You have to download and manage the voice files yourself. Choosing the right Russian voice takes some listening.
source venv/bin/activate pip install piper-tts
Part 2 — Cleaning up the recording
Three steps between a raw screen recording and a video people finish, in the order to run them.
5.2k stars · Unlicense · 31.6.0 (2026-09-06)
One command strips silence and dead air from a screencast — typically 15-25% shorter, better retention.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A command-line tool that measures the sound across a recording and removes the quiet parts, then joins what is left. There is no timeline, no settings screen and no project file.
Why it matters
Screen recordings made by one person are full of waiting. None of it is bad footage. It is just time. Time is the only thing between a viewer and the end of your tutorial. Cutting it does not make the video worse. It makes it shorter. Shorter tutorials get finished, and that is close to what YouTube actually rewards. It also makes every other tool here cheaper. Fewer minutes to transcribe. Fewer to fix the loudness. Fewer to caption.
- One command. Nothing to set up except ffmpeg, which you need for #4 anyway.
- Public domain licence. The freest licence in my records.
- Handles any file ffmpeg can read, so it works before or after Camtasia.
- It cuts by loudness. A pause you made on purpose is just silence to it. Watch the result before you publish.
- It re-encodes the video unless you tell it not to. That costs a little quality.
- Install from GitHub, not PyPI. PyPI is nine months behind. See the note above.
source venv/bin/activate pip install --upgrade "auto-editor @ git+https://github.com/WyattBlue/auto-editor" auto-editor lesson.mp4 --output lesson-tight.mp4
1.5k stars · MIT · v1.42.0 (2026-09-02)
Normalises every video to the EBU R128 loudness YouTube expects — ten minutes, and viewers stop reaching for the volume.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A small program that measures how loud a file is, using the EBU R128 standard, then rewrites it to a level you choose. That is the same measurement YouTube uses when it quietly turns your upload up or down.
Why it matters
This is the biggest difference between an amateur video and a professional one, and almost nobody outside audio work knows it exists. If one tutorial is recorded quiet and the next one loud, a viewer reaches for the volume twice in a row. They form an opinion about your channel and they never put it into words. Setting everything to the same level makes twelve videos sound like one channel. It becomes even more important if you take #1 and #2. Your own recorded voice, a copied voice and a Piper draft will all arrive at different levels. This is the step that makes them one video instead of three different sources.
- You can run it over a whole folder at once. Your entire back catalogue in one pass.
- Ten minutes to learn, and nothing to remember afterwards.
- MIT licence, and
uvxcan run it without installing anything permanently.
- It needs ffmpeg on the machine. Recordings with one speaker usually need the
--dual-monoflag. That is the one detail everyone gets wrong the first time. - It fixes loudness only. It does not fix noise, hum or room echo. Those are still your problem. See the note above about why.
- Making a quiet part louder also makes the hiss under it louder. Listen to the result, do not just trust the number.
This is the step that makes them one video instead of three different sources.
brew install ffmpeg uvx ffmpeg-normalize lesson.mp4 -c:a aac -b:a 192k -t -14 --dual-mono -o lesson-normalized.mp4
53.5k stars · MIT · v1.9.3 (2026-08-20)
Whisper in C++ — fast on plain hardware and excellent on Apple Silicon, with no Python and no CUDA.
▶Repo detailsthe review · specs · pros & cons · install
What it is
OpenAI's Whisper model rewritten in C++ so it runs fast on ordinary hardware. It is unusually fast on Apple computers. It is one program and one model file. No Python setup and no CUDA (special graphics-card software).
Why it matters
In Edition 2 I recommended whisperX and said clearly that it wants a GPU. Two weeks later it is probably still not installed. This is the version that runs on your Mac tonight. The transcript is the most reusable thing your channel produces. It is the caption file, which raises watch time and is the minimum for accessibility. It is the source text for the Russian subtitles that Edition 4 argued for. And published on your Astro website as an article, it is the only way a YouTube video ever earns you Google traffic. Record once, publish in three places.
- No Python, no CUDA, no tangle of dependencies. Build it once and forget it.
- Fast enough on a Mac that transcribing becomes normal, not an event.
- MIT licence, and released steadily. Version 1.9.3 came out on 20 August.
- It overlaps with whisperX (Ed. 2 #4). whisperX is still better at word-level timing and at telling speakers apart. Pick one. Do not keep both.
- Russian accuracy is clearly lower than English. A human has to check it before you publish anything in Russian.
- The repository moved from
ggerganov/whisper.cpptoggml-org/whisper.cpp. Older guides point at the old address.
The same text also feeds textstat (Ed.
git clone https://github.com/ggml-org/whisper.cpp cd whisper.cpp cmake -B build && cmake --build build -j --config Release sh ./models/download-ggml-model.sh large-v3-turbo ./build/bin/whisper-cli -m models/ggml-large-v3-turbo.bin -f lesson.wav -osrt -l ru
Part 3 — Subtitles, and where the finished file goes
Captions in a second language, and somewhere to put the video that is not only someone else's platform.
14.1k stars · MIT · v5.1.0 (2026-07-29)
The mature desktop subtitle editor — waveform retiming, line-by-line translation, and every format converted.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A mature desktop subtitle editor. Video and subtitles side by side, retiming against the sound wave, translation line by line, and conversion between almost every subtitle format in use.
Why it matters
Whisper gives you a rough transcript. Machine translation gives you rough Russian. The distance between rough and publishable is exactly where a bilingual channel either looks careful or looks automatic. Viewers read all of that as quality without ever naming it. This is also where the boring format work happens: SRT for YouTube, ASS for captions burned into a Short.
- Reads and writes nearly every subtitle format, which removes a whole class of dead end.
- The sound-wave view makes retiming fast enough that you will actually do it.
- MIT licence, works offline, and it has been maintained for over ten years.
- Windows is the main platform. Mac and Linux builds exist but are less polished.
- The current version 5.0.0-rc4 is a release candidate, which means a test version. Stay on the 4.x versions if you want stability.
- It is a program you click, so unlike everything else in this section it can never be automated.
Download it from the releases page: https://github.com/SubtitleEdit/subtitleedit/releases It takes the SRT file from whisper.cpp and gives YouTube and Camtasia the file each one wants.
2.9k stars · GPL-3.0 · 2026.08.26.post1 (2026-08-26)
A YAML subscription layer over yt-dlp — competitors' new uploads arrive nightly with metadata attached.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A settings layer on top of yt-dlp. You describe the channels you care about in one file, run it on a schedule, and each new video arrives with all its information attached and filed.
Why it matters
Edition 6 gave you yt-dlp and Edition 7 gave you the comment downloader. Both are one-off commands you have to remember to run. That means your picture of the competition is a snapshot from whenever you last thought about it. This turns it into a standing subscription. Five channels, checked nightly, each new video landing in your research database with its information intact. That is the difference between "what were they doing in August" and "they published three videos about onboarding this week, and none of them mentions the thing your product does".
- It handles scheduling, avoiding duplicates, and the file information. You do not have to write that code.
- Built on yt-dlp, which is already in my records. No new download logic to trust.
- Its output goes straight into sqlite-utils (Ed. 8 #5).
- GPL-3.0 licence. A tool to run, never a library to build into something you sell.
- Run it from the Mac. YouTube blocks server addresses, so on the Hetzner box it will simply fail.
- Downloading whole channels fills your disk fast. Get only the information and subtitles unless you truly need the video.
source venv/bin/activate pip install ytdl-sub ytdl-sub sub subscriptions.yaml
15.3k stars · AGPL-3.0 · v8.2.4 (2026-08-04)
Self-hosted video with an ActivityPub feed — the copy of your tutorials whose delivery you control.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A video platform you run yourself: upload, convert, embed. It also has a feed that lets other sites and Mastodon accounts follow your channel directly.
Why it matters
This is not an argument to leave YouTube. Growth still happens there. This is about two narrow problems. YouTube has been throttled in Russia since 2024, so a real share of the Russian audience this channel was built for may not be able to watch. And the demo video on your pricing page currently ends by offering the viewer somebody else's video, because that is what a YouTube embed does. Your own player ends by offering nothing, which is what you want at that moment.
- You own the player and the embed. No ads, no suggested videos, no third-party tracking for your consent banner to handle.
- It publishes a feed, so n8n can read it.
- Actively released. Version 8.2.0 came out in late May, after a long steady history.
- It is a real service: Node, PostgreSQL, Redis and file storage, plus video conversion that will overwhelm your server if you let it. Convert on the Mac and upload the finished files.
- Storage and bandwidth are the first cost here that grows as you succeed.
- AGPL-3.0 licence. Also, the shared network will not bring you an audience. A new site with three videos is found by nobody.
The embed then replaces lite-youtube-embed (Ed.
Follow the official guide at https://docs.joinpeertube.org (it uses Docker Compose).
Part 4 — For people building products, not videos
Four tools that have nothing to do with the channel and everything to do with the week after it.
yjs/yjs
22.8k stars · MIT · v14.0.0-rc.20 (2026-06-22) — a RELEASE CANDIDATE; the stable series is v13
The CRDT everyone uses — several people editing one document at once, offline edits merging cleanly later.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A CRDT library. That is a data structure which lets several people edit one document at the same time without locking, and lets one person's edits survive going offline and merge in cleanly later.
Why it matters
Grasppy's promise is that a long conversation becomes a shape you can see. The moment a map is worth looking at, it is worth showing to somebody. Today the best you can offer is a screenshot (Ed. 8 #8) or a Mermaid diagram (Ed. 12 #10). Both are dead copies with your product cropped out. A live shared map is a different product. It also makes notes on individual nodes possible without you inventing your own conflict rules, which is not a thing you want to invent.
- MIT licence, mature, and the standard answer here. The editor and canvas tools already work with it.
- Works offline and merges afterwards, which matters on the phone.
- One document can drive both the React Flow canvas and the react-arborist tree (Ed. 7 #11) at the same time.
- Live collaboration is a product decision with a websocket service behind it. It is not an afternoon's work.
- Saving and access control are yours to build. A shared document is a sign-in problem, so Logto (Ed. 11 #4) comes first.
- The current line is version 14.0.0-rc, which is a test version. The stable line is 13. Decide on purpose which one you build on.
npm install yjs Then a small Node websocket service next to FastAPI, with the document saved into the PostgreSQL you already run.
npm install yjs
4.5k stars · MIT · v0.33.1 (2026-09-01)
Schema validation for DataFrames — the error that fires before a backtest quietly reports a fictional edge.
▶Repo detailsthe review · specs · pros & cons · install
What it is
Schema checking for data tables. You declare what the columns are, what values they may hold, what must never be empty, and what must be unique. It raises an error the moment the data disagrees.
Why it matters
ScalpingMate's whole method is search. tsfresh makes features, Optuna hunts, arch tests whether the winner was luck. Every one of those steps assumes that three years of EURUSD bars really are three years of EURUSD bars. When that assumption breaks, nothing crashes. The numbers just become wrong. A wrong number that survives a reality check is the most expensive thing in this whole system. The same argument applies to what comes out of Docling and Chonkie on the Grasppy side.
- MIT licence and plain Python, so it fits inside FastAPI and inside a background job with no fuss.
- Works with pandas and Polars, so it survives whichever you switch to.
- The schema also works as documentation that cannot go out of date, because it fails when it is wrong.
- It checks shape and range, not truth. A believable but wrong price passes every check.
- Writing the schemas is real work up front, with nothing visible to show on the day you do it.
- Checking large tables takes time. Run it when loading data, never inside the fast path. Needs Python 3.10 or newer.
source venv/bin/activate pip install "pandera[pandas]"
2.6k stars · MIT · v1.2.1 (2026-09-07)
GroupStats: hand it a DataFrame of many equity curves and get one table of performance statistics for all of them.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A small finance toolkit. Its useful trick is called GroupStats. You hand it a table where each column is one strategy's results, and it gives you back one table of statistics for all of them at once.
Why it matters
Optuna (Ed. 7 #12) produces hundreds of trials. quantstats (Ed. 4 #11) makes a beautiful report for exactly one of them. The step in between is missing: look at all of them side by side and pick the three worth a proper check. This is the tool for the moment when you have too many candidates. That is the normal, permanent state of a strategy search, and eleven editions of ScalpingMate advice never addressed it.
- MIT licence, so unlike backtesting.py it can sit behind a paid feature.
- One call compares any number of strategies, which changes what you are willing to test.
- Very few extra dependencies on top of pandas. Nothing new to maintain.
- It overlaps with quantstats. The difference is many versus one. If you only ever look at a single strategy, you do not need this.
- The statistics only describe. It will happily rank four hundred overfitted results for you. arch (Ed. 6 #11) is still the tool that says whether the winner was luck.
- Small team, a few releases a year.
source venv/bin/activate pip install ffn
35.7k stars · CC0-1.0 · 1.58.0 (2026-08-03)
Named recipes in a justfile — 'just backup', 'just normalize' — so the command is never the thing that gets lost.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A command runner. You put a file called justfile in a project with named recipes, then run them by name from anywhere in that project.
Why it matters
You build through Claude Code rather than as a profession. The thing that stops you using a tool is almost never that the tool is hard. It is that the command is lost. A justfile turns the ffmpeg-normalize command, the restic backup, the whisper.cpp transcribe and the deploy into one word each. They live in the repository where Claude Code can read them. It is the cheapest thing on this page and the only one that gets more useful with every past edition.
- One small program. No runtime, nothing to host.
just --listprints every recipe with its comment, so the documentation writes itself.- CC0 licence: public domain, so there is never a licence question.
- It is not a build system. It does not track what changed, so it re-runs everything you ask for.
- A justfile that goes out of date is worse than none, because it fails while looking correct.
- Another small syntax to learn, and it handles shell commands slightly differently from a plain script.
brew install just just --list
Checked, and left out
Nine repositories were opened for this edition and did not make it. Here they are, and why.
midrender/revideo
midrender/revideo (4.0k, MIT) — REDIRECT from redotvideo/revideo. Programmatic video in TypeScript and the living successor to the dormant Motion Canvas, so it would have filled a real gap. No releases at all, so recency unprovable. Backlogged; worth re-checking from the Mac via npm.
Castopod
Castopod (self-hosted podcast host) — github.com/Castopod/castopod returns 404; the project develops on its own GitLab, so it cannot be verified to this radar's standard. Recorded so no future run rediscovers the dead end. The idea was good: his existing narration becomes a podcast feed for almost nothing.
MaartenGr/KeyBERT
MaartenGr/KeyBERT (4.2k, MIT) — keyword extraction from BERTopic's author, intended as the tool that turns competitor transcripts into a ranked list of video topics. v0.9 on BOTH GitHub and PyPI, 2025-02-07, nineteen months. Past the dormancy line. Backlogged; the need is real and still unfilled.
amicalhq/refref
amicalhq/refref (215, AGPL-3.0) — open-source referral and affiliate programmes, a category with NOTHING in it after twelve editions. 113 commits, no releases; too young. Backlogged and worth watching, because the gap is real.
Rikorose/DeepFilterNet
Rikorose/DeepFilterNet — SETTLED, not merely dropped. Backlogged in Edition 11 on unprovable recency; releasealert.dev shows v0.5.6, 31 August 2023, three years. Moved to permanent do-not-recommend.
dcajasn/Riskfolio-Lib
dcajasn/Riskfolio-Lib (4.4k, BSD-3-Clause, PyPI 7.3.0 2026-05-31) — verified healthy; dropped because ffn (#11) answers the question he actually has now ('which of these candidates') rather than the one he does not yet have ('how to allocate between them'). Backlogged.
owncast/owncast
owncast/owncast (11.4k, MIT, v0.2.5 2026-04-11) — self-hosted live streaming, verified alive. Dropped for fit: live streaming is a commitment to being available at a time, which nothing he has said suggests he wants. Backlogged.
mifi/lossless-cut
mifi/lossless-cut (43.4k, GPL-2.0) — trims video without re-encoding; no release date readable from the page, and it overlaps both Camtasia and auto-editor. Backlogged.
xiph/rnnoise
xiph/rnnoise (5.8k, BSD-3-Clause) — the noise-suppression model already embedded in ffmpeg's arnndn filter. No readable release info, and it is used through ffmpeg rather than directly, so recorded as the stopgap for the DeepFilterNet hole rather than recommended as a repository.