lingyuxing
/

File size: 6,243 Bytes
4c83778
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
---
license: apache-2.0
base_model: openbmb/MiniCPM-o-4_5
library_name: transformers
tags:
- multimodal
- audio
- video
- conversational
- full-duplex
- function-calling
- text-to-speech
- gander
---

<h1 align="center">Gander</h1>

<p align="center"><strong>Streaming audio-visual interaction and agentic task orchestration</strong></p>

<!-- Replace the remaining #resources targets with public URLs before publication. -->
<p align="center">
  <a href="https://github.com/Omni-Interaction-Gander/Omni-Interaction-Agent"><img src="https://img.shields.io/badge/GitHub-Repository-181717?style=for-the-badge&logo=github" alt="GitHub repository"></a>
  <a href="https://arxiv.org/abs/2609.08977"><img src="https://img.shields.io/badge/Paper-Arxiv-C62828?style=for-the-badge" alt="Paper"></a>
  <a href=" https://Omni-Interaction-Gander.github.io/Omni-Interaction-Agent"><img src="https://img.shields.io/badge/Demo-Project_Page-2563EB?style=for-the-badge" alt="Demo"></a>
  <a href="#resources"><img src="https://img.shields.io/badge/Dataset-Coming_Soon-059669?style=for-the-badge" alt="Dataset coming soon"></a>
</p>

Gander is an omni-interaction model designed for continuous spoken and visual interaction
while long-running tasks execute asynchronously. It combines a realtime multimodal Thinker,
a streaming speech Talker, and the Gander runtime for task lifecycle management.

## Model Overview

Gander organizes interaction into causal one-second units. In each unit, newly available audio
and visual observations precede the model decision. The Thinker predicts whether to listen,
speak, interrupt, or invoke a task operation, and produces text or structured calls when
required. The Talker conditions on Thinker representations to synthesize speech incrementally.

The model supports:

- continuous speech interaction, interruption handling, and conversational backchannels;
- streaming image and video understanding with temporally grounded responses;
- structured task delegation, follow-up instructions, progress interaction, and completion;
- incremental speech generation synchronized with the Thinker output.

## Components

| Component | Description |
| --- | --- |
| `thinker/` | Multimodal perception, interaction control, language generation, and task operations |
| `talker/` | Streaming S3 speech-token generation and Token2wav waveform decoding |
| `release_manifest.json` | Model provenance and the shared temporal-unit contract |

## Model Specification

| Property | Value |
| --- | --- |
| Base model | `openbmb/MiniCPM-o-4_5` |
| Input modalities | Text, audio, image, and video frames |
| Temporal unit | 1 second |
| Thinker output budget | Up to 8 lexical tokens per speaking unit |
| Talker output budget | 50 S3 tokens per speaking unit |
| Streaming speech chunk | 25 S3 tokens, approximately 0.5 seconds |
| Audio input sample rate | 16 kHz |
| Speech output sample rate | 24 kHz |
| Model precision | BF16 |

## Usage

### Thinker

```python
import torch
from transformers import AutoModel, AutoProcessor, AutoTokenizer

path = "/path/to/gander/thinker"

tokenizer = AutoTokenizer.from_pretrained(path, trust_remote_code=True)
processor = AutoProcessor.from_pretrained(path, trust_remote_code=True)
model = AutoModel.from_pretrained(
    path,
    trust_remote_code=True,
    torch_dtype=torch.bfloat16,
    init_vision=True,
    init_audio=True,
    init_tts=False,
).eval()
```

### Full Realtime Inference

The complete audio-visual and speech experience uses the
[Gander runtime](https://github.com/Omni-Interaction-Gander/Omni-Interaction-Agent). Start from
its serving example and configure the base model together with both released components:

```yaml
model:
  model_name_or_path: /path/to/MiniCPM-o-4_5
  processor_name_or_path: /path/to/MiniCPM-o-4_5
  init_vision: true
  init_audio: true
  init_tts: true
  token2wav_dir: /path/to/gander/talker/assets/token2wav

duplex:
  checkpoint: /path/to/gander/thinker
  talker_checkpoint: /path/to/gander/talker
  detached_talker_device: cuda:1
  ref_audio_path: /path/to/gander/talker/assets/ref_audio.wav
  speak_text_tokens_per_unit: 8
  talker_speech_tokens_per_unit: 50
  talker_emit_speech_tokens: 25
```

```bash
git clone https://github.com/Omni-Interaction-Gander/Omni-Interaction-Agent.git
cd Omni-Interaction-Agent
cp gander_runtime/configs/serve.example.yaml gander_runtime/configs/serve.local.yaml
# Apply the paths above to serve.local.yaml.
./scripts/serve.sh gander_runtime/configs/serve.local.yaml
```

This configuration loads the released Thinker and Talker as a matched Unit-8/50 pair and runs
the Talker asynchronously on the second GPU.

## Training

Both components are initialized from MiniCPM-o 4.5 and trained in two stages:

| Stage | Trainable modules | Schedule |
| --- | --- | --- |
| Thinker | Language model and audio projection | 1 epoch, 8,407 optimization steps |
| Talker | Semantic projection and speech decoder | 2 epochs, 3,246 optimization steps |

Training uses a multimodal mixture spanning spoken dialogue, full-duplex interaction,
streaming video understanding, and agent task lifecycles. The training representation follows
the same causal one-second unit structure used during online inference.

## Intended Use

Gander-Unit8 is intended for research on realtime multimodal assistants, full-duplex spoken
interaction, streaming video-language modeling, and interactive agent systems. External task
execution is coordinated by the Gander runtime and its configured worker provider.

## Limitations

Model outputs may contain factual or perceptual errors, particularly under ambiguous audio,
rapid visual changes, or long temporal dependencies. Applications should validate consequential
external actions and follow deployment requirements appropriate to their domain.

## Resources

| Resource | Link |
| --- | --- |
| GitHub | [Omni-Interaction-Agent](https://github.com/Omni-Interaction-Gander/Omni-Interaction-Agent) |
| Paper |  [Arxiv Link](https://arxiv.org/abs/2609.08977) |
| Demo | [Project Page]( https://Omni-Interaction-Gander.github.io/Omni-Interaction-Agent)|
| Dataset | Coming soon |

## License

Gander-Unit8 is released under the Apache License 2.0 and is derived from
`openbmb/MiniCPM-o-4_5`.