脚本如何批量调整音频采样率

wen 实用脚本 2

本文目录导读:

脚本如何批量调整音频采样率

  1. 方法一:使用 FFmpeg(推荐)
  2. 方法二:使用 Python + pydub
  3. 方法三:使用 SoX
  4. 方法四:使用 librosa (Python)
  5. 常见采样率参考
  6. 安装依赖

使用 FFmpeg(推荐)

基本命令

# 批量转换当前目录下所有wav文件
for i in *.wav; do
    ffmpeg -i "$i" -ar 44100 "converted_${i}"
done

更完整的脚本

#!/bin/bash
# batch_resample.sh
# 设置参数
INPUT_DIR="./input"
OUTPUT_DIR="./output"
SAMPLE_RATE=44100  # 目标采样率
FORMAT="wav"       # 输出格式
# 创建输出目录
mkdir -p "$OUTPUT_DIR"
# 批量处理
for file in "$INPUT_DIR"/*.$FORMAT; do
    filename=$(basename "$file")
    ffmpeg -i "$file" -ar $SAMPLE_RATE "$OUTPUT_DIR/$filename"
done
echo "转换完成!"

使用 Python + pydub

import os
from pydub import AudioSegment
def batch_resample(input_dir, output_dir, target_sample_rate=44100):
    """
    批量调整音频采样率
    """
    os.makedirs(output_dir, exist_ok=True)
    for filename in os.listdir(input_dir):
        if filename.endswith(('.wav', '.mp3', '.flac')):
            input_path = os.path.join(input_dir, filename)
            # 读取音频文件
            audio = AudioSegment.from_file(input_path)
            # 调整采样率
            resampled = audio.set_frame_rate(target_sample_rate)
            # 输出文件
            output_path = os.path.join(output_dir, filename)
            resampled.export(output_path, format=os.path.splitext(filename)[1][1:])
            print(f"已处理: {filename}")
# 使用示例
batch_resample("./input", "./output", 44100)

使用 SoX

#!/bin/bash
# batch_sox.sh
INPUT_DIR="input"
OUTPUT_DIR="output"
SAMPLE_RATE=44100
mkdir -p "$OUTPUT_DIR"
for file in "$INPUT_DIR"/*.wav; do
    filename=$(basename "$file")
    sox "$file" -r $SAMPLE_RATE "$OUTPUT_DIR/$filename"
done

使用 librosa (Python)

import librosa
import soundfile as sf
import os
def batch_resample_librosa(input_dir, output_dir, target_sr=44100):
    """使用librosa批量重采样"""
    os.makedirs(output_dir, exist_ok=True)
    for filename in os.listdir(input_dir):
        if filename.endswith('.wav'):
            filepath = os.path.join(input_dir, filename)
            # 加载音频并重采样
            y, sr = librosa.load(filepath, sr=target_sr)
            # 保存文件
            output_path = os.path.join(output_dir, filename)
            sf.write(output_path, y, target_sr)
            print(f"已处理: {filename} (采样率: {target_sr}Hz)")
# 使用示例
batch_resample_librosa("./input", "./output", 44100)

常见采样率参考

  • 44100 Hz:CD音质标准
  • 48000 Hz:DVD/专业音频标准
  • 22050 Hz:语音识别常用
  • 16000 Hz:电话语音标准

安装依赖

FFmpeg

# Ubuntu/Debian
sudo apt install ffmpeg
# macOS
brew install ffmpeg
# Windows
# 下载FFmpeg并添加到环境变量

Python库

pip install pydub
pip install librosa soundfile

SoX

# Ubuntu/Debian
sudo apt install sox
# macOS
brew install sox

选择哪种方法取决于你的需求:

  • FFmpeg:功能强大,支持各种格式
  • Python:适合集成到自动化工作流
  • SoX:简单快速,适合简单转换

抱歉,评论功能暂时关闭!