Skip to content
AmplifierDocs
Esc
↑↓navigate↵open⌘Jpreview
On this page

Audio Requirements

File formats, size limits, and audio-quality issue codes for recordings.

Supported formats

Format Notes
wav Lossless quality; larger file sizes
flac Lossless compression; smaller than WAV with no quality loss
mp3 Accepted; often smaller than WAV; helps you stay under the 32 MB upload limit
m4a Accepted; common from mobile devices; often smaller than WAV

Format is detected from the file. Anything else returns UNSUPPORTED_FORMAT (400) — Errors.

File size

Limit Value
Maximum per file 32 MB

For longer recordings, use MP3, M4A, or FLAC to stay under 32 MB.

Duration

Duration Outcome
Less than 15 seconds Returns 400 Bad Request; submit a recording of at least 15 seconds
15–19 seconds Processed; check audio_quality for guidance on use
20–120 seconds Recommended range for best results
2–20 minutes Accepted; longer recordings have longer processing times (up to several minutes)
Greater than 20 minutes (1200 seconds) Returns 400 Bad Request; trim to 20 minutes or fewer before submitting

Recordings on the shorter end of the 15–19 second range are more likely to produce insufficient_speech issues.

Sample rate

Parameter Value
Minimum 8000 Hz
Recommended 16000 Hz
Maximum No hard upper limit; higher rates are downsampled internally

Record and submit at 16000 Hz where possible for best results across all models.

Channels

Mono recordings are recommended. Stereo recordings are accepted — the API automatically downmixes stereo input to mono before analysis. For best results, mixing to mono before submitting is still preferred.

Submitting audio

Audio is submitted as multipart/form-data with either an audio file or an audio_upload_ref (the mint response’s upload_ref from POST /v2/audio/uploads). For complete working examples, see the Model API, the Sign API, and Audio Uploads.

Speaker diarization

diarize=true splits speakers and analyzes each. Default false. Use for interviews or group sessions. Flat +50 tokens — Billing and Cost.

When to use diarization

  • Single speaker — diarize=false (default).
  • Multiple speakers — diarize=true. Each speaker is analyzed separately.

diarize=true on a single-speaker file still works (one speaker detected).

How to enable

Pass diarize=true as a form field on POST /v2/models/{model_name}/analyze or POST /v2/signs/{sign_name}/analyze.

curl -X POST https://api.amplifierhealth.com/v2/models/pulse/analyze \
  -H "X-Account-ID: your-account-id" \
  -H "X-API-Key: your-api-key" \
  -F "diarize=true" \
  -F "audio=@recording.wav;type=audio/wav"
const fs = require("fs");

const form = new FormData();
form.append("diarize", "true");
form.append("audio", new Blob([fs.readFileSync("recording.wav")], { type: "audio/wav" }), "recording.wav");

const response = await fetch("https://api.amplifierhealth.com/v2/models/pulse/analyze", {
  method: "POST",
  headers: {
    "X-Account-ID": process.env.AMPLIFIER_ACCOUNT_ID,
    "X-API-Key": process.env.AMPLIFIER_API_KEY,
  },
  body: form,
});

const data = await response.json();
# Requires httpx: pip install httpx
import os
import httpx

with open("recording.wav", "rb") as f:
    audio_bytes = f.read()

response = httpx.post(
  "https://api.amplifierhealth.com/v2/models/pulse/analyze",
  headers={
      "X-Account-ID": os.environ["AMPLIFIER_ACCOUNT_ID"],
      "X-API-Key": os.environ["AMPLIFIER_API_KEY"],
  },
  files={"audio": ("recording.wav", audio_bytes, "audio/wav")},
  data={
      "diarize": "true"
  },
)

data = response.json()

Processing time

Diarization adds a speaker-separation step. Long recordings can take several minutes. Submit still returns a job immediately — Jobs, Polling, and Webhooks.

Recording environment guidelines

Environment:

  • Record in a quiet space with minimal background noise. Open offices, public spaces, and rooms with significant echo are worth avoiding.
  • Eliminate sources of intermittent noise (fans, air conditioning, notifications) where possible.

Microphone:

  • Use a close-proximity microphone. Headset microphones, lavaliers, and phone handsets held close to the mouth produce consistently better results than speakerphone or far-field microphones.
  • Keep levels clear of clipping. If the speaker’s voice is loud, lower the input gain until audio levels peak around -6 dBFS.

Speaker:

  • Capture a single speaker per recording.
  • The speaker should be the subject being assessed, not a clinician or interviewer.

Tip Before deploying in a new environment — a clinic room, a mobile app, an enterprise desktop — test recording levels with a sample recording and check audio_quality.issues in the response. Resolve any issues before going live.

Free-form speech

Most models work well with free-form conversational speech. Ask the speaker to talk naturally about any topic: how their day is going, how they have been feeling, or anything they are comfortable sharing.

Language support

Models are trained on English-language speech. Other languages are in development.

Audio outside the supported set can still return signal values with no quality warning. Confirm language support for your population before production — support@amplifierhealth.com.

Audio quality issue codes

Issue codes land in audio_quality.issues. Results may still be returned. Use the codes to decide whether to keep the result or re-record.

Code Effect on results Recommended action
poor_voice_quality Recording may be below optimal for analysis Re-record in a quieter environment with a better microphone
insufficient_speech Limited speech detected; more continuous speech may improve results Re-record with more active continuous speech; eliminate long pauses
high_background_noise Background noise may affect analysis quality Re-record in a quieter space or with a closer microphone
invalid_speaker No clear single-speaker human speech detected Verify the recording contains the intended speaker’s voice

When issues contains invalid_speaker, request a new recording before routing. Routing: The audio_quality object. Fields: Response Schema — audio_quality.

Was this page helpful?