One endpoint. Full audit. Know exactly which files to keep.

Upload your audio files and choose exactly which checks to run - comparison, quality, pace - all in one API call.

The workflow

From upload to report in minutes

1

Upload your audio files

Drag and drop files into the dashboard or send them directly via the REST API using multipart upload. Supports MP3, WAV, OGG, FLAC, M4A, AAC, and more.

2

Choose your checks

Pick which checks to run - voice comparison, audio quality, speaking speed, script accuracy - or run all four. At least one must be enabled.

3

Get your report

You get a per-file breakdown showing scores, flagged issues, and which files need regenerating. Every response includes a link to your full report.

4

Regenerate only the bad ones

Take the list of flagged files and re-run them through your TTS pipeline. The rest of your batch is good to go - no wasted regeneration, no missed anomalies.

Quick start

One API call to analyze your batch

# Audit tracks - specify each check as true/false via query params
curl -X POST "https://api.ttsaudit.com/audit?comparison=true&quality=true&pace=false&scriptAccuracy=false" \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "files=@track1.mp3" \
  -F "files=@track2.mp3" \
  -F "files=@track3.mp3" \
  -F "accuracy=standard" \
  -F "deviationThreshold=0.15"

# Check balance
curl -s https://api.ttsaudit.com/balance \
  -H "X-API-Key: YOUR_API_KEY"

Sample response

Every API response includes a direct link to view the full report in your dashboard

Sample Response
{
  "score": 87.2,
  "summary": "2 of 4 checks passed. 1 file flagged for regeneration.",
  "fileCount": 3,
  "tracksToRegenerate": [
    { "file": "track-047.mp3", "reasons": [{ "check": "comparison", "message": "deviation 35.00%", "deviation": 0.35 }] }
  ],
  "checks": {
    "comparison": {
      "score": 82.7,
      "summary": "1 of 3 files flagged - 82% average similarity.",
      "similarityMatrix": [[1.0, 0.94, 0.61], [0.94, 1.0, 0.63], [0.61, 0.63, 1.0]],
      "tracks": [
        { "file": "track-001.mp3", "similarity": 0.94, "deviation": -0.02, "flagged": false },
        { "file": "track-002.mp3", "similarity": 0.93, "deviation": -0.03, "flagged": false },
        { "file": "track-047.mp3", "similarity": 0.61, "deviation": 0.35, "flagged": true }
      ]
    },
    "quality": {
      "score": 92.1,
      "summary": "Good audio quality - average score 92.1 across 3 files.",
      "tracks": [{ "score": 95.2, "flagged": false, "snrDb": 45.2, "issueCount": 1, ... }]
    },
    "pace": {
      "score": 87.5,
      "summary": "Consistent speaking speed - median 142.3 WPM, no outliers.",
      "unit": "wordsPerMinute",
      "tracks": [{ "wpm": 142.3, "wordCount": 284, "deviation": 0.02, "flagged": false }, ...],
      "median": 142.3
    },
    "scriptAccuracy": {
      "score": 94.2,
      "summary": "No tags spoken aloud. Average accuracy 94.2% across 3 files.",
      "spokenTagCount": 0,
      "repetitionCount": 0,
      "tracks": [
        { "accuracy": 96.0, "flagged": false, "tags": { "found": 2, "spoken": [] }, "repetitions": [] },
        { "accuracy": 92.0, "flagged": false, "tags": { "found": 0, "spoken": [] }, "repetitions": [] },
        ...
      ]
    }
  },
  "creditsUsed": 12,
  "timing": { "decode": 7.7, "checks": 5.1, "total": 13.2 }
}

Ready to find the bad files?

100 free credits on signup. No credit card required.