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.issuesin 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.