Skip to content

Custom tones

A custom tone is a sound of up to 30 seconds stored on the device. Once uploaded, it shows up in every sound picker: the device chime, message chimes, timer sound, alarms, intercom rings, the wake word tone and the mute sounds.

The EchoLocal integration’s Tones tab is the easy way.

  1. Open the EchoLocal dashboard and the Tones tab.

  2. Upload a sound file. Trim silence and Even out loudness tidy it up first.

  3. Pick the devices to send it to. It’s converted and uploaded to each.

  4. Choose it in any sound picker, on the device or in Home Assistant.

The tab also renames, replaces and deletes tones, and shows which devices have each one. The actions echolocal.assign_tone and echolocal.unassign_tone do the same from automations.

The device has three actions:

Action Fields
tone_write key, name, page, pages, data
tone_rename key, name
tone_remove key
  • key: lowercase letters, digits, - and _, up to 64 characters, starting with a letter or digit. Writing an existing key replaces that tone.
  • name: what the pickers show.
  • data: the sound as raw 16-bit little-endian mono PCM at 48 kHz, base64 encoded, sent in pages of 32 KB (before encoding). page counts from 0; pages is the total.

To make the raw sound from any file:

Terminal window
ffmpeg -i doorbell.mp3 -ac 1 -ar 48000 -f s16le doorbell.raw

Then split it into 32 KB pieces and call tone_write once per piece, with the same key, name and pages, or let the integration do it.