TRACEPaper companion

Submitted to ICASSP 2027

Voice Agents Under Acoustic Stress: From Signal Degradation to Interaction and Action

Amir Ivry1 Kai-Wei Chang2 Lin Zhang3 Sharon Gannot4 Carlos Busso5

1 Technion – Israel Institute of Technology 2 Massachusetts Institute of Technology 3 Independent Researcher 4 Bar-Ilan University 5 Carnegie Mellon University

TRACE is a practical workflow for testing how acoustic conditions affect a voice agent's actions, task completion, and the effort required from its user.

01 / THE WORKFLOW

What TRACE does

Follow a spoken request from the recording to the action it produces. Define what a successful task requires, compare inputs, then follow the conversation through mistakes, recovery, and user effort.

  1. Task

    Define the goal and rules.

  2. Recording

    Select the speech input.

  3. Acoustics

    Alter a copy and check what information remains.

  4. Comparison

    Test the same agent with each input.

  5. Effects

    Compare outcomes and user effort.

02 / LISTEN TO THE INPUTS

One timer instruction, three listening conditions

This timer example shows how TRACE connects a change in speech to the agent’s next action. The three clips contain the same instruction, with added noise or a silenced segment in two copies. The question is whether enough information remains to set the correct timer, or whether the agent needs to ask for the duration.

“Start the timer for nine minutes.”

All three clips use the same attenuation to avoid clipping. Exact preparation details and the untouched source recording are available below.

3 actual first responses. Each response belongs to the exact WAV above. Human interpretation and audio-cue review remain pending. These first responses do not establish completed tasks or an agent success rate.
Audio preparation, exact files, and pending input review
Recording
Timers and Such v1.0, dev-real/anonymous0_24.wav. Mono, 16 kHz, 28,989 samples (1.8118125 seconds) in every comparison file.
Shared attenuation
All three files use gain 0.908076 (about −0.84 dB), followed by the same PCM16 export. This preserves relative levels without clipping; it does not equalize the clips’ loudness. “Original speech” is a comparison copy of the untouched source recording. These exact PCM16 files are the model inputs specified for this gallery.
Marked number
Samples [15461, 18682), or 0.9663125–1.167625 seconds. Start inclusive; end exclusive. These are historical automatic forced-alignment estimates, not human phonetic annotations. The silenced condition sets this interval to zero and retains the duration.
Machinery event
The complete released 0.75-second Holman nc4 event spans samples [14934, 26934), or 0.933375–1.683375 seconds. It overlaps the duration phrase, including part of “minutes.” The creator’s released recording includes mastering and beat-length editing.
Local SNR
−10 dB, calibrated from speech and added-noise energy only within the marked number interval, before their shared attenuation. After PCM16 export: −9.9999966 dB. This is neither whole-recording SNR nor physical sound pressure. No SNR applies to the silenced condition.
Input review
Human listening and a residual-cue audit remain pending. No model response determined the segment boundaries or machinery selection. The visible transcript is for visitors; it is not model input.
Frozen requests
Qwen3-Omni-30B-A3B-Instruct; model and processor revision 26291f793822fb6be9555850f06dfe95f2d7e695. Each request uses a fresh conversation and seed 1234, Thinker audio input with text output, BF16, SDPA, and batch size one. Sampling: temperature 0.6, top-p 0.95, top-k 20, maximum 256 new tokens. The model receives only the audio waveform and generic timer prompt/tool schema, with the neutral input.wav placeholder. See the complete generation settings and frozen request manifest. No model is loaded by this page.

Exact SHA-256 values for the PCM16 files:

  • Original speech: f12141a1dfefa3d3a90066b85d5f0dcb4bc60e07f1238efaa7c5fbe9017dbcad
  • Machinery noise: e11df5ec40467079404ec9dd583803371ef69be2559f2de84a1a50d81625509f
  • Number segment silenced: 05785e5e0d8401fdbda697dfd9838251b4369a0d1c4e1774b38f9235a3443bf5

Original preparation manifest (before inference) · Saved gallery evidence states

Optional: one archived model response from 9 October 2026

