| name | audio-handler |
| description | Read, analyze, convert, and process audio files (MP3, WAV, FLAC, AAC, M4A, OGG, OPUS, WMA). Use when working with audio: extracting metadata, converting formats, trimming, merging, adjusting volume, or transcribing. Triggers on mentions of audio files, file paths with audio extensions, or requests to process/convert audio. |
Audio Handler
Analyze, convert, and process audio files.
Supported Formats
| Format | Extensions | Read | Convert | Metadata |
|---|
| MP3 | .mp3 | ✅ | ✅ | ✅ |
| WAV | .wav | ✅ | ✅ | ✅ |
| FLAC | .flac | ✅ | ✅ | ✅ |
| AAC/M4A | .m4a, .aac | ✅ | ✅ | ✅ |
| OGG | .ogg | ✅ | ✅ | ✅ |
| Opus | .opus | ✅ | ✅ | ✅ |
| WMA | .wma | ✅ | ✅ | ✅ |
| AIFF | .aiff, .aif | ✅ | ✅ | ✅ |
Quick Commands
Metadata (ffprobe)
ffprobe -v quiet -print_format json -show_format -show_streams audio.mp3
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 audio.mp3
ffprobe -v error -show_entries format=bit_rate -of default=noprint_wrappers=1:nokey=1 audio.mp3
ffprobe -v error -select_streams a:0 -show_entries stream=sample_rate,channels -of default=noprint_wrappers=1 audio.mp3
ffprobe -hide_banner audio.mp3
Convert Formats (ffmpeg)
ffmpeg -i input.wav -codec:a libmp3lame -qscale:a 2 output.mp3
ffmpeg -i input.wav -codec:a libmp3lame -b:a 192k output.mp3
ffmpeg -i input.mp3 output.wav
ffmpeg -i input.wav output.flac
ffmpeg -i input.wav -codec:a aac -b:a 256k output.m4a
ffmpeg -i input.wav -codec:a libvorbis -qscale:a 5 output.ogg
ffmpeg -i input.wav -codec:a libopus -b:a 64k output.opus
Trim & Clip
ffmpeg -i input.mp3 -ss 30 -to 90 -c copy output.mp3
ffmpeg -i input.mp3 -t 60 -c copy output.mp3
ffmpeg -i input.mp3 -ss 30 -to 90 output.mp3
Volume & Speed
ffmpeg -i input.mp3 -af "volume=2" output.mp3
ffmpeg -i input.mp3 -af "volume=0.5" output.mp3
ffmpeg -i input.mp3 -af "loudnorm" output.mp3
ffmpeg -i input.mp3 -af "atempo=1.5" output.mp3
ffmpeg -i input.mp3 -af "atempo=0.75" output.mp3
Merge & Concatenate
ffmpeg -i "concat:part1.mp3|part2.mp3|part3.mp3" -acodec copy output.mp3
echo "file 'part1.mp3'" > list.txt
echo "file 'part2.mp3'" >> list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp3
ffmpeg -i voice.mp3 -i music.mp3 -filter_complex amix=inputs=2:duration=longest output.mp3
Extract Audio from Video
ffmpeg -i video.mp4 -vn -acodec copy audio.aac
ffmpeg -i video.mp4 -vn -acodec libmp3lame -b:a 192k audio.mp3
Playback (macOS)
afplay audio.mp3
afplay -v 0.5 audio.mp3
afplay audio.mp3 &
killall afplay
Text-to-Speech (macOS)
say "Hello, this is a test"
say -o output.aiff "This will be saved as audio"
say -v ?
say -v "Samantha" "Hello, I am Samantha"
say -o temp.aiff "Text to convert" && ffmpeg -i temp.aiff output.mp3 && rm temp.aiff
Scripts
audio_info.sh
Get comprehensive audio metadata.
~/Dropbox/jarvis/skills/audio-handler/scripts/audio_info.sh <audio_file>
convert_audio.sh
Convert between formats with quality options.
~/Dropbox/jarvis/skills/audio-handler/scripts/convert_audio.sh <input> <output> [quality]
trim_audio.sh
Trim audio with start/end times.
~/Dropbox/jarvis/skills/audio-handler/scripts/trim_audio.sh <input> <output> <start> <end>
normalize_audio.sh
Normalize volume level.
~/Dropbox/jarvis/skills/audio-handler/scripts/normalize_audio.sh <input> <output>
Quality Guide
| Use Case | Format | Settings |
|---|
| Music archive | FLAC | -codec:a flac |
| Music portable | MP3 | -codec:a libmp3lame -qscale:a 2 |
| Podcast/speech | Opus | -codec:a libopus -b:a 64k |
| Voice memo | M4A | -codec:a aac -b:a 128k |
| Uncompressed | WAV | -codec:a pcm_s16le |
Notes
ffmpeg handles almost all audio formats
-c copy is fast but may be inaccurate for trimming
- Re-encode (
-af) for precise cuts but takes longer
- Opus is best for speech at low bitrates
- Use
loudnorm filter for consistent volume across files