• Welcome to ASR. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Audio Fake Detector PRO

just a reminder the Afterlife song I analyzed with Audio Fake Detector, is from a downloaded Bandcamp album (paid digital download). Bandcamp as a rule do not allow artists to upload mp3s , only FLACs or WAVs. but as we see here, they don't examine upscaled files at all.
Open the track with Spek and watch with you eyes
 
Here's a revised version of the Python script based on the suggestions from @Alessandro Comito

Hopefully it's a bit more reliable now?

As before - rename detect-v2.py.txt to detect-v2.py

Run it with Python - python3 detect-v2.py <filename>
good work

python3 detect-v2.py ~/mount/nas/music/2025/Sharon\ Van\ Etten\ -\ Sharon\ Van\ Etten\ \&\ The\ Attachment\ Theory/Sharon\ Van\ Etten\ -\ Sharon\ Van\ Etten\ \&\ The\ Attachment\ Theory\ -\ 02\ Afterlife.flac
Analyzing: Sharon Van Etten - Sharon Van Etten & The Attachment Theory - 02 Afterlife.flac
Detected Native Sample Rate: 96000 Hz (Max printable frequency: 48000 Hz)
Processing 23 non-final audio segment(s)...

==============================
ANALYSIS REPORT
==============================
Highest frequency detected in best segment: 16506.50 Hz
------------------------------
Verdict: FAKE HD
Reason: File is a 96 kHz container, but cuts off at 16506.50 Hz.
Note: This data matches an upscale from a standard 44.1 kHz CD source.
==============================
 
Updated 2026-06-07 Night
Standard 48 kHz lossless detected. Bypassing auCDtect to avoid false positives. Routing to FFmpeg Spectrogram Engine.

[23:30:09] [1/1] C:\Users\Ale\Musica\.Temp\CannibalsCrazy_opus256.flac
[23:30:10] Full analysis (bitrate >= 170 kbps).
[23:30:10] Standard 48 kHz Lossless detected. Bypassing auCDtect to avoid false positives. Routing to FFmpeg
Spectrogram Engine.
[23:30:42] slot@34s(rms=0.111) -> cutoff=20152 Hz | wall=False | ratio=0.071 | peak=83 | NR=False
[23:30:48] slot@78s(rms=0.104) -> cutoff=20176 Hz | wall=False | ratio=0.077 | peak=82.4 | NR=False
[23:30:53] random@142s(rms=0.122) -> cutoff=20199 Hz | wall=False | ratio=0.077 | peak=86.4 | NR=False
[23:30:59] slot@185s(rms=0.124) -> cutoff=20199 Hz | wall=False | ratio=0.069 | peak=91.9 | NR=False
[23:31:03] end@197s -> cutoff=20129 Hz | wall=False | ratio=0.073 | peak=77.4 | NR=False
[23:31:07] [FAKE] Spectrogram fallback: 4/4 non-end slots below 22320 Hz (cutoffs: 20152/20176/20199/20199 Hz) -
dominant soft ceiling, upscaled source
[23:31:07] 928 kbps | 219 s
[23:31:07] MOVED -> ~Fake\CannibalsCrazy_opus256.flac
 
Last edited:
Updated 2026-06-08
auCDtect already signalled anomalies (SKIP segments or ambiguous MPEG result) and the spectrogram fallback finds even 1 walled non-end slot <= 16500 Hz, the combined evidence is sufficient for FAKE.

