# Audiobook mastering checker

- Human page: https://happytails.ai/en/media-tools/audiobook-mastering-checker/
- Markdown: https://happytails.ai/en/media-tools/audiobook-mastering-checker.md
- Structured JSON: https://happytails.ai/agents/en/media-tools/audiobook-mastering-checker/index.json
- Visibility: public

## Tool capabilities

| Property | Value |
| --- | --- |
| Tool ID | `audiobook-mastering-checker` |
| Category | media-tools |
| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |
| Browser execution | Use the visible action or interactive controls. |
| Browser processing | Browser; see tool notes for network behavior. |
| HTTP API | Not callable through HTTP. |
| Browser-agent interface | run_current_tool |

### Implementation notes

Runs locally in your browser. Checks up to 8 recordings, each up to 10 minutes and 256 MiB, against the specification you enter.

### Inputs and settings

No free-text input is required. Use the file inputs and/or settings below.

Accepted browser files: `.wav,.mp3,.m4a,.aac,.flac,.ogg,.oga,.opus,.webm,audio/*`. Multiple files are supported.

Browser file-input limit: 268435456 bytes in total. HTTP limits can differ.

| Setting | Meaning | Control type | Default | Constraints |
| --- | --- | --- | --- | --- |
| `rmsMin` | Lowest RMS level (dBFS) | number | "-23" | min=-60 max=0 step=0.1 |
| `rmsMax` | Highest RMS level (dBFS) | number | "-18" | min=-60 max=0 step=0.1 |
| `peakMax` | Highest peak (dBFS or dBTP) | number | "-3" | min=-30 max=0 step=0.1 |
| `peakMode` | Peak measurement | select | "sample" | Allowed: sample, true |
| `noiseFloorMax` | Highest noise floor (dBFS) | number | "-60" | min=-120 max=-20 step=0.1 |
| `headSilenceMin` | Shortest opening silence (seconds) | number | "0.5" | min=0 max=30 step=0.01 |
| `headSilenceMax` | Longest opening silence (seconds) | number | "1" | min=0 max=30 step=0.01 |
| `tailSilenceMin` | Shortest closing silence (seconds) | number | "1" | min=0 max=30 step=0.01 |
| `tailSilenceMax` | Longest closing silence (seconds) | number | "5" | min=0 max=30 step=0.01 |
| `silenceThreshold` | Silence threshold (dBFS) | number | "-60" | min=-90 max=-30 step=1 |
| `sampleRate` | Required sample rate (Hz) | select | "44100" | Allowed: 44100, 48000, 22050, 96000, any |
| `channels` | Required channels | select | "any" | Allowed: any, mono, stereo |

### Browser-agent workflow

1. Open the human page in a browser that supports WebMCP.
2. Discover the interface exposed by that page; use its actual schema.
3. Select files on the page first when the tool requires files.
4. Call `run_current_tool` with valid input and settings.
5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.

Calls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.

### Planning specification

Up to 8 files at once, each up to 256 MiB, 10 minutes, 8 channels and 60 million samples, with at most 512 MiB and 120 million samples in total. Each file needs at least 500 milliseconds of audio. RMS limits from -60 to 0 dBFS, peak limit from -30 to 0, noise floor limit from -120 to -20 dBFS, silence limits from 0 to 30 seconds and a silence threshold from -90 to -30 dBFS. WAV is read directly with every channel and sample intact. MP3, M4A, AAC, FLAC, OGG, Opus and WebM are decoded by your browser and resampled to 48 kHz first, so decoding support depends on the browser. Files are decoded and measured on your device and are never uploaded. Downloads: JSON report per file and a CSV of every check with measured value, unit, limits and result.

This describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.

### Complete machine-readable capability record

