{"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/emage-towards-unified-holistic-co-speech","title":"EMAGE: Towards Unified Holistic Co-Speech Gesture Generation via Expressive Masked Audio Gesture Modeling","arxiv_id":"2401.00374","date":"2023-12-31","proceeding":"CVPR 2024 1","authors":["Haiyang Liu","Zihao Zhu","Giorgio Becherini","Yichen Peng","Mingyang Su","You Zhou","Xuefei Zhe","Naoya Iwamoto","Bo Zheng","Michael J. Black"],"abstract":"We propose EMAGE, a framework to generate full-body human gestures from audio and masked gestures, encompassing facial, local body, hands, and global movements. To achieve this, we first introduce BEAT2 (BEAT-SMPLX-FLAME), a new mesh-level holistic co-speech dataset. BEAT2 combines a MoShed SMPL-X body with FLAME head parameters and further refines the modeling of head, neck, and finger movements, offering a community-standardized, high-quality 3D motion captured dataset. EMAGE leverages masked body gesture priors during training to boost inference performance. It involves a Masked Audio Gesture Transformer, facilitating joint training on audio-to-gesture generation and masked gesture reconstruction to effectively encode audio and body gesture hints. Encoded body hints from masked gestures are then separately employed to generate facial and body movements. Moreover, EMAGE adaptively merges speech features from the audio's rhythm and content and utilizes four compositional VQ-VAEs to enhance the results' fidelity and diversity. Experiments demonstrate that EMAGE generates holistic gestures with state-of-the-art performance and is flexible in accepting predefined spatial-temporal gesture inputs, generating complete, audio-synchronized results. Our code and dataset are available https://pantomatrix.github.io/EMAGE/","url_abs":"https://arxiv.org/abs/2401.00374v5","url_pdf":"https://arxiv.org/pdf/2401.00374v5.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":"emage-towards-unified-holistic-co-speech","repo_url":"https://github.com/PantoMatrix/PantoMatrix","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"3d-face-animation","task_name":"3D Face Animation"},{"task_slug":"diversity","task_name":"Diversity"},{"task_slug":"gesture-generation","task_name":"Gesture Generation"},{"task_slug":"rhythm","task_name":"Rhythm"}],"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":[{"slug":"beat2","name":"BEAT2","full_name":"BEAT-SMPLX-FLAME"}],"methods_introduced":[],"results":[{"leaderboard":"/sota/gesture-generation-on-beat2","task":"Gesture Generation","dataset":"BEAT2","model":"EMAGE","rank_in_archive_order":8,"of":14,"metrics":{"FGD":"0.5512"},"uses_additional_data":false}],"syntology":{"syntology_url":"https://syntology.ai/paper/2401.00374","atlas_url":"https://app.syntology.ai/?focus=2401.00374","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2401.00374"}},"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/PantoMatrix/PantoMatrix","reach":null}],"summary":{"ran_honours":2,"ran_violates":1,"ran_fixture":1},"by_repo_kind":{"official":{"samples":4,"ran":4,"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":4,"samples":[{"code_sha256_prefix":"d9b0248490b2c839","entry":"create_pose_camera","repo":"PantoMatrix/PantoMatrix","repo_kind":"official","path":"emage_utils/fast_render.py","file_url":"https://github.com/PantoMatrix/PantoMatrix/blob/HEAD/emage_utils/fast_render.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d9b0248490b2c839"}},{"code_sha256_prefix":"0619fdf87ddb2d07","entry":"create_pose_light","repo":"PantoMatrix/PantoMatrix","repo_kind":"official","path":"emage_utils/fast_render.py","file_url":"https://github.com/PantoMatrix/PantoMatrix/blob/HEAD/emage_utils/fast_render.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0619fdf87ddb2d07"}},{"code_sha256_prefix":"86040311302ae14b","entry":"deg_to_rad","repo":"PantoMatrix/PantoMatrix","repo_kind":"official","path":"emage_utils/fast_render.py","file_url":"https://github.com/PantoMatrix/PantoMatrix/blob/HEAD/emage_utils/fast_render.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"86040311302ae14b"}},{"code_sha256_prefix":"ba4ec33e3feefb93","entry":"inverse_selection_tensor","repo":"PantoMatrix/PantoMatrix","repo_kind":"official","path":"models/emage_audio/modeling_emage_audio.py","file_url":"https://github.com/PantoMatrix/PantoMatrix/blob/HEAD/models/emage_audio/modeling_emage_audio.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ba4ec33e3feefb93"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}