An actual response recorded on 9 October 2026, kept separate from the three current responses. It belongs to its own gain-scaled recording and is not used as evidence for any of the three new inputs.

Historical actual response

Exact archived input

Original speech with gain 0.9708313164; no added noise. This player uses the original float WAV, with no conversion.

Download original float WAV

Complete generated response

<tool_call>
{"name": "set_timer", "arguments": {"hours": 0, "minutes": 9, "seconds": 0}}
</tool_call><|im_end|>

Proposed action: set_timer(hours=0, minutes=9, seconds=0). Generated syntax alone is a proposal.

Recorded simulation: the archived trace separately reports a 540-second timer in memory. No real timer was started.

Archived model, settings, and evidence provenance
Model
Qwen/Qwen3-Omni-30B-A3B-Instruct
Revision 26291f793822fb6be9555850f06dfe95f2d7e695
Timestamp / seed
9 October 2026, 16:41:05 UTC · Seed 655677136 · 32 generated tokens.
Sampling
Sampling enabled; temperature 0.6, top-p 0.95, top-k 20, maximum 256 new tokens. The complete saved settings and exact rendered prompt are available.
Input SHA-256
722b0356acb98ce36c91e2d73b4e45873d7a1864ad1904406a0df9634f4637e6

Exact raw response · Public evidence extract with recorded simulation. This extract retains response, prompt, tokens, settings, and simulation, while excluding old host paths and runtime receipts. Its source-trace hash identifies the unchanged archival record.

03 / FOLLOW THE CONVERSATION

How TRACE scores a conversation

A first response does not show whether the task eventually succeeds. The scripted examples below illustrate how TRACE follows the conversation and records mistakes and extra user effort.

Scripted scoring examples — not measured model performance

Goal: exactly one active 540-second timer at the end, within 30 seconds and at most five extra user turns.
Scripted scenarioGoal attainedViolationRecovery
completed / initiated
Task successExtra user turns
S1Correct timer without clarificationThe initial instruction provides the duration.YesNo0 / 0Yes0
S2Clarification followed by the correct timerThe initial duration is unavailable; a reply supplies it.YesNo1 / 1Yes1
S3Wrong timer cancelled and replaced after correctionThe duration is available, but a wrong timer is created first.YesYes1 / 1No1
S4Clarification requested; user declines to continueThe duration is missing; the refusal supplies no duration.NoNo0 / 1No1
S5Correct duration guessed before it is obtainedThe scenario stipulates that no available input reveals the duration.YesYes0 / 0No0

A correct final timer is only part of success. Creating a wrong-duration timer, or creating a timer before required information is obtained, remains a violation even if it is later cancelled. Task success requires the goal and no violations.

Recovery takes more than asking. A request for missing information or user correction begins an attempt. Obtaining the information and using it to resume the task completes recovery. Every user reply, correction, or refusal after the initial instruction adds one user turn.

The fictional missing-duration cases explicitly stipulate that the number is unavailable until the user supplies it. That assumption does not establish what can be heard in the new silenced WAV. A proposal alone never changes simulated state. These five rows are teaching examples; they do not support an agent success rate or a combined TRACE score.

Inspect the scripted conversations and computed state

S1 · Correct timer without clarification

[
  {
    "t": 0,
    "type": "user_instruction",
    "duration_available": true
  },
  {
    "t": 1,
    "type": "timer_created",
    "timer_id": "timer_1",
    "duration_seconds": 540,
    "execution": "scripted_inert_simulation"
  }
]

S2 · Clarification followed by the correct timer

[
  {
    "t": 0,
    "type": "user_instruction",
    "duration_available": false
  },
  {
    "t": 1,
    "type": "agent_clarification",
    "text": "How many minutes?"
  },
  {
    "t": 2,
    "type": "user_reply",
    "duration_seconds": 540
  },
  {
    "t": 3,
    "type": "timer_created",
    "timer_id": "timer_1",
    "duration_seconds": 540,
    "execution": "scripted_inert_simulation"
  }
]

S3 · Wrong timer cancelled and replaced after correction

[
  {
    "t": 0,
    "type": "user_instruction",
    "duration_available": true
  },
  {
    "t": 1,
    "type": "timer_created",
    "timer_id": "timer_wrong",
    "duration_seconds": 360,
    "execution": "scripted_inert_simulation"
  },
  {
    "t": 2,
    "type": "user_correction",
    "duration_seconds": 540
  },
  {
    "t": 3,
    "type": "timer_cancelled",
    "timer_id": "timer_wrong"
  },
  {
    "t": 4,
    "type": "timer_created",
    "timer_id": "timer_correct",
    "duration_seconds": 540,
    "execution": "scripted_inert_simulation"
  }
]

S4 · Clarification requested; user declines to continue

[
  {
    "t": 0,
    "type": "user_instruction",
    "duration_available": false
  },
  {
    "t": 1,
    "type": "agent_clarification",
    "text": "How many minutes?"
  },
  {
    "t": 2,
    "type": "user_refusal",
    "text": "Never mind."
  }
]

S5 · Correct duration guessed before it is obtained

[
  {
    "t": 0,
    "type": "user_instruction",
    "duration_available": false
  },
  {
    "t": 1,
    "type": "timer_created",
    "timer_id": "timer_1",
    "duration_seconds": 540,
    "execution": "scripted_inert_simulation"
  }
]

Event fixtures and hand-calculated expectations · Computed scores, violations, and final states

Exceeding a time or turn limit prevents goal attainment and task success. Budget failures are reported separately from prohibited actions. Invalid event sequences are rejected explicitly. Only inert timers in local memory are used.

04 / REPRODUCE AND ADAPT

Run the example on CPU

Download and extract the example package. Use Python 3.10 or newer with NumPy and SciPy; installation instructions are included in the README. The CPU tools need no model credentials or GPU.

Two commands, from the extracted folder

python -B scripts/prepare_audio.py --output outputs/reproduced_audio
python -B -m companion.scoring --output outputs/scripted_scores.json

Preparation reproduces the shipped PCM16 inputs. Scoring computes all five rows from the event logs.

Download code and examples

Adapt it to your task

  1. Replace the recording and mark the segment to change. Review what information remains after editing.
  2. For a different task, replace the timer-specific rules and state updates in companion/scoring.py. Changing the example JSON alone does not define a new scorer.
  3. Represent the conversation as event logs, keeping proposed actions separate from actions that were executed. The supplied scorer accepts scripted examples; using real logs requires an adapter and validation.
Saved responses and optional GPU reproduction

3 of 3 first-response records are available. Saved records are checked against the exact audio hash, model and processor revisions, generic prompt, resolved settings, seed 1234, and pinned runtime. Human-review flags remain pending. No parsed timer proposal is executed, and first responses are not passed through the conversation scorer.

The download includes a separate optional GPU entry point and pinned runtime instructions. The two CPU commands above do not install or load model dependencies. GPU reproduction needs the specified 96 GB RTX PRO 6000 and a separately obtained pinned model snapshot.

05 / CITATION AND CREDITS

Reference the paper

BibTeX · submitted manuscript

@unpublished{ivry2026trace,
  title = {Voice Agents Under Acoustic Stress: From Signal Degradation to Interaction and Action},
  author = {Ivry, Amir and Chang, Kai-Wei and Zhang, Lin and Gannot, Sharon and Busso, Carlos},
  year = {2026},
  note = {Submitted to ICASSP 2027}
}

Speech: Loren Lugosch, Timers and Such v1.0, dev-real/anonymous0_24.wav, CC0 1.0. License text.

Machinery: ldezem / Ore.e Refineries, Sound of Work: Blacksmith edition 1, Holman nc4 start event, recorded at Jesse Sipola’s smithy. Released under CC0 1.0; the creator’s metadata marks it public domain. License text.

Archived model: Qwen team, Qwen3-Omni-30B-A3B-Instruct model card. No weights or inference runtime are included.

Audio licenses apply to the audio assets. The downloaded provenance and licensing note identifies transferred code separately; no blanket code or paper license is asserted. The PDF is the unchanged submitted manuscript.