[05:32:12] [1/1] C:\Users\Ale\Musica\.Temp\mp3 160 Ozone 12.flac
[05:32:15] Full analysis (bitrate >= 170 kbps).
[05:32:15] Engine: auCDtect (lossless format).
[05:32:22] seg1 @107s -> MPEG 95%
[05:32:27] seg2 @214s -> SKIP (no result)
[05:32:36] seg3 @320s -> SKIP (no result)
[05:32:36] auCDtect only 1/3 segment(s) readable -> falling back to spectrogram.
[05:34:25] slot@95s(rms=0.299) -> cutoff=22050 Hz | wall=False | ratio=0 | peak=120.8 | NR=False
[05:34:38] slot@151s(rms=0.257) -> cutoff=22050 Hz | wall=False | ratio=0 | peak=106.2 | NR=False
[05:34:54] random@246s(rms=0.176) -> cutoff=13364 Hz | wall=True | ratio=0.275 | peak=104.9 | NR=False
[05:35:06] slot@327s(rms=0.367) -> cutoff=22050 Hz | wall=False | ratio=0 | peak=122.7 | NR=False
[05:35:19] end@405s -> cutoff=19291 Hz | wall=False | ratio=0.849 | peak=94 | NR=False
[05:35:29] [FAKE] Spectrogram fallback: 1/4 slot(s) walled <= 16500 Hz (cutoff: 13364 Hz) - auCDtect already flagged anomalies (SKIP/MPEG)
[05:35:32] 989 kbps | 427 s
[05:35:34] MOVED -> ~Fake\mp3 160 Ozone 12.flac
 
Updated 2026-06-11

What's new
  • After the main analysis finishes, the script automatically rescans the target folder (including all subfolders) for audio files added during the run. Any new files found are analysed immediately with the same rules as the main pass.
    The rescan repeats until no new files are found, then orphan folder cleanup runs once as usual.
    No user interaction required - the process is fully automatic.
    Only applies when a folder is being scanned; dragging individual files is unaffected.
 
Latest version goes into an endless loop, once finished I get the message "New files detected: 11 file(s) added since last scan. Continuing analysis..." and it starts again.
 
Are you saving output files in a subfolder of the source files?
 
I'm surprised Tidal gave you a file that is fake. Not that I have ever tried Tidal.

I know you can simply change filetype from "*.mp3" to "*.flac" and media players won't care - the file will get played, as the right codec gets selected anyway. I just tried with FB2K, and a file played, but showed the playing details correctly for an MP3. MediaInfoLite will also pull out the codec details and tell me the file is an MP3 (ignoring filtetype). Obviously this quick test is not about files that appear to have proper FLAC comtents that are "compromised". I will try on some FLACs I ripped myself from my own CDs first!...
Yeah that's not how they do fakes though. They simply convert it. The original data is still from MP3 source, but the new file is proper FLAC format. Wouldn't it be super suspicious otherwise, a 10MB track in flac? Lol
 
Yeah that's not how they do fakes though. They simply convert it. The original data is still from MP3 source, but the new file is proper FLAC format. Wouldn't it be super suspicious otherwise, a 10MB track in flac? Lol
yeah, I know all the ways! And 90% of golden-eared ASR folk would not know without some kind of file analysis. I just like ones with an easy drop n drag GUI.....

But is it a known fact that Tidal does this?

I suspect that ~50m of your cabling is fake :)
 
yeah, I know all the ways! And 90% of golden-eared ASR folk would not know without some kind of file analysis. I just like ones with an easy drop n drag GUI.....

But is it a known fact that Tidal does this?

I suspect that ~50m of your cabling is fake :)
At least I know that I wouldn't know. Can't tell above 192kbps from lossless (192 barely), and last time I tested my ears were 20 years younger and so was the codec. Lol. It does a lot for "peace of mind". Around the same time I stopped ripping vinyl in 24/96, go figure. Haha
 
I rip CD to FLAC, to 16/44 obviously, or accept whatever a FLAC download comes in is what goes. There's no point in downscaling a 24/96 as I have tons of disk space. I do always rip FLACs to 320kps MP3, as my cheapo car will only play MP3 from SD card - people tell me 256 VBR is better than 320 CBR, but I can't tell and I don't care. OCD mandates consistency in all rip variants, right down to having the same cover art dimensions in every file! I always run LAC ob FLACs.
 
Last edited:
Second updated 2026-06-14

Info line now shows full technical metadata: codec name, sample rate (kHz), channel count (Nch), bit depth if available (lossless only),
bitrate, duration last. Examples:
Encoder: reference libFLAC 1.3.4 │ flac │ 44.1 kHz │ 2ch │ 24 bit │ 1411 kbps │ 00:08:13
Encoder: LAME3.100 │ mp3 │ 44.1 kHz │ 2ch │ 320 kbps │ 00:04:01
 