```json
{
  "id": "audiobook-mastering-checker",
  "category": "media-tools",
  "built": true,
  "requirements": "Up to 8 files at once, each up to 256 MiB, 10 minutes, 8 channels and 60 million samples, with at most 512 MiB and 120 million samples in total. Each file needs at least 500 milliseconds of audio. RMS limits from -60 to 0 dBFS, peak limit from -30 to 0, noise floor limit from -120 to -20 dBFS, silence limits from 0 to 30 seconds and a silence threshold from -90 to -30 dBFS. WAV is read directly with every channel and sample intact. MP3, M4A, AAC, FLAC, OGG, Opus and WebM are decoded by your browser and resampled to 48 kHz first, so decoding support depends on the browser. Files are decoded and measured on your device and are never uploaded. Downloads: JSON report per file and a CSV of every check with measured value, unit, limits and result.",
  "implementation": {
    "fields": [
      {
        "key": "rmsMin",
        "label": "Lowest RMS level (dBFS)",
        "value": "-23",
        "type": "number",
        "min": -60,
        "max": 0,
        "step": 0.1
      },
      {
        "key": "rmsMax",
        "label": "Highest RMS level (dBFS)",
        "value": "-18",
        "type": "number",
        "min": -60,
        "max": 0,
        "step": 0.1
      },
      {
        "key": "peakMax",
        "label": "Highest peak (dBFS or dBTP)",
        "value": "-3",
        "type": "number",
        "min": -30,
        "max": 0,
        "step": 0.1
      },
      {
        "key": "peakMode",
        "label": "Peak measurement",
        "value": "sample",
        "type": "select",
        "values": [
          "sample",
          "true"
        ],
        "labels": {
          "sample": "Sample peak",
          "true": "True peak"
        }
      },
      {
        "key": "noiseFloorMax",
        "label": "Highest noise floor (dBFS)",
        "value": "-60",
        "type": "number",
        "min": -120,
        "max": -20,
        "step": 0.1
      },
      {
        "key": "headSilenceMin",
        "label": "Shortest opening silence (seconds)",
        "value": "0.5",
        "type": "number",
        "min": 0,
        "max": 30,
        "step": 0.01
      },
      {
        "key": "headSilenceMax",
        "label": "Longest opening silence (seconds)",
        "value": "1",
        "type": "number",
        "min": 0,
        "max": 30,
        "step": 0.01
      },
      {
        "key": "tailSilenceMin",
        "label": "Shortest closing silence (seconds)",
        "value": "1",
        "type": "number",
        "min": 0,
        "max": 30,
        "step": 0.01
      },
      {
        "key": "tailSilenceMax",
        "label": "Longest closing silence (seconds)",
        "value": "5",
        "type": "number",
        "min": 0,
        "max": 30,
        "step": 0.01
      },
      {
        "key": "silenceThreshold",
        "label": "Silence threshold (dBFS)",
        "value": "-60",
        "type": "number",
        "min": -90,
        "max": -30,
        "step": 1
      },
      {
        "key": "sampleRate",
        "label": "Required sample rate (Hz)",
        "value": "44100",
        "type": "select",
        "values": [
          "44100",
          "48000",
          "22050",
          "96000",
          "any"
        ]
      },
      {
        "key": "channels",
        "label": "Required channels",
        "value": "any",
        "type": "select",
        "values": [
          "any",
          "mono",
          "stereo"
        ]
      }
    ],
    "registrationFamily": "audio-pcm-measurement",
    "presentation": "metrics",
    "files": true,
    "input": false,
    "accept": ".wav,.mp3,.m4a,.aac,.flac,.ogg,.oga,.opus,.webm,audio/*",
    "maxFileBytes": 268435456,
    "inputErrorCode": "AUDIO_PCM_MEASUREMENT_TOO_LONG",
    "multiple": true,
    "note": "Runs locally in your browser. Checks up to 8 recordings, each up to 10 minutes and 256 MiB, against the specification you enter.",
    "experience": {
      "automatic": false,
      "single": false,
      "inputMaxLength": 1000000,
      "inputMode": "text",
      "label": "Audio files",
      "placeholder": "Choose up to 8 WAV, MP3, M4A, FLAC or OGG chapter files",
      "help": "Enter your specification in the settings below. Up to 1,000,000 characters. Review the settings before running.",
      "action": null
    },
    "mode": "explicit",
    "interactive": false
  },
  "execution": "Browser interface",
  "api": null,
  "browser_agent": {
    "supported": true,
    "name": "run_current_tool",
    "discovery": "WebMCP on the human page in a supporting browser",
    "verification": "See audit/API-AUDIT.md; availability is not verification"
  }
}
```

## Page guide

Check audiobook chapters against the delivery specification you enter, with RMS level, peak, noise floor, opening and closing silence, sample rate and channels for every file.

### How to use Audiobook mastering checker

1. Choose up to 8 chapter files from your device.
2. Enter the limits from your publisher or retailer specification.
3. Run the check and read which files and measurements pass or fail.
4. Download the JSON report and the CSV with one row per file and check.

How can we improve this tool?

Report a problem or share an idea.

Please leave out private information. Your message and the tool name go to our team via PostHog.

## Useful next steps

- [Remove silence](https://happytails.ai/en/media-tools/remove-silence/) ([Markdown](https://happytails.ai/en/media-tools/remove-silence.md))

- [Remove background noise](https://happytails.ai/en/media-tools/remove-background-noise/) ([Markdown](https://happytails.ai/en/media-tools/remove-background-noise.md))

- [Increase audio volume](https://happytails.ai/en/media-tools/increase-audio-volume/) ([Markdown](https://happytails.ai/en/media-tools/increase-audio-volume.md))

## What each check measures

RMS is the average level of all samples in all channels. Sample peak is the largest sample; true peak uses 4 times oversampling below 96 kHz as in ITU-R BS.1770-4. The noise floor is the quietest 500 millisecond window, read every 100 milliseconds, as an estimate of room tone. Opening and closing silence are measured in 10 millisecond windows against your silence threshold. The report also lists integrated loudness in LUFS for reference.

### Your specification

No retailer preset is built in, because delivery rules change. The defaults are only a starting point: copy each limit from the current specification you were given. Each minimum must not exceed its maximum, and the lowest RMS must be below the highest.

### Limits of the check

The tool measures levels and timing only. It does not listen for edits, clicks, breaths, mouth noise or reading errors, and digital silence measures as -200 dBFS. A file the browser decoded and resampled to 48 kHz reports 48,000 Hz, so check sample rate on WAV files.
