{"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/moshi-a-speech-text-foundation-model-for-real","title":"Moshi: a speech-text foundation model for real-time dialogue","arxiv_id":"2410.00037","date":"2024-09-17","proceeding":null,"authors":["Alexandre Défossez","Laurent Mazaré","Manu Orsini","Amélie Royer","Patrick Pérez","Hervé Jégou","Edouard Grave","Neil Zeghidour"],"abstract":"We introduce Moshi, a speech-text foundation model and full-duplex spoken dialogue framework. Current systems for spoken dialogue rely on pipelines of independent components, namely voice activity detection, speech recognition, textual dialogue and text-to-speech. Such frameworks cannot emulate the experience of real conversations. First, their complexity induces a latency of several seconds between interactions. Second, text being the intermediate modality for dialogue, non-linguistic information that modifies meaning -- such as emotion or non-speech sounds -- is lost in the interaction. Finally, they rely on a segmentation into speaker turns, which does not take into account overlapping speech, interruptions and interjections. Moshi solves these independent issues altogether by casting spoken dialogue as speech-to-speech generation. Starting from a text language model backbone, Moshi generates speech as tokens from the residual quantizer of a neural audio codec, while modeling separately its own speech and that of the user into parallel streams. This allows for the removal of explicit speaker turns, and the modeling of arbitrary conversational dynamics. We moreover extend the hierarchical semantic-to-acoustic token generation of previous work to first predict time-aligned text tokens as a prefix to audio tokens. Not only this \"Inner Monologue\" method significantly improves the linguistic quality of generated speech, but we also illustrate how it can provide streaming speech recognition and text-to-speech. Our resulting model is the first real-time full-duplex spoken large language model, with a theoretical latency of 160ms, 200ms in practice, and is available at https://github.com/kyutai-labs/moshi.","url_abs":"https://arxiv.org/abs/2410.00037v2","url_pdf":"https://arxiv.org/pdf/2410.00037v2.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":"moshi-a-speech-text-foundation-model-for-real","repo_url":"https://github.com/kyutai-labs/moshi","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"moshi-a-speech-text-foundation-model-for-real","repo_url":"https://github.com/kyutai-labs/hibiki","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"moshi-a-speech-text-foundation-model-for-real","repo_url":"https://github.com/kyutai-labs/moshivis","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"action-detection","task_name":"Action Detection"},{"task_slug":"activity-detection","task_name":"Activity Detection"},{"task_slug":"language-modeling","task_name":"Language Modeling"},{"task_slug":"language-modelling","task_name":"Language Modelling"},{"task_slug":"large-language-model","task_name":"Large Language Model"},{"task_slug":"speech-recognition","task_name":"Speech Recognition"},{"task_slug":"text-to-speech","task_name":"Text to Speech"},{"task_slug":"speech-recognition-1","task_name":"speech-recognition"},{"task_slug":"text-to-speech-1","task_name":"text-to-speech"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2410.00037","atlas_url":"https://app.syntology.ai/?focus=2410.00037","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2410.00037"}},"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/kyutai-labs/moshi","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/kyutai-labs/hibiki","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/kyutai-labs/moshivis","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":7},"by_repo_kind":{"official":{"samples":7,"ran":7,"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":"61632108e112746f","entry":"apply_parametrization_norm","repo":"kyutai-labs/moshi","repo_kind":"official","path":"moshi/moshi/modules/conv.py","file_url":"https://github.com/kyutai-labs/moshi/blob/HEAD/moshi/moshi/modules/conv.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"61632108e112746f"}},{"code_sha256_prefix":"ebade1c8fb249955","entry":"colorize","repo":"kyutai-labs/moshi","repo_kind":"official","path":"moshi/moshi/client_utils.py","file_url":"https://github.com/kyutai-labs/moshi/blob/HEAD/moshi/moshi/client_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ebade1c8fb249955"}},{"code_sha256_prefix":"26ecc97e6c0629ee","entry":"gating_forward_generic","repo":"kyutai-labs/moshi","repo_kind":"official","path":"moshi/moshi/modules/gating.py","file_url":"https://github.com/kyutai-labs/moshi/blob/HEAD/moshi/moshi/modules/gating.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"26ecc97e6c0629ee"}},{"code_sha256_prefix":"5a9465546cfaa0f0","entry":"get_extra_padding_for_conv1d","repo":"kyutai-labs/moshi","repo_kind":"official","path":"moshi/moshi/modules/conv.py","file_url":"https://github.com/kyutai-labs/moshi/blob/HEAD/moshi/moshi/modules/conv.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5a9465546cfaa0f0"}},{"code_sha256_prefix":"625b33a3b1ad0220","entry":"hf_get","repo":"kyutai-labs/moshi","repo_kind":"official","path":"moshi/moshi/models/loaders.py","file_url":"https://github.com/kyutai-labs/moshi/blob/HEAD/moshi/moshi/models/loaders.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"625b33a3b1ad0220"}},{"code_sha256_prefix":"d48f94c0cfe9e8b8","entry":"make_log","repo":"kyutai-labs/moshi","repo_kind":"official","path":"moshi/moshi/client_utils.py","file_url":"https://github.com/kyutai-labs/moshi/blob/HEAD/moshi/moshi/client_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d48f94c0cfe9e8b8"}},{"code_sha256_prefix":"44c94244e949b9fb","entry":"pad_for_conv1d","repo":"kyutai-labs/moshi","repo_kind":"official","path":"moshi/moshi/modules/conv.py","file_url":"https://github.com/kyutai-labs/moshi/blob/HEAD/moshi/moshi/modules/conv.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"44c94244e949b9fb"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}