# Scripted sample voice credits

All seven examples are fictional, with voices generated by Amazon Polly in `ap-southeast-2`.
They send no real emails, create or change no tickets, and make no account changes. Ironbark
Freight and its VPN policy come from the fictional evaluation corpus
(`evaluation/answers/corpus.json`); 0491 570 156 is from the ACMA range reserved for fiction.

Every assistant line is the deployed product's own wording, taken from the contact flow, the Lex
bot and the dialog hook. Only three things are written for the example, because a live call
generates them: what the caller says, the knowledge answer (a model writes it from the cited
passage) and the read-back summary (a model writes it from the caller's description). A real call
can differ in exactly those places.

## Voices

The assistant uses one voice per set: **Olivia** (neural, the product's default voice) in the
default set, **Nicole** (standard) in the second and **Russell** (generative) in the lower-tone set.
No two parties on one call share a voice, the service desk agent never uses the assistant's
voice, and every call has a different caller voice. `scripts/test-demo-audio.cjs` checks all three.

| Example | Caller | Caller voice | Other party |
| --- | --- | --- | --- |
| Answered from your documents | Kate | Nicole (Olivia with the Nicole assistant) | - |
| Log a VPN fault | Michael | Russell, generative (Brian with the Russell assistant) | - |
| Update a ticket | Priya | Kajal (en-IN, neural) | - |
| Check a known outage | David | Curtis (generative) | - |
| Reset a forgotten password | Jennifer | Amy (en-GB, neural) | - |
| Speak to a person | Alex | Arjun (en-IN, generative) | Sam, service desk agent: Aria (en-NZ, neural) |
| Nobody available | Grace | Niamh (en-IE, neural) | - |

Keypad presses are generated tones, not speech.

## Current examples

- **Answered from your documents - `answered-from-documents-v1/`:** Kate asks whether she can
  use the VPN on her own laptop. The answer is the rule stated in Ironbark Freight's uploaded
  *Remote access and VPN policy.pdf*, checked against that passage before it is spoken. She takes
  the answer, is given a call reference, and is told nothing has been sent to the team.
- **VPN fault - `intake-vpn-v2/`:** Michael reports a VPN fault affecting six staff. The assistant
  asks for the details, his name and callback number, confirms the number digit by digit, reads
  the request back and only then gives the reference (AB-7KR4XH).
- **Ticket update - `ticket-followup-v3/`:** Priya reads her ServiceNow number in a way that is not
  a reference, is asked to spell it one character at a time, and is then read her request back.
  Her addition is sent once she enters the emailed code; the ticket itself changes after the call.
- **Known outage - `outage-guidance-v3/`:** David's problem matches an outage the desk has listed.
  The assistant names it and its reference, and opens no other ticket.
- **Password recovery - `account-recovery-v4/`:** the demo lab's reset. Jennifer passes the
  emailed-code check on the call; the authenticator check and the new password happen on the lab
  page afterwards. No password changes during the call.
- **Human handover - `human-handoff-v3/`:** Alex asks for a person and gives a brief reason, which
  Sam hears before answering. Actual connections depend on queue availability and staffing.
- **Nobody available - `human-handoff-unavailable-v1/`:** the same request when nobody is free.
  The assistant says so, offers a callback request and promises no time. The excerpt ends as the
  callback request begins; it is then taken, read back and sent like any other request.

Versioned folders keep updated transcripts from playing cached older speech.

## Generation

Render every example in all three voice sets with `npm run build-demo-audio-variants`, using the
`alpha-bravo` AWS profile in `ap-southeast-2` (the renderer drops any exported access keys). Render
selected examples with, for example:

```
npm run build-demo-audio-variants -- answer ticket
```

The names are `answer`, `intake`, `ticket`, `major`, `password`, `handoff` and `unavailable`.
The source of spoken lines is `scripts/build-demo-audio.sh`; validation checks it against the
transcript shown by the player. Rendering needs `ffmpeg`; validation needs `ffprobe`.

Spoken clips are levelled to a -16 LUFS target with peak headroom and exported as mono 24 kHz /
40 kbps MP3. This keeps listening levels consistent and the downloads small; technical validation
does not establish how natural a voice sounds.