Third updated 2026-06-14
Resolved a display bug in the final summary where the resume counter showed an incorrect starting file index (e.g., "10 of 9").
 
[17:53:05] auCDtect.exe not found - auto-installing...
[17:53:05] Installing auCDtect...
[17:53:05] Trying: https://www.sac.sk/download/utildisk/aucdtect.zip
[17:53:06] Downloaded (72 KB) - extracting...
[17:53:07] auCDtect installed: C:\Users\Username\Downloads\AudioFakeDetector\Data\App\auCDtect.exe
[17:53:07] auCDtect : C:\Users\Username\Downloads\AudioFakeDetector\Data\App\auCDtect.exe
[17:53:07] ffmpeg/ffprobe not found - auto-installing...
[17:53:07] Detected Windows 64-bit - downloading matching ffmpeg/ffprobe...
[17:53:07] Trying: https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip
[17:55:28] Downloaded (106721 KB)
[17:55:34] ffmpeg.exe installed.
[17:55:34] ffprobe.exe installed.
[17:55:36] ffmpeg verified OK (64-bit).
[17:55:36] ffmpeg : C:\Users\Username\Downloads\AudioFakeDetector\Data\App\ffmpeg.exe
[17:55:36] ffprobe : C:\Users\Username\Downloads\AudioFakeDetector\Data\App\ffprobe.exe
[17:55:37] Installed (x64): ffmpeg version 8.1.1-essentials_build-www.gyan.dev Copyright (c) 2000-2026 the FFmpeg developers
[17:55:37] Local version: 8.1.1
[17:55:37] Checking Gyan.dev for latest release...
[17:55:37] Latest Gyan release: 8.1.1
[17:55:37] ffmpeg (x64) up to date (v8.1.1).
[17:55:37] All dependencies OK.
[17:55:37]
[17:55:37] Found 2 audio file(s) to analyse (including hidden).
[17:55:37]
[17:55:37] [1/2] C:\Users\Username\Downloads\Artist - Album (24-96) (2007)\01 - Track (dub mix).flac
[17:55:38] Full analysis (>= 170 kbps) │ Engine: spectrogram (Hi-Res 96000 Hz - auCDtect bypassed)
[17:55:38] Encoder: Lavf61.7.100 │ flac │ 96 kHz │ 2ch │ 24 bit │ 2792 kbps │ 00:07:54
[17:55:49] slot@100s(rms=0.146) -> cutoff=43308 Hz | wall=False | ratio=0.815 | peak=83.8 | NR=False
[17:55:50] slot@190s(rms=0.061) -> cutoff=26276 Hz | wall=False | ratio=0.888 | peak=88.8 | NR=False
[17:55:51] random@305s(rms=0.119) -> cutoff=26510 Hz | wall=False | ratio=0.89 | peak=91.6 | NR=False
[17:55:52] slot@390s(rms=0.153) -> cutoff=45607 Hz | wall=False | ratio=0.86 | peak=89.7 | NR=False
[17:55:53] end@452s -> cutoff=28622 Hz | wall=False | ratio=0.916 | peak=77.5 | NR=False
[17:55:53] end@452s -> ABRUPT-END: drop 16985 Hz vs best segment
[17:55:54] [FAKE] Spectrogram Hi-Res: cutoff ~45607 Hz but ratio=0.86 (>0.5) - quantization noise floor, not genuine content; sparse/silent recording upsampled from lossy source
[17:55:54] MOVED -> ~Fake\01 - Track (dub mix).flac
[17:55:54]
[17:55:54] [2/2] C:\Users\Username\Downloads\Artist - Album (24-96) (2007)\02 - Track (vocal mix).flac
[17:55:54] Full analysis (>= 170 kbps) │ Engine: spectrogram (Hi-Res 96000 Hz - auCDtect bypassed)
[17:55:54] Encoder: Lavf61.7.100 │ flac │ 96 kHz │ 2ch │ 24 bit │ 2779 kbps │ 00:08:39
[17:56:05] slot@99s(rms=0.141) -> cutoff=43214 Hz | wall=False | ratio=0.817 | peak=84.1 | NR=False
[17:56:06] slot@192s(rms=0.056) -> cutoff=24821 Hz | wall=False | ratio=0.928 | peak=90.5 | NR=False
[17:56:07] random@291s(rms=0.145) -> cutoff=42839 Hz | wall=False | ratio=0.882 | peak=87.9 | NR=False
[17:56:08] slot@435s(rms=0.148) -> cutoff=45419 Hz | wall=False | ratio=0.869 | peak=86.7 | NR=False
[17:56:09] end@496s -> cutoff=28716 Hz | wall=False | ratio=0.922 | peak=77.1 | NR=False
[17:56:09] end@496s -> ABRUPT-END: drop 16703 Hz vs best segment
[17:56:10] [FAKE] Spectrogram Hi-Res: cutoff ~45419 Hz but ratio=0.869 (>0.5) - quantization noise floor, not genuine content; sparse/silent recording upsampled from lossy source
[17:56:10] MOVED -> ~Fake\02 - Track (vocal mix).flac
[17:56:10]
[17:56:10] Rescan complete: no new files found.
[17:56:10]
[17:56:10] =========================================================================================================
[17:56:10] SUMMARY
[17:56:10] =========================================================================================================
[17:56:10] Files found : 2 (including hidden)
[17:56:10] Analyzed : 2
[17:56:10] Skipped : 0
[17:56:10] OK : 0
[17:56:10] FAKE : 2
[17:56:10] SUSPECT : 0
[17:56:10] UNKNOWN : 0
[17:56:10] Orphan dirs : 0 moved to ~Fake
[17:56:10] =========================================================================================================
[17:56:10] Reports : C:\Users\Username\Downloads\Artist - Album (24-96) (2007)\~Report
[17:56:10] Log : C:\Users\Username\Downloads\Artist - Album (24-96) (2007)\~Report\AudioFakeDetector_20260614_175305.log
[17:56:10] CSV : C:\Users\Username\Downloads\Artist - Album (24-96) (2007)\~Report\AudioFakeDetector_20260614_175305.csv
[17:56:10] HTML : C:\Users\Username\Downloads\Artist - Album (24-96) (2007)\~Report\AudioFakeDetector_20260614_175305.html
[17:56:10] =========================================================================================================
[17:56:10] Temp folder cleaned: C:\Users\Username\Downloads\AudioFakeDetector\Data\App\Temp


