mirror of
https://codeberg.org/armin/tcdweb.git
synced 2026-09-01 05:30:45 +02:00
update README
This commit is contained in:
parent
6621c03334
commit
7f38674c9d
1 changed files with 13 additions and 15 deletions
28
README.md
28
README.md
|
|
@ -1,4 +1,4 @@
|
||||||
tcdweb — Transcode Detector (Web Version)
|
tcdweb - Transcode Detector (Web Version)
|
||||||
=========================================
|
=========================================
|
||||||
|
|
||||||

|

|
||||||
|
|
@ -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
|
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
|
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
|
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.
|
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).
|
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
|
tcdweb was developed with the assistance of AI.
|
||||||
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.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -52,7 +50,7 @@ Key metrics
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
- **Cutoff**: highest frequency with measurable energy (as Hz and % of Nyquist).
|
- **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.
|
aggressive the compression.
|
||||||
- **Steepness (Transition Bandwidth)**: how abruptly the spectrum drops at the
|
- **Steepness (Transition Bandwidth)**: how abruptly the spectrum drops at the
|
||||||
cutoff point. Lossy encoders produce sharp brick-wall filters (low steepness).
|
cutoff point. Lossy encoders produce sharp brick-wall filters (low steepness).
|
||||||
|
|
@ -89,7 +87,7 @@ Verdicts
|
||||||
|
|
||||||
| Verdict | Input codec | Meaning |
|
| 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) |
|
| **UPSCALED** | lossy | Re-encoded from a lower bitrate (e.g. 128 → 320 kbps) |
|
||||||
| **GENUINE** | lossless | No evidence of lossy origin |
|
| **GENUINE** | lossless | No evidence of lossy origin |
|
||||||
| **TRANSCODE** | lossless | Originated from a lossy source, decoded to lossless |
|
| **TRANSCODE** | lossless | Originated from a lossy source, decoded to lossless |
|
||||||
|
|
@ -102,10 +100,10 @@ Detection logic
|
||||||
|
|
||||||
The verdict is determined in two layers:
|
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.
|
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
|
high enough to pass Layer 1. Catches transcodes where the cutoff is near
|
||||||
Nyquist but the spectrum still shows quantization artifacts.
|
Nyquist but the spectrum still shows quantization artifacts.
|
||||||
|
|
||||||
|
|
@ -154,12 +152,12 @@ Limitations
|
||||||
References
|
References
|
||||||
----------
|
----------
|
||||||
|
|
||||||
- Nyquist–Shannon sampling theorem — Wikipedia
|
- Nyquist–Shannon sampling theorem - Wikipedia
|
||||||
https://en.wikipedia.org/wiki/Nyquist–Shannon_sampling_theorem
|
https://en.wikipedia.org/wiki/Nyquist–Shannon_sampling_theorem
|
||||||
- Equal-loudness contour (Fletcher–Munson curves) — Wikipedia
|
- Equal-loudness contour (Fletcher–Munson curves) - Wikipedia
|
||||||
https://en.wikipedia.org/wiki/Equal-loudness_contour
|
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
|
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
|
open-access thesis, 2025
|
||||||
https://doi.org/10.7302/28306
|
https://doi.org/10.7302/28306
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue