Nodes/MKRShift_Nodes/Audio Watermark
ComfyUI Node

Audio Watermark

Stamp your name into the audio itself — audibly, not invisibly

By criskb·Created 7 months ago·Updated 5 months ago· 0
Audio Watermark
  • audio
  • audio
  • output_path
  • duration_sec
  • summary
modetone_pulse
frequency_hz1800
level_db-28.0
interval_sec4.00
pulse_duration_ms120
start_offset_sec0.00
signature_textMKRSHIFT
pattern_unit_ms80
output_formatauto
filename_prefixMKR_audio_watermark
subfolder
overwritefalse
filename_label

Watermarking a video is easy - text on a corner. Watermarking audio is harder, and there are two entirely different jobs hiding in the word. One is the invisible, forensic kind that survives re-encoding and identifies a leak. The other is the audible kind: an obvious repeating tone or chirp that makes a preview unstealable, the way a radio station sweeps a tone through an unreleased track. MKRAudioWatermark is the second kind - it's a preview-protection and branding tool, not a hidden tracker. Don't come here expecting imperceptible steganography.

It sits in the MKRShift_Nodes Watermark branch (the same family that includes the video and image watermark nodes), and its natural use is in a demo/review pipeline: watermark the pre-master audio before you send it to a client, then swap in the clean version for delivery.

How it works

The node synthesizes a short watermark sound and mixes it into your audio on a repeating schedule. Three modes:

  • tone_pulse (default) - a steady sine at frequency_hz (default 1800 Hz), pulsed at interval_sec intervals for pulse_duration_ms each. The classic "this is a preview" beep.
  • chirp_pulse - the same, but the tone sweeps upward by 35% across each pulse, so it's harder to notch out with a narrow EQ.
  • text_pattern - encodes your signature_text as an on/off pattern at pattern_unit_ms per bit, rendered as tone bursts. It's Morse-like: someone who knows the convention can read the text back off a spectrogram.

level_db (default −28 dB) sets how loud the watermark sits under the audio - quiet enough not to ruin listening, loud enough that EQing it out would hurt the music. Each pulse gets a tiny fade-in/out to avoid clicks, and start_offset_sec delays the first pulse so the intro isn't instantly sullied.

Inputs that matter

  • audio - MKR_AUDIO payload, waveform tensor, or file path.
  • mode - the three above.
  • frequency_hz, level_db, interval_sec, pulse_duration_ms - the tone's character and schedule.
  • signature_text - default MKRSHIFT; used by text_pattern.
  • pattern_unit_ms - timing unit for text_pattern.
  • start_offset_sec - delay before the first pulse.
  • Standard save block: output_format, filename_prefix, subfolder, overwrite, optional filename_label.

Outputs: audio (MKR_AUDIO), output_path, duration_sec, summary.

Install

ComfyUI Manager (search "MKRShift Nodes"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes

Restart. Pure numpy synthesis - no ffmpeg needed for the watermark itself, only for compressed output. No models.

Common issues

Set expectations up front: this is an audible watermark. If your file gets re-encoded, compressed, or clipped, the tone will degrade - it's protection by annoyance, not by cryptography, and there's a separate MKRInvisibleAudioWatermark in this pack if you want the forensic version. Second, watch the low end: at 40 Hz a watermark is basically sub-bass thump nobody perceives as a "tone," so keep frequency_hz in the mid band (1–3 kHz) where it reads as intentional. And if your clip is short relative to interval_sec - say a 2-second clip at a 4-second interval - you may get zero pulses; the summary warns you, and you should lower the interval.

CategoryMKRShift Nodes/Media/Watermark

Inputs (14)

NameTypeDefaultDescription
audio*
modeCOMBOtone_pulse3 options: tone_pulse, chirp_pulse, text_pattern
frequency_hzFLOAT180040–20000
level_dbFLOAT-28.0-60–-3
interval_secFLOAT4.000.05–120
pulse_duration_msINT12010–5000
start_offset_secFLOAT0.000–120
signature_textSTRINGMKRSHIFT
pattern_unit_msINT8010–2000
output_formatCOMBOauto5 options: auto, wav, mp3, flac, ogg
filename_prefixSTRINGMKR_audio_watermark
subfolderSTRING
overwriteBOOLEANfalse
filename_labeloptSTRING

Outputs (4)

NameTypeDescription
audioMKR_AUDIO
output_pathSTRING
duration_secFLOAT
summarySTRING