> ## Documentation Index
> Fetch the complete documentation index at: https://docs.perceptron.inc/llms.txt
> Use this file to discover all available pages before exploring further.

# Audio Q&A

> Ask focused questions about speech and audible events in a recording.

Ask a question about a recording, then request the audible evidence that supports the answer. Keep what a speaker says separate from conclusions the recording cannot establish. For example, a speaker's proposed delivery date is not proof that the delivery happened.

## Ask about a spoken decision

Install `perceptron>=0.4.0`, set `PERCEPTRON_API_KEY`, and put a short WAV recording of a delivery discussion at `./delivery-discussion.wav`. Use your own recording and adapt the question to its subject. This example asks for the stated reason for a delay and distinguishes a confirmed date from a proposal:

```python theme={null}
import os

from perceptron import Client, audio

client = Client(
    provider="perceptron",
    api_key=os.environ["PERCEPTRON_API_KEY"],
)
messages = [{
    "role": "user",
    "content": [
        audio("delivery-discussion.wav"),
        {"type": "text", "text": (
            "What reason is stated for the delivery delay? What new date, if any, "
            "do the speakers agree on? Distinguish an agreed date from a suggestion. "
            "Answer using only the recording. If the reason or date is not stated "
            "or cannot be heard clearly, say so."
        )},
    ],
}]
response = client.chat.completions.create(
    model="perceptron-mk1.5",
    messages=messages,
    reasoning_effort="none",
    max_completion_tokens=1024,
)
choice = response.choices[0]
if choice.finish_reason != "stop" or choice.message.tool_calls:
    raise RuntimeError(f"Expected a completed audio answer, got: {choice.finish_reason}")
answer = choice.message.content or ""
print(answer)
```

The response is text. The `audio()` helper detects WAV, MP3, or FLAC from local file contents and sends the recording inline. See [audio input forms](/perceptron-mk1.5/capabilities/audio#choose-an-audio-input) for MP3, FLAC, URLs, and uploaded file IDs.

## Ask a follow-up with the recording in history

Run this after the first example to ask for the words supporting its answer:

```python theme={null}
messages.extend([
    choice.message.to_dict(),
    {"role": "user", "content": (
        "Recheck the recording and quote the short phrases that support your "
        "answer about the reason and date. Mark unclear words as [unclear]. "
        "If your earlier answer is not supported, correct it."
    )},
])
follow_up = client.chat.completions.create(
    model="perceptron-mk1.5",
    messages=messages,
    reasoning_effort="none",
    max_completion_tokens=1024,
)
choice = follow_up.choices[0]
if choice.finish_reason != "stop" or choice.message.tool_calls:
    raise RuntimeError(f"Expected a completed follow-up, got: {choice.finish_reason}")
print(choice.message.content or "")
```

The full `messages` list sends the original audio and previous answer again. The API does not retain this conversation automatically. Text-only follow-ups do not add media assets; this recording remains asset `0` if a later answer uses an annotation. See [asset ordering](/perceptron-mk1.5/guides/multiple-assets) when combining recordings with other media.

## Choose the question and evidence

* Ask one specific question, such as what decision was stated or which sound occurred before another, and allow an answer of “not audible” or “not stated.”
* Request a short supporting quotation for speech. For non-speech events, ask for a description of the audible evidence rather than an unsupported explanation of its cause.
* Use [audio clipping](/perceptron-mk1.5/capabilities/audio-clipping) when the answer needs an interval to review, or [transcription](/perceptron-mk1.5/capabilities/audio-transcription) when you need the full spoken text.
* Use [Multilook](/perceptron-mk1.5/guides/multilook) for independent questions over the same recording. Keep dependent follow-ups in a conversation that includes the earlier answer.

Check the [audio and context limits](/perceptron-mk1.5/capabilities/audio#understand-usage-and-limits) when carrying recordings through several turns. Each request includes the audio supplied in its history.
