update README

This commit is contained in:
Armin 2026-08-09 22:17:18 +02:00
commit 7f38674c9d

View file

@ -1,4 +1,4 @@
tcdweb Transcode Detector (Web Version)
tcdweb - Transcode Detector (Web Version)
=========================================
![Screenshot](tcdwebshot.png)
@ -11,7 +11,7 @@ bitrate by the same lossy codec, e.g. 128 → 320 kbps MP3).
This is the **web version** of [tcd](https://codeberg.org/armin/tcd), the
original CLI tool. At this point **tcdweb is a complete, independent fork** with
its own codebase, its own analysis engine, and its own UI. It runs entirely in
the browser via the **Web Audio API** no server-side processing, no file
the browser via the **Web Audio API** - no server-side processing, no file
uploads, no FFmpeg dependency, and no command line needed.
---
@ -21,12 +21,10 @@ Live-Demo
There is a live demo of tcdweb available at: [bsd.pm/tcdweb](https://bsd.pm/tcdweb).
Obligatory AI-slop disclaimer
-----------------------------
Obligatory AI notice
--------------------
tcdweb is 98% vibe-coded (a.k.a. "ai slop"). If that's a problem for you, please
kindly just use a different tool. There is also absolutely *NO* guarantee this
will work reliably, be useful in any way, or even make any sense whatsoever.
tcdweb was developed with the assistance of AI.
---
@ -52,7 +50,7 @@ Key metrics
-----------
- **Cutoff**: highest frequency with measurable energy (as Hz and % of Nyquist).
Lossy codecs chop off high frequencies the lower the cutoff, the more
Lossy codecs chop off high frequencies - the lower the cutoff, the more
aggressive the compression.
- **Steepness (Transition Bandwidth)**: how abruptly the spectrum drops at the
cutoff point. Lossy encoders produce sharp brick-wall filters (low steepness).
@ -89,7 +87,7 @@ Verdicts
| Verdict | Input codec | Meaning |
|---|---|---|
| **NATIVE** | lossy | Single encode at the stated bitrate genuine |
| **NATIVE** | lossy | Single encode at the stated bitrate - genuine |
| **UPSCALED** | lossy | Re-encoded from a lower bitrate (e.g. 128 → 320 kbps) |
| **GENUINE** | lossless | No evidence of lossy origin |
| **TRANSCODE** | lossless | Originated from a lossy source, decoded to lossless |
@ -102,10 +100,10 @@ Detection logic
The verdict is determined in two layers:
**Layer 1 (Primary)** Cutoff + Steepness. A low cutoff combined with a sharp
**Layer 1 (Primary)** - Cutoff + Steepness. A low cutoff combined with a sharp
drop (low steepness) is a definitive sign of a lossy encoder's lowpass filter.
**Layer 2 (Secondary)** Roughness + Band Ratio. Applied when the cutoff is
**Layer 2 (Secondary)** - Roughness + Band Ratio. Applied when the cutoff is
high enough to pass Layer 1. Catches transcodes where the cutoff is near
Nyquist but the spectrum still shows quantization artifacts.
@ -154,12 +152,12 @@ Limitations
References
----------
- NyquistShannon sampling theorem Wikipedia
- NyquistShannon sampling theorem - Wikipedia
https://en.wikipedia.org/wiki/NyquistShannon_sampling_theorem
- Equal-loudness contour (FletcherMunson curves) Wikipedia
- Equal-loudness contour (FletcherMunson curves) - Wikipedia
https://en.wikipedia.org/wiki/Equal-loudness_contour
- LAME MP3 encoder psychoacoustic model Hydrogenaudio Knowledge Base
- LAME MP3 encoder psychoacoustic model - Hydrogenaudio Knowledge Base
https://wiki.hydrogenaudio.org/index.php?title=LAME
- "Audio Authentication Using Spectral Analysis" University of Michigan
- "Audio Authentication Using Spectral Analysis" - University of Michigan
open-access thesis, 2025
https://doi.org/10.7302/28306