{
  "source_file": "0930",
  "source_platform": "Dev.to",
  "author": "Panagiotis Gkilis",
  "title_listed": "Genuine Human Speech, Called Synthetic. Nothing Was Generated.",
  "keywords": "",
  "domain": "文本处理",
  "content_type": "工程实践",
  "is_paid_flag": "否",
  "url": "https://dev.to/bedvibe_studios/genuine-human-speech-called-synthetic-nothing-was-generated-j0e",
  "publish_date": "2026-09-18",
  "corpus_stage": "",
  "notes": "",
  "id": "d320ed5dee08",
  "collected_at": "2026-10-02T13:52:12",
  "title": "Genuine Human Speech, Called Synthetic. Nothing Was Generated. - DEV Community",
  "body_markdown": "I did not set out to test synthetic-speech detectors. I was validating my own voice pipeline and needed to know whether the processing stage changed what a provenance checker would say about the output.\nIt did. And it did so on recordings where nothing had been generated at all.\nThe premise being tested\nA synthetic-speech detector is used as though its score answers one question:\nwas this audio generated?\nThose scores are entering forensic, journalistic and platform-moderation settings on that reading. In those settings a false positive is not a benchmark loss — it is a genuine recording being called fake, with consequences for the person who made it.\nHere is the structural problem. Detectors are trained on corpora where synthetic audio and particular signal-processing histories are almost perfectly confounded. Every generated clip in a text-to-speech corpus has passed through a vocoder or a neural codec. Almost no bona fide clip has. A model minimising training loss has no incentive to separate what its training data never separated.\nSo I ran the confound backwards.\nThe design\nHold everything fixed — speaker, words, performance, room, microphone. Apply a benign transformation that produces\nno generated speech tokens\n. Measure the paired change in a frozen pretrained detector's score on the same utterance.\nThe transformations are deliberately unremarkable and the statistics deliberately conservative. The question is not whether an adversarial perturbation can fool a classifier. Of course it can. The question is whether\nordinary processing of genuine speech\nis enough to move a deployed one.\nThirteen detectors, declared and hashed before any of them was scored.\nFour pre-registered experiments on the same 47 utterances from three speakers:\nexperiment\ntransformation\nfamily size\nHolm survivors\nDetector panel\nneural-codec round trip\n13\n9\nProcessing 2×2\ndenoise / EQ+compression / both\n39\n30\nReconstruction ladder\nGriffin-Lim ×4, BigVGAN, Vocos, 2 rate controls\n78\n61\nCodec family\nEnCodec 6 kbps, 12 kbps, DAC 44.1 kHz\n39\n33\nTwo design decisions were fixed in advance and both matter.\nNo AUC gate.\nRunning the causal test only on detectors that discriminate on this corpus would be circular — by my own hypothesis, discrimination on this corpus is substantially a measure of codec sensitivity, so gating on it would preferentially admit the detectors most likely to show the effect. Every detector ran on every condition regardless of its AUC.\nA negative control on purpose.\nThe panel includes a detector already known to be inverted, so it is visibly not a set of models picked to agree.\nGenuine speech, called synthetic, with zero generation\nA codec encode-decode of real studio recordings moved\n9 of 13 detectors\npast Holm correction.\nThree of those were\nfully prospective\n— nothing about their behaviour had been observed when the protocol was frozen — and all three moved on\n47 of 47 utterances\n, at matched-pairs rank-biserial of exactly −1.000, the maximum a rank statistic can reach.\nIt held across three professional microphones capturing the same physical performance simultaneously, so it is not a capture-channel artefact. It held on a speaker outside the corpus.\nAnd it is not about neural codecs.\nGriffin-Lim — phase retrieval published in 1984, no neural network anywhere — moved\n12 of 13\ndetectors in the same direction. An ordinary denoise-and-master chain, the kind any production pipeline applies without thinking about it, moved two detectors by −2.95 and −4.22 native units.\nThe phenomenon is about\nreconstruction and processing history\n, not about codecs being special.\nThere is no best detector to pick\nThe obvious mitigation is to choose a better detector. The measurements close that door.\ndetector family\ncodec round trip\nordinary denoise + EQ + compression\ncodec-trained\ncollapses\nbarely moves\nASVspoof-era\nnull\ncollapses\nThe two families fail on\nopposite inputs\n. The ASVspoof-era models could not separate real speech from synthetic speech on this material at all — and ordinary mastering still moved them on 41 and 46 of 47 genuine human recordings.\nChoosing a detector is choosing which false positive to accept, not avoiding one.\nWhich transformation moves which detector tracks each checkpoint's documented training exposure across three architectures. I report that as an\nassociation among frozen checkpoints\n, not as a causal effect of training data — the checkpoints differ in frontend construction and optimisation as well as in corpus, and no isolating intervention was performed.\nThe prediction I got wrong\nI predicted that a detector\ntrained on codec audio\nwould resist a codec pass.\nIt collapsed hardest of anything in the panel.\nThat prediction is in the frozen pre-registration, so it is in the paper. An independent adversarial audit then ran three rounds against the frozen estate, parsing the stored raw scores directly rather than executing my code. It reproduced every statistic — and\nthirteen of my own claims were withdrawn as a result.\nThe withdrawals are published, because a corrected claim is more informative than one that was never challenged:\nwithdrawn\nreplaced by\n\"the mechanism is analysis–resynthesis\"\nno mechanism identified\n\"any operation that discards phase flips these detectors\"\nthe tested operations do\n\"ASVspoof-era detectors are blind to codecs\"\ninsensitive to this codec specifically\n\"Griffin-Lim moves the panel harder than any codec\"\nEnCodec also reaches median −1.000\nWhat this does not establish\nDetectors are not broken in general.\nThe supported claim is narrower: on this material, detector output can be strongly affected by a recording's reconstruction and signal-processing history rather than uniquely identifying synthetic provenance.\nNo mechanism is identified.\nThe paper says so explicitly.\nNo listening test was run.\nNothing here says any transformation is perceptually transparent.\nThree speakers, 47 utterances, neutral speech, one language.\nEnough for a paired effect. Not a population claim.\nSeven of thirteen detectors come from one research group.\nThat is not seven replications.\nNot an evasion method\nThis is a detector-robustness and forensic-attribution result and I do not present it as anything else. No parameter anywhere in this work was chosen, searched or tuned against a detector output.\nThe one time an intervention\nwas\ntuned to a statistic, it made the audio\nmore\nseparable rather than less. That experiment is retained in the paper deliberately, because a failed attempt that points the opposite way to the hypothesis is worth more than a quiet deletion.\nThe part that generalises past audio\nAn instrument's score is not interpretable without knowing the provenance of what it was computed on.\nBefore trusting a detector panel, the question worth asking is which detectors on it can do the task on\nyour\nmaterial at all — and what else, besides generation, moves them. That is the question the companion tool answers, and it is the reason I wrote it as an instrument for measuring detectors rather than as another detector.\nReproducibility\nThe deposit is 26 files: the paper, the frozen per-utterance detector scores, the result and pre-registration freeze records, the five figures, and the two scripts that regenerate the figures and the rank-biserial bootstrap intervals. Both scripts were verified to run\nfrom the deposit alone\nand to reproduce every figure and interval file byte-for-byte.\nThe 11.5 GiB audio evidence estate is not released. Speaker and sample identifiers are retained deliberately as provenance under signed contract; only workstation path prefixes are stripped.\nArticle (canonical):\nhttps://ai.bedvibe.studio/called-synthetic/\nDOI:\nhttps://doi.org/10.5281/zenodo.22819223\n— all versions:\nhttps://doi.org/10.5281/zenodo.22819222\nCC BY 4.0.",
  "metadata": {
    "title": "Genuine Human Speech, Called Synthetic. Nothing Was Generated. - DEV Community",
    "description": "Thirteen frozen synthetic-speech detectors, hashed before any was scored. A codec round trip of real studio recordings moved 9 of 13 past Holm correction. Griffin-Lim, a 1984 algorithm with no neural network, moved 12 of 13. No generation anywhere. Tagged with machinelearning, python, audio, security.",
    "keywords": "machinelearning, python, audio, security, software, coding, development, engineering, inclusive, community",
    "author": null,
    "og:type": "article",
    "og:url": "https://dev.to/bedvibe_studios/genuine-human-speech-called-synthetic-nothing-was-generated-j0e",
    "og:title": "Genuine Human Speech, Called Synthetic. Nothing Was Generated.",
    "og:description": "Thirteen frozen synthetic-speech detectors, hashed before any was scored. A codec round trip of real studio recordings moved 9 of 13 past Holm correction. Griffin-Lim, a 1984 algorithm with no neural network, moved 12 of 13. No generation anywhere.",
    "og:site_name": "DEV Community",
    "og:image": "https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fglsaml3r6zcvvs5411rx.png",
    "twitter:site": "@thepracticaldev",
    "twitter:creator": "@",
    "twitter:title": "Genuine Human Speech, Called Synthetic. Nothing Was Generated.",
    "twitter:description": "Thirteen frozen synthetic-speech detectors, hashed before any was scored. A codec round trip of real studio recordings moved 9 of 13 past Holm correction. Griffin-Lim, a 1984 algorithm with no neural network, moved 12 of 13. No generation anywhere.",
    "twitter:card": "summary_large_image",
    "twitter:widgets:new-embed-design": "on",
    "twitter:image:src": "https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fglsaml3r6zcvvs5411rx.png"
  },
  "paywall": {
    "listed_paid": false,
    "detected": false,
    "marker": "",
    "public_only": false,
    "policy": "付费/会员内容只保留页面公开可见部分，不绕过付费墙"
  },
  "crawl": {
    "success": true,
    "status_code": 200,
    "error": ""
  },
  "code_blocks": [],
  "images": [],
  "audio": [],
  "videos": [],
  "links": [
    {
      "href": "https://ai.bedvibe.studio/called-synthetic/",
      "label": "https://ai.bedvibe.studio/called-synthetic/",
      "type": "a"
    },
    {
      "href": "https://doi.org/10.5281/zenodo.22819223",
      "label": "https://doi.org/10.5281/zenodo.22819223",
      "type": "a"
    },
    {
      "href": "https://doi.org/10.5281/zenodo.22819222",
      "label": "https://doi.org/10.5281/zenodo.22819222",
      "type": "a"
    }
  ],
  "repair_version": 2,
  "repaired_at": "2026-10-14T10:48:43Z",
  "source_url": "https://dev.to/bedvibe_studios/genuine-human-speech-called-synthetic-nothing-was-generated-j0e",
  "papers": [],
  "actual_video_files": [],
  "body_chars": 7788,
  "expected_body_images": 0,
  "discovery_status": "ok",
  "delivery_status": "ok",
  "missing_reason": "",
  "raw_html": "attachments/d320ed5dee08/pages/source.html",
  "local_html": "attachments/d320ed5dee08/pages/article.html",
  "body_base_path": "attachments/d320ed5dee08/pages/",
  "body_markdown_path": "attachments/d320ed5dee08/pages/article.md"
}