{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/singfake-singing-voice-deepfake-detection","title":"SingFake: Singing Voice Deepfake Detection","arxiv_id":"2309.07525","date":"2023-09-14","proceeding":null,"authors":["Yongyi Zang","You Zhang","Mojtaba Heydari","Zhiyao Duan"],"abstract":"The rise of singing voice synthesis presents critical challenges to artists and industry stakeholders over unauthorized voice usage. Unlike synthesized speech, synthesized singing voices are typically released in songs containing strong background music that may hide synthesis artifacts. Additionally, singing voices present different acoustic and linguistic characteristics from speech utterances. These unique properties make singing voice deepfake detection a relevant but significantly different problem from synthetic speech detection. In this work, we propose the singing voice deepfake detection task. We first present SingFake, the first curated in-the-wild dataset consisting of 28.93 hours of bonafide and 29.40 hours of deepfake song clips in five languages from 40 singers. We provide a train/validation/test split where the test sets include various scenarios. We then use SingFake to evaluate four state-of-the-art speech countermeasure systems trained on speech utterances. We find these systems lag significantly behind their performance on speech test data. When trained on SingFake, either using separated vocal tracks or song mixtures, these systems show substantial improvement. However, our evaluations also identify challenges associated with unseen singers, communication codecs, languages, and musical contexts, calling for dedicated research into singing voice deepfake detection. The SingFake dataset and related resources are available at https://www.singfake.org/.","url_abs":"https://arxiv.org/abs/2309.07525v2","url_pdf":"https://arxiv.org/pdf/2309.07525v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"singfake-singing-voice-deepfake-detection","repo_url":"https://github.com/yongyizang/SingFake","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"deepfake-detection","task_name":"DeepFake Detection"},{"task_slug":"face-swapping","task_name":"Face Swapping"},{"task_slug":"singing-voice-synthesis","task_name":"Singing Voice Synthesis"},{"task_slug":"synthetic-speech-detection","task_name":"Synthetic Speech Detection"}],"methods":[],"datasets_introduced":[{"slug":"singfake","name":"SingFake","full_name":"SingFake: Singing Voice Deepfake Detection"}],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2309.07525","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2309.07525"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yongyizang/SingFake","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_fixture":2,"ran":12,"ran_draft_wrong":1,"unverified":1},"by_repo_kind":{"official":{"samples":16,"ran":15,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"3a889d3debbcead8","entry":"compute_det_curve","repo":"yongyizang/SingFake","repo_kind":"official","path":"models/feat+resnet/eval_metrics.py","file_url":"https://github.com/yongyizang/SingFake/blob/HEAD/models/feat%2Bresnet/eval_metrics.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3a889d3debbcead8"}},{"code_sha256_prefix":"047cd2d292cdc66d","entry":"compute_eer","repo":"yongyizang/SingFake","repo_kind":"official","path":"models/feat+resnet/eval_metrics.py","file_url":"https://github.com/yongyizang/SingFake/blob/HEAD/models/feat%2Bresnet/eval_metrics.py","link_basis":"plan_row","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"047cd2d292cdc66d"}},{"code_sha256_prefix":"0e4e062545eb78ac","entry":"cosine_annealing","repo":"yongyizang/SingFake","repo_kind":"official","path":"models/AASIST/utils.py","file_url":"https://github.com/yongyizang/SingFake/blob/HEAD/models/AASIST/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0e4e062545eb78ac"}},{"code_sha256_prefix":"58ec4646ad814adf","entry":"delta","repo":"yongyizang/SingFake","repo_kind":"official","path":"models/feat+resnet/audio_feature_extraction.py","file_url":"https://github.com/yongyizang/SingFake/blob/HEAD/models/feat%2Bresnet/audio_feature_extraction.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"58ec4646ad814adf"}},{"code_sha256_prefix":"055280b0e9fae51f","entry":"format_codec","repo":"yongyizang/SingFake","repo_kind":"official","path":"dataset/simulate_codec.py","file_url":"https://github.com/yongyizang/SingFake/blob/HEAD/dataset/simulate_codec.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"055280b0e9fae51f"}},{"code_sha256_prefix":"b966dbdba0741d13","entry":"format_suffix","repo":"yongyizang/SingFake","repo_kind":"official","path":"dataset/simulate_codec.py","file_url":"https://github.com/yongyizang/SingFake/blob/HEAD/dataset/simulate_codec.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b966dbdba0741d13"}},{"code_sha256_prefix":"54a60bd39fb10f2d","entry":"genSpoof_list","repo":"yongyizang/SingFake","repo_kind":"official","path":"models/AASIST/data_utils.py","file_url":"https://github.com/yongyizang/SingFake/blob/HEAD/models/AASIST/data_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"54a60bd39fb10f2d"}},{"code_sha256_prefix":"461ce4011175cbad","entry":"keras_decay","repo":"yongyizang/SingFake","repo_kind":"official","path":"models/AASIST/utils.py","file_url":"https://github.com/yongyizang/SingFake/blob/HEAD/models/AASIST/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"461ce4011175cbad"}},{"code_sha256_prefix":"7453b30a6a37676b","entry":"label_2_float","repo":"yongyizang/SingFake","repo_kind":"official","path":"models/feat+resnet/audio_feature_extraction.py","file_url":"https://github.com/yongyizang/SingFake/blob/HEAD/models/feat%2Bresnet/audio_feature_extraction.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7453b30a6a37676b"}},{"code_sha256_prefix":"4a9fc5f1de58c879","entry":"obtain_asv_error_rates","repo":"yongyizang/SingFake","repo_kind":"official","path":"models/feat+resnet/eval_metrics.py","file_url":"https://github.com/yongyizang/SingFake/blob/HEAD/models/feat%2Bresnet/eval_metrics.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4a9fc5f1de58c879"}},{"code_sha256_prefix":"43d18bf97d3ba573","entry":"pad","repo":"yongyizang/SingFake","repo_kind":"official","path":"models/AASIST/data_utils.py","file_url":"https://github.com/yongyizang/SingFake/blob/HEAD/models/AASIST/data_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"43d18bf97d3ba573"}},{"code_sha256_prefix":"b4f9b637a765b790","entry":"pad_random","repo":"yongyizang/SingFake","repo_kind":"official","path":"models/AASIST/data_utils.py","file_url":"https://github.com/yongyizang/SingFake/blob/HEAD/models/AASIST/data_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b4f9b637a765b790"}},{"code_sha256_prefix":"14738aac076461dd","entry":"repeat_padding_Tensor","repo":"yongyizang/SingFake","repo_kind":"official","path":"models/feat+resnet/dataset.py","file_url":"https://github.com/yongyizang/SingFake/blob/HEAD/models/feat%2Bresnet/dataset.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"14738aac076461dd"}},{"code_sha256_prefix":"bc2ace1bc5b21488","entry":"str_to_bool","repo":"yongyizang/SingFake","repo_kind":"official","path":"models/AASIST/utils.py","file_url":"https://github.com/yongyizang/SingFake/blob/HEAD/models/AASIST/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"bc2ace1bc5b21488"}},{"code_sha256_prefix":"0ddbd12af0260f4b","entry":"trimf","repo":"yongyizang/SingFake","repo_kind":"official","path":"models/feat+resnet/audio_feature_extraction.py","file_url":"https://github.com/yongyizang/SingFake/blob/HEAD/models/feat%2Bresnet/audio_feature_extraction.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0ddbd12af0260f4b"}},{"code_sha256_prefix":"d03c780aa3716d38","entry":"repeat_padding_RawTensor","repo":"yongyizang/SingFake","repo_kind":"official","path":"models/feat+resnet/dataset.py","file_url":"https://github.com/yongyizang/SingFake/blob/HEAD/models/feat%2Bresnet/dataset.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d03c780aa3716d38"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}