Skip to content
AI & Agents
Skill

/adobe-cleanup-audio

Removes background noise and echo from speech in a video or audio file with Adobe Enhance Speech and returns the cleaned file — for videos, the cleaned speech is put back onto the original picture. Use for requests like "clean up the audio", "remove background noise", "remove

From plugin
skills
322176 skills5 MCP

Claude Code

$ npx -y skills add adobe/skills --skill adobe-cleanup-audio --agent claude-code

SKILL.md

adobe-cleanup-audio.SKILL.md
name: adobe-cleanup-audio
description: >
  Removes background noise and echo from speech in a video or audio file with Adobe Enhance Speech
  and returns the cleaned file — for videos, the cleaned speech is put back onto the original
  picture. Use for requests like "clean up the audio", "remove background noise", "remove echo",
  "enhance speech", "fix the audio in this video", or "make my podcast sound clearer". Do NOT use
  for music mixing, adding music or sound effects, or transcription.
license: Apache-2.0
compatibility: "Runs on widget-capable surfaces (Claude, which supports the asset_add_file picker) and on surfaces without widgets (Codex), which use the asset_initialize_file_upload → PUT → asset_finalize_file_upload staging path. Raw local paths are never passed to Adobe tools."
allowed-tools: adobe_mandatory_init asset_add_file asset_openai_file_upload asset_initialize_file_upload asset_finalize_file_upload media_enhance_speech video_metadata video_render video_export
metadata:
  version: 1.0.0
  visibility: public
  surface: [claude, codex]

Adobe Clean Up Audio

Cleans up speech in a video or audio file — removes background noise and echo — and returns the cleaned file:

  • **Audio file** → the cleaned speech track.
  • **Video file** → the original video with its audio replaced by the cleaned speech track.

The output contains **speech only**: the background (music/ambient) and reverb tracks that `media_enhance_speech` separates out are not included.

> **Async handling (`media_enhance_speech`, `video_render`, `video_export`):** a `status: "working"` result is **pending — not a failure and > not missing output**. The finished result is delivered automatically when the job completes; do > not call any poll tool yourself. Submit each job **once** — never resubmit while one is pending. > If the result doesn't arrive, tell the user the job was submitted and is still processing, and > don't offer workarounds.

---

Tool Reference

| Step | Tool | Notes | |------|------|-------| | Initialize | `adobe_mandatory_init` | Returns file-handling rules and tool routing | | Select source file | `asset_add_file` | File picker widget; injects the asset ID on confirmation | | Upload file attached in ChatGPT | `asset_openai_file_upload` | ChatGPT only; returns a URL for the Adobe tools | | Upload attached/local file | `asset_initialize_file_upload` | Starts the upload; returns a PUT URL | | Finish upload | `asset_finalize_file_upload` | Completes the upload; returns the asset ID | | Clean up speech | `media_enhance_speech` | Returns speech, background, and reverb tracks | | Read video properties (video only) | `video_metadata` | Width, height, fps, duration | | Recombine picture + cleaned speech (video only) | `video_render` | Max 10 minutes | | Export final video (video only) | `video_export` | `mp4` or `mov` |

---

Workflow

Step 0 — Initialize Adobe Tools

Call `adobe_mandatory_init` first. This returns file handling rules and tool routing guidance required for the rest of the workflow.

{ "skill_name": "adobe-cleanup-audio", "skill_version": "1.0.0" }

---

Step 1 — Get the Source File

All tools here accept a Creative Cloud asset ID (e.g. `urn:aaid:sc:...`) or a presigned HTTPS URL from an approved storage host. Never pass a raw local path.

| Source | Action | |---|---| | File attached in ChatGPT and `asset_openai_file_upload` is available | Call `asset_openai_file_upload` with the attached file and use the URL it returns. Don't pass the attached file's local path to `asset_upload_file_from_url` — it only accepts https URLs. | | File attached in chat (e.g. `/mnt/user-data/uploads/…`) | Check egress status from `adobe_mandatory_init` (Step 0). If egress is enabled, upload it directly: get its size and MIME type, call `asset_initialize_file_upload({ path, media_type })`, PUT the bytes to the returned URL, then call `asset_finalize_file_upload({ filename, transfer_document })` and use the returned asset ID. If egress is disabled, open the picker (`asset_add_file()`) instead. | | Creative Cloud asset ID or presigned URL in the message | Use it directly. | | No file provided yet | Open the picker — no need to ask first. |

Opening the picker:

> *"Let's clean up your audio. Start by selecting your file:"*

asset_add_file()

Wait for the widget to inject the asset ID on confirmation — do not poll.

> **No-widget fallback** *(only if `asset_add_file` is unavailable on this surface, e.g. Codex)* — > stage any local file with the same `asset_initialize_file_upload` → PUT → > `asset_finalize_file_upload` sequence. If egress is disabled, tell the user the file can't be > staged on this surface. If no file was provided, ask the user to attach their video or audio file.

Note whether the source is **video** (`video/*`) or **audio** (`audio/*`). If it is neither, say so and ask for a video or audio file.

---

Step 2 — Enhance the Speech

media_enhance_speech({
  assetId: "<source asset ID or presigned URL>",
  filename: "<source-name>-clean-speech"
})

Acknowledge briefly: *"Cleaning up the speech — this can take a moment."* If the result reports a pending/working status, wait for the completed result; never act on a pending status.

From the completed result, keep the **speech track** URL. Ignore the background and reverb tracks.

  • **Audio source** → go to Step 4 and deliver the speech track.
  • **Video source** → continue to Step 3 right away, in the same reply — the job isn't done until

the cleaned speech is back on the video. Don't stop and deliver only the speech track.

---

Step 3 — Put the Cleaned Speech Back on the Video (video only)

**3a. Read the source video's properties.**

video_metadata({ assetId: "<source asset ID>" }) // → width, height, fps, duration (seconds)

If `duration` is over 600 seconds, `video_render` can't render it (10-minute limit): deliver the speech track as in Step 4 a

Read more
@adobe
Ships withskills

Repository of Adobe skills for AI coding agents.

322176 skills5 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
322
Star history of adobe/skills on GitHub, a chart by star-history.com

Other skills on skills.

aa-conversion-funnel-analysis

aa-conversion-funnel-a…

Analyzes a multi-step conversion funnel to find where visitors drop off and which steps have the worst leakage. Use this skill…

@adobe@adobeInstall Skill
aa-executive-briefing

aa-executive-briefing

Generates a concise, executive-ready performance summary covering key metrics, trends, and what's driving movement. Use this…

@adobe@adobeInstall Skill
aa-kpi-pulse

aa-kpi-pulse

Produces a compact KPI digest showing how key metrics changed over a period and what's driving the movement. Use this skill when…

@adobe@adobeInstall Skill
aa-top-movers-watchlist

aa-top-movers-watchlis…

Identifies which items (pages, campaigns, products, channels, regions) had the biggest increases or decreases for a key metric…

@adobe@adobeInstall Skill
cja-dimension-analysis

cja-dimension-analysis

Comprehensive dimension analysis and reporting for CJA. Use this skill whenever the user wants to analyze one or more dimensions…

@adobe@adobeInstall Skill

More skills from other plugins.

1password

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

openclaw11d393k
@openclaw@openclawInstall Skill

Questions about adobe-cleanup-audio.

Which coding agents can use adobe-cleanup-audio?
adobe-cleanup-audio installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.