|
Download README.md from walln/parley: direct link, hf CLI and curl.
- Browser
- Download file 3.49 kB
-
https://huggingface.co/walln/parley/resolve/main/README.md
- Command line
-
hf download hf://walln/parley/README.md
-
curl -L -o README.md https://huggingface.co/walln/parley/resolve/main/README.md
3.49 kB
| license: cc-by-nc-4.0 | |
| base_model: google/gemma-4-12B-it | |
| tags: | |
| - full-duplex | |
| - speech | |
| - gemma-4 | |
| - csm | |
| - lora | |
| # Parley | |
| Parley is a full-duplex speech model. It listens while it talks and decides every 80 ms | |
| whether to speak, keep speaking, or listen. | |
| It's the model from the blog post | |
| [Inside Frankenstein's lab: a full-duplex model at home](https://walln.dev/blog/full-duplex-at-home/), | |
| which covers how it works, how it was trained, and where it falls short. | |
| ## What it is | |
| - **Thinker:** Gemma 4 12B (audio-native, no speech encoder), adapted with LoRA. It hears | |
| 16 kHz audio in 40 ms slices and writes text or control tokens on an 80 ms clock: `SIL` | |
| while listening, `EPS` while still speaking, or words when it has them. | |
| - **Talker:** CSM-1B (Sesame) speaks the words Gemma writes, in chunks, through a playout | |
| queue that handles interruption and yielding. | |
| - **Codec:** Mimi (Kyutai) provides the audio codes CSM renders. | |
| This repo holds the thinker's LoRA adapter and processor. CSM-1B and Mimi are used as | |
| released. | |
| ## Training | |
| - **Supervised:** synthetic spoken conversations, with replies rewritten to sound like | |
| speech and training examples where the user interrupts mid-reply. User audio is synthetic | |
| voices only. | |
| - **Reinforcement learning:** GRPO on the decision to speak only, on mid-sentence pause clips | |
| from Meta's Seamless Interaction, heard over room tone. This is what teaches the model to | |
| wait through pauses. The released adapter is the step-20 save of that run. | |
| ## Intended use | |
| Research, experimentation, and demos of full-duplex voice interaction. Not a production | |
| voice agent. The code is at https://github.com/walln/parley, including a live demo you can | |
| run yourself: `parley serve` starts a full-duplex server with a browser page to talk to it. | |
| ## Limitations | |
| - Trained on synthetic voices only; recorded human speech is weaker. | |
| - It waits through pauses well, but answers later than it should at the end of a turn. | |
| - One voice (the CSM reference clip). | |
| - Gemma gets one text token per frame, so long text and tool calls don't fit. | |
| - It stops for any interruption, including backchannels like "okay". | |
| - Research-only weights. | |
| ## Components and licenses | |
| - Gemma 4 12B (`google/gemma-4-12B-it`): Apache 2.0. | |
| - CSM-1B (`sesame/csm-1b`): Apache 2.0, built on Llama 3.2 (Llama Community License). | |
| - Mimi (`kyutai/mimi`): CC BY 4.0. | |
| ## Training data and attributions | |
| - [Seamless Interaction](https://ai.meta.com/research/seamless-interaction/) (Meta): CC BY-NC 4.0. | |
| Pause clips for reinforcement learning. | |
| - [databricks-dolly-15k](https://huggingface.co/datasets/databricks/databricks-dolly-15k) (Databricks): CC BY-SA 3.0. | |
| - [alpaca-cleaned](https://huggingface.co/datasets/yahma/alpaca-cleaned): CC BY 4.0. Answers originally written by an OpenAI model. | |
| - [no_robots](https://huggingface.co/datasets/HuggingFaceH4/no_robots) (Hugging Face H4): CC BY-NC 4.0. | |
| - [hh-rlhf](https://huggingface.co/datasets/Anthropic/hh-rlhf) (Anthropic), helpful split: MIT. Source of the multi-turn conversations. | |
| - Training replies were partly rewritten by a teacher model. | |
| ## Weights license | |
| Research-only, under CC BY-NC 4.0. Commercial use requires a separate agreement. | |
| ## Citation | |
| ```bibtex | |
| @misc{wall2026fullduplex, | |
| author = {Nick Wall}, | |
| title = {Inside Frankenstein's lab: a full-duplex model at home}, | |
| year = {2026}, | |
| month = {oct}, | |
| howpublished = {\url{https://walln.dev/blog/full-duplex-at-home/}}, | |
| note = {Blog post} | |
| } | |
| ``` | |