# Voice Loop

A full spoken round trip: listen, answer aloud, remember.

**Incoming audio:** {{audio}}
**Reply voice:** {{voice}}

## Procedure

1. **Transcribe** the incoming audio with `audio.transcribe`.

2. **Recall context** with `memory.search` before answering, if available — query on the topic of the transcript, not on the whole transcript. A spoken conversation that forgets last session's conclusions is the failure mode this pack exists to fix.

3. **Compose the reply as speech, not as prose.** This is the step most agents skip:
   - Short sentences. No bulleted lists, no headers, no code blocks — none of it survives text-to-speech.
   - Numbers spoken the way a person says them ("about twelve hundred", not "1,187").
   - No URLs read aloud. Say "I'll put the link in the transcript" and return it as text alongside the audio.
   - Under ~150 words unless the question genuinely needs more; a long spoken answer is unlistenable.

4. **Synthesize** with `audio.synthesize`, passing `voice` if one was supplied.

5. **Save what will matter next time** with `memory.save` — conclusions and constraints, not the transcript.

## Output

The audio reply, plus the reply text and any links as text.

## Notes

- Text-to-speech is billed per character. Tighten the reply before synthesizing, not after.
- If the transcript is ambiguous, ask one short spoken clarifying question rather than answering the wrong reading at length.
