{"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/voicecraft-zero-shot-speech-editing-and-text","title":"VoiceCraft: Zero-Shot Speech Editing and Text-to-Speech in the Wild","arxiv_id":"2403.16973","date":"2024-03-25","proceeding":null,"authors":["Puyuan Peng","Po-Yao Huang","Shang-Wen Li","Abdelrahman Mohamed","David Harwath"],"abstract":"We introduce VoiceCraft, a token infilling neural codec language model, that achieves state-of-the-art performance on both speech editing and zero-shot text-to-speech (TTS) on audiobooks, internet videos, and podcasts. VoiceCraft employs a Transformer decoder architecture and introduces a token rearrangement procedure that combines causal masking and delayed stacking to enable generation within an existing sequence. On speech editing tasks, VoiceCraft produces edited speech that is nearly indistinguishable from unedited recordings in terms of naturalness, as evaluated by humans; for zero-shot TTS, our model outperforms prior SotA models including VALLE and the popular commercial model XTTS-v2. Crucially, the models are evaluated on challenging and realistic datasets, that consist of diverse accents, speaking styles, recording conditions, and background noise and music, and our model performs consistently well compared to other models and real recordings. In particular, for speech editing evaluation, we introduce a high quality, challenging, and realistic dataset named RealEdit. We encourage readers to listen to the demos at https://jasonppy.github.io/VoiceCraft_web.","url_abs":"https://arxiv.org/abs/2403.16973v3","url_pdf":"https://arxiv.org/pdf/2403.16973v3.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":"voicecraft-zero-shot-speech-editing-and-text","repo_url":"https://github.com/jasonppy/voicecraft","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}}],"tasks":[{"task_slug":"decoder","task_name":"Decoder"},{"task_slug":"language-modeling","task_name":"Language Modeling"},{"task_slug":"language-modelling","task_name":"Language Modelling"},{"task_slug":"text-to-speech","task_name":"Text to Speech"},{"task_slug":"text-to-speech-1","task_name":"text-to-speech"}],"methods":[{"method_slug":"absolute-position-encodings","method_name":"Absolute Position Encodings"},{"method_slug":"adam","method_name":"Adam"},{"method_slug":"attention","method_name":"Attention"},{"method_slug":"bpe","method_name":"BPE"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"dropout","method_name":"Dropout"},{"method_slug":"label-smoothing","method_name":"Label Smoothing"},{"method_slug":"layer-normalization","method_name":"Layer Normalization"},{"method_slug":"linear-layer","method_name":"Linear Layer"},{"method_slug":"multi-head-attention","method_name":"Multi-Head Attention"},{"method_slug":"position-wise-feed-forward-layer","method_name":"Position-Wise Feed-Forward Layer"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"transformer","method_name":"Transformer"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2403.16973","atlas_url":"https://app.syntology.ai/?focus=2403.16973","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2403.16973"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/jasonppy/voicecraft","reach":{"status":"ok","spdx":"NOASSERTION"}}],"summary":{"ran":8,"unverified":1},"by_repo_kind":{"official":{"samples":9,"ran":8,"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":9,"samples":[{"code_sha256_prefix":"06244bf64882ebfe","entry":"find_closest_cut_off_word","repo":"jasonppy/voicecraft","repo_kind":"official","path":"predict.py","file_url":"https://github.com/jasonppy/voicecraft/blob/HEAD/predict.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"06244bf64882ebfe"}},{"code_sha256_prefix":"69fc23269eca855d","entry":"get_mask_interval","repo":"jasonppy/voicecraft","repo_kind":"official","path":"inference_speech_editing_scale.py","file_url":"https://github.com/jasonppy/voicecraft/blob/HEAD/inference_speech_editing_scale.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"69fc23269eca855d"}},{"code_sha256_prefix":"e0162cfc7ba3b31c","entry":"get_mask_interval_from_word_bounds","repo":"jasonppy/voicecraft","repo_kind":"official","path":"predict.py","file_url":"https://github.com/jasonppy/voicecraft/blob/HEAD/predict.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e0162cfc7ba3b31c"}},{"code_sha256_prefix":"ae9e5db4e53c6dce","entry":"get_span","repo":"jasonppy/voicecraft","repo_kind":"official","path":"edit_utils.py","file_url":"https://github.com/jasonppy/voicecraft/blob/HEAD/edit_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ae9e5db4e53c6dce"}},{"code_sha256_prefix":"a6e1062a6dea09b3","entry":"get_transcribe_state","repo":"jasonppy/voicecraft","repo_kind":"official","path":"gradio_app.py","file_url":"https://github.com/jasonppy/voicecraft/blob/HEAD/gradio_app.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a6e1062a6dea09b3"}},{"code_sha256_prefix":"76f8432650c37dd1","entry":"get_transcribe_state","repo":"jasonppy/voicecraft","repo_kind":"official","path":"predict.py","file_url":"https://github.com/jasonppy/voicecraft/blob/HEAD/predict.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"76f8432650c37dd1"}},{"code_sha256_prefix":"99a311d99448f881","entry":"top_k_top_p_filtering","repo":"jasonppy/voicecraft","repo_kind":"official","path":"models/voicecraft.py","file_url":"https://github.com/jasonppy/voicecraft/blob/HEAD/models/voicecraft.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"99a311d99448f881"}},{"code_sha256_prefix":"fb8e21d446dcf26f","entry":"topk_sampling","repo":"jasonppy/voicecraft","repo_kind":"official","path":"models/voicecraft.py","file_url":"https://github.com/jasonppy/voicecraft/blob/HEAD/models/voicecraft.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fb8e21d446dcf26f"}},{"code_sha256_prefix":"d3cb669c6fbc4bf8","entry":"find_closest_word_boundary","repo":"jasonppy/voicecraft","repo_kind":"official","path":"tts_demo.py","file_url":"https://github.com/jasonppy/voicecraft/blob/HEAD/tts_demo.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d3cb669c6fbc4bf8"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}