本文目录导读:

- 批量格式转换(使用 FFmpeg)
- 静音检测与剪切(使用 SoX)
- 音频降噪(使用 noise-repellent)
- 批量调整音量增益(使用 FFmpeg)
- 音频拼接(使用 FFmpeg)
- 从视频中提取音频(使用 FFmpeg)
- 实时录音与语音识别(使用 Python)
- 音频指纹识别(用于自动化标签管理)
- 注意事项
批量格式转换(使用 FFmpeg)
场景:将大量音频从一种格式转换为另一种(如 WAV 转 MP3、FLAC 转 AAC)。
Bash 脚本(Linux/macOS):
#!/bin/bash
for file in *.wav; do
ffmpeg -i "$file" -codec:a libmp3lame -qscale:a 2 "${file%.wav}.mp3"
done
PowerShell(Windows):
Get-ChildItem *.wav | ForEach-Object {
ffmpeg -i $_.Name -codec:a libmp3lame -qscale:a 2 ($_.BaseName + ".mp3")
}
说明:-qscale:a 控制 MP3 质量(0-9,0 最高)。
静音检测与剪切(使用 SoX)
场景:自动检测并移除音频文件中的静音段落。
Bash 脚本:
#!/bin/bash
for file in *.mp3; do
sox "$file" "trimmed_$file" silence -l 1 0.1 1% -1 2.0 1%
done
参数说明:
-l 1 0.1 1%:删除开头持续 0.1 秒且音量低于 1% 的静音。-1 2.0 1%:删除结尾持续 2 秒且音量低于 1% 的静音。
音频降噪(使用 noise-repellent)
场景:去除背景噪音(如风扇声、环境音)。
Python 脚本(需安装 noisereduce 和 librosa):
import noisereduce as nr
import soundfile as sf
import librosa
# 加载音频
audio, sr = librosa.load("noisy.wav", sr=None)
# 假设前 1 秒为纯噪音样本
noise_part = audio[:int(sr * 1)]
# 降噪
reduced_noise = nr.reduce_noise(y=audio, sr=sr, y_noise=noise_part)
# 保存
sf.write("clean.wav", reduced_noise, sr)
批量调整音量增益(使用 FFmpeg)
场景:统一多个音频文件的音量(归一化到 -14 LUFS)。
Bash 脚本:
#!/bin/bash
for file in *.wav; do
ffmpeg -i "$file" -filter:a loudnorm "normalized_$file"
done
说明:loudnorm 滤波器会根据 EBU R128 标准归一化响度。
音频拼接(使用 FFmpeg)
场景:将多个音频文件按顺序合并为一个。
Bash 脚本:
#!/bin/bash # 创建文件列表 for f in *.wav; do echo "file '$f'" >> filelist.txt; done # 拼接 ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.wav rm filelist.txt
从视频中提取音频(使用 FFmpeg)
场景:批量从视频文件提取音频。
Bash 脚本:
#!/bin/bash
for file in *.mp4; do
ffmpeg -i "$file" -vn -acodec mp3 "${file%.mp4}.mp3"
done
实时录音与语音识别(使用 Python)
场景:录制麦克风输入并转换为文本。
Python 脚本(需安装 speech_recognition 和 pyaudio):
import speech_recognition as sr
r = sr.Recognizer()
with sr.Microphone() as source:
print("请说话...")
audio = r.listen(source)
# 使用 Google 语音识别
try:
text = r.recognize_google(audio, language='zh-CN')
print("识别结果:", text)
except sr.UnknownValueError:
print("无法识别")
音频指纹识别(用于自动化标签管理)
场景:识别未知音乐文件并添加元数据。
Python 脚本(使用 pyacoustid):
import acoustid
import mutagen
# 获取音频指纹
duration, fingerprint = acoustid.fingerprint_file("unknown.mp3")
# 查询 AcoustID 数据库
results = acoustid.lookup(fingerprint)
# 假设第一个结果包含元数据
artist = results['results'][0]['recordings'][0]['artists'][0]['name']= results['results'][0]['recordings'][0]['title']
# 使用 mutagen 写入标签
audio = mutagen.File("unknown.mp3")
audio['TPE1'] = mutagen.id3.TPE1(encoding=3, text=artist)
audio.save()
注意事项
- 安装依赖:大部分脚本需要安装 FFmpeg、SoX、Python 库等。
- 错误处理:生产环境中建议加入异常捕获和日志。
- 性能:处理大量文件时用
multiprocessing或subprocess并行化。
这些脚本可以直接复用或根据具体需求调整参数,如果需要处理特定任务(如立体声转单声道、变速不变调),可以进一步细化。