Agent skill
audio-trimmer
Cut, trim, and edit audio segments with fade effects, speed control, concatenation, and basic audio manipulations.
Stars
163
Forks
31
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/audio-trimmer
SKILL.md
Audio Trimmer
Edit audio files with precise cutting, trimming, and effects. Extract segments, add fades, adjust speed, concatenate clips, and apply basic audio manipulations.
Quick Start
python
from scripts.audio_trimmer import AudioTrimmer
# Trim to segment
trimmer = AudioTrimmer("podcast.mp3")
trimmer.trim(start="00:05:30", end="00:10:00")
trimmer.save("segment.mp3")
# Add fades and save
trimmer = AudioTrimmer("song.mp3")
trimmer.fade_in(3000).fade_out(5000).save("song_faded.mp3")
# Concatenate multiple files
AudioTrimmer.concatenate(["intro.mp3", "main.mp3", "outro.mp3"], "full_episode.mp3")
Features
- Precise Trimming: Cut segments by timestamp or milliseconds
- Fade Effects: Fade in/out with customizable duration
- Speed Control: Speed up or slow down audio
- Concatenation: Join multiple audio files
- Basic Effects: Reverse, loop, overlay
- Silence Operations: Add silence, remove silence
- Volume Adjustment: Gain control, normalization
API Reference
Initialization
python
trimmer = AudioTrimmer("audio.mp3")
Trimming
python
# By timestamp (HH:MM:SS or MM:SS)
trimmer.trim(start="01:30", end="05:00")
# By milliseconds
trimmer.trim(start_ms=90000, end_ms=300000)
# From start to timestamp
trimmer.trim(end="02:00")
# From timestamp to end
trimmer.trim(start="10:00")
Fade Effects
python
# Fade in at start (milliseconds)
trimmer.fade_in(3000) # 3 second fade in
# Fade out at end
trimmer.fade_out(5000) # 5 second fade out
# Crossfade (for concatenation)
AudioTrimmer.concatenate_with_crossfade(files, output, crossfade_ms=2000)
Speed Control
python
# Speed up (1.5x)
trimmer.speed(1.5)
# Slow down (0.75x)
trimmer.speed(0.75)
Effects
python
# Reverse audio
trimmer.reverse()
# Loop audio N times
trimmer.loop(3)
# Overlay another audio
trimmer.overlay("background.mp3", position_ms=0, volume=-6)
Volume
python
# Adjust volume (dB)
trimmer.gain(6) # Increase by 6 dB
trimmer.gain(-3) # Decrease by 3 dB
# Normalize to target level
trimmer.normalize(-3) # Normalize to -3 dBFS
Silence Operations
python
# Add silence at start
trimmer.add_silence_start(2000) # 2 seconds
# Add silence at end
trimmer.add_silence_end(1000)
# Strip leading/trailing silence
trimmer.strip_silence(threshold=-50) # dBFS threshold
Concatenation
python
# Simple concatenation
AudioTrimmer.concatenate(
["file1.mp3", "file2.mp3", "file3.mp3"],
"output.mp3"
)
# With crossfade
AudioTrimmer.concatenate_with_crossfade(
["intro.mp3", "main.mp3", "outro.mp3"],
"output.mp3",
crossfade_ms=2000
)
Save
python
# Save to file (format from extension)
trimmer.save("output.mp3")
# Explicit format and quality
trimmer.save("output.mp3", format="mp3", bitrate=320)
CLI Usage
bash
# Trim segment
python audio_trimmer.py --input podcast.mp3 --output segment.mp3 --start 05:30 --end 10:00
# Add fades
python audio_trimmer.py --input song.mp3 --output faded.mp3 --fade-in 3000 --fade-out 5000
# Speed up
python audio_trimmer.py --input lecture.mp3 --output fast.mp3 --speed 1.5
# Concatenate files
python audio_trimmer.py --concat file1.mp3 file2.mp3 file3.mp3 --output merged.mp3
# Extract multiple segments
python audio_trimmer.py --input podcast.mp3 --segments "00:00-05:00,10:00-15:00,20:00-25:00" --output-dir ./clips/
CLI Arguments
| Argument | Description | Default |
|---|---|---|
--input |
Input audio file | Required |
--output |
Output file path | Required |
--start |
Start timestamp (HH:MM:SS or MM:SS) | - |
--end |
End timestamp | - |
--fade-in |
Fade in duration (ms) | - |
--fade-out |
Fade out duration (ms) | - |
--speed |
Speed multiplier | 1.0 |
--gain |
Volume adjustment (dB) | 0 |
--reverse |
Reverse audio | False |
--normalize |
Normalize to dBFS level | - |
--concat |
Files to concatenate | - |
--crossfade |
Crossfade duration for concat (ms) | 0 |
--segments |
Multiple segments to extract | - |
Examples
Extract Podcast Segment
python
trimmer = AudioTrimmer("episode_42.mp3")
trimmer.trim(start="15:30", end="22:45")
trimmer.fade_in(1000)
trimmer.fade_out(2000)
trimmer.save("highlight_clip.mp3")
Create Ringtone
python
trimmer = AudioTrimmer("song.mp3")
trimmer.trim(start="01:15", end="01:45") # 30-second segment
trimmer.fade_in(500)
trimmer.fade_out(1000)
trimmer.normalize(-3)
trimmer.save("ringtone.mp3", bitrate=192)
Speed Up Lecture
python
trimmer = AudioTrimmer("lecture.mp3")
trimmer.speed(1.25) # 25% faster
trimmer.normalize(-16) # Podcast-friendly level
trimmer.save("lecture_fast.mp3")
Build Episode from Segments
python
# With crossfades between segments
AudioTrimmer.concatenate_with_crossfade(
files=[
"intro_music.mp3",
"sponsor_read.mp3",
"main_content.mp3",
"outro_music.mp3"
],
output="full_episode.mp3",
crossfade_ms=1500
)
Extract Multiple Highlights
python
# Extract several segments from a long recording
trimmer = AudioTrimmer("meeting_recording.mp3")
segments = [
("00:05:00", "00:08:30", "intro"),
("00:25:00", "00:32:00", "discussion"),
("01:15:00", "01:20:00", "conclusion")
]
for start, end, name in segments:
t = AudioTrimmer("meeting_recording.mp3")
t.trim(start=start, end=end)
t.fade_in(500)
t.fade_out(500)
t.save(f"{name}.mp3")
Add Background Music
python
# Overlay quiet background music
trimmer = AudioTrimmer("podcast.mp3")
trimmer.overlay(
"ambient_music.mp3",
position_ms=0,
volume=-15, # 15 dB quieter
loop=True # Loop to fill duration
)
trimmer.save("podcast_with_music.mp3")
Time Format Reference
The trimmer accepts these timestamp formats:
| Format | Example | Meaning |
|---|---|---|
MM:SS |
05:30 |
5 minutes 30 seconds |
HH:MM:SS |
01:30:00 |
1 hour 30 minutes |
SS |
90 |
90 seconds |
SS.ms |
90.500 |
90.5 seconds |
Dependencies
pydub>=0.25.0
Note: Requires FFmpeg installed on system.
Limitations
- Speed adjustment may affect pitch (no pitch preservation)
- Very large files may consume significant memory
- Crossfade works best with similar audio levels
Didn't find tool you were looking for?