Yes, both files are FAKE and the pattern is very clear and consistent across the two tracks.

What the log reveals:

The hi-res engine (96 kHz, auCDtect bypassed) analyzed 5 slots per track. The problem isn't the cutoff itself, but the combination of high cutoff and high ratio:

Some slots show a seemingly good cutoff (~43–45 kHz), but with a ratio of 0.815–0.882. In genuine hi-res, the ratio should be low (close to 0) because the energy is evenly distributed all the way up. A high ratio means the energy is concentrated in a narrow band, typical quantization noise that artificially "fills" the spectrum.

Other slots (slot@190s, end@452s/496s) drop to 24–28 kHz, with an even higher ratio (0.888–0.928), which betrays the true cutoff of the lossy source, likely an MP3 at ~192–256 kbps with a true cutoff around 19–22 kHz, then upsampled to 96 kHz.
The ABRUPT-END on both (~17 kHz drop vs. best segment) is a further indicator: the compressed source shows variable behavior on the last segment, typical of the lossy encoder.

The Lavf61.7.100 encoder (FFmpeg lavformat) confirms that these FLACs were created using FFmpeg, not from a direct rip from a hi-res master, but likely by converting a lossy file.

Conclusion: Lossy source upsampled to 24-bit/96kHz and repackaged as a hi-res FLAC. The instrument's FAKE classification is correct.
 
Where should I put ffmpeg for it to find? I get message like this:
[13:50:43] auCDtect : F:\Kolektura\_audio\AudioFakeDetector\auCDtect.exe
[13:50:43] ffmpeg/ffprobe not found - auto-installing...
 
Back
Top Bottom