064. 编写一个函数,实现简单的音频处理功能,音量调整、格式转换

在 Python 中,可以使用 pydub 库来实现简单的音频处理功能,包括音量调整和格式转换。pydub 是一个简单易用的音频处理库,支持多种音频格式,并且可以轻松地调整音量和转换格式。

安装依赖库

在开始之前,请确保你已经安装了 pydubffmpegffmpeg 是一个强大的多媒体处理工具,pydub 依赖它来处理音频文件。

安装 pydub

pip install pydub

安装 ffmpeg

  • 在 Linux 上:
sudo apt-get install ffmpeg
  • 在 macOS 上:
brew install ffmpeg
  • 在 Windows 上:

  • 下载 ffmpeg 的预编译版本:FFmpeg Download

  • ffmpeg 的可执行文件路径添加到系统的环境变量中。

示例代码

以下代码定义了一个函数 process_audio,支持加载音频文件、调整音量和转换格式。

from pydub import AudioSegment
from pydub.playback import play

def process_audio(input_path, output_path, volume_change=0, output_format="mp3"):
    """
    简单的音频处理函数,支持音量调整和格式转换

    :param input_path: 输入音频文件的路径
    :param output_path: 输出音频文件的路径
    :param volume_change: 音量调整(单位为分贝,dB),正值增大音量,负值减小音量,默认为 0
    :param output_format: 输出音频格式,默认为 'mp3'
    """
    try:
        # 加载音频文件
        audio = AudioSegment.from_file(input_path)

        # 调整音量
        if volume_change != 0:
            audio = audio + volume_change  # 增加或减少音量

        # 转换格式并保存
        if output_format.lower() == "mp3":
            audio.export(output_path, format="mp3")
        elif output_format.lower() == "wav":
            audio.export(output_path, format="wav")
        elif output_format.lower() == "ogg":
            audio.export(output_path, format="ogg")
        else:
            raise ValueError("不支持的输出格式!")

        print(f"音频处理完成,已保存到 {output_path}")
    except Exception as e:
        print(f"音频处理失败:{e}")

# 示例用法
if __name__ == "__main__":
    input_path = "input.mp3"  # 替换为你的输入音频路径
    output_path = "output.wav"  # 替换为你的输出音频路径
    volume_change = +6  # 增加 6 分贝
    output_format = "wav"  # 输出格式

    process_audio(input_path, output_path, volume_change, output_format)

代码说明

  1. 加载音频文件:使用 AudioSegment.from_file() 加载音频文件。pydub 支持多种格式,包括 MP3、WAV、OGG 等。
  2. 调整音量:使用 audio + volume_change 来调整音量。volume_change 是一个分贝值,正值表示增加音量,负值表示减小音量。
  3. 转换格式并保存:使用 audio.export() 方法保存处理后的音频文件。通过 format 参数指定输出格式。
  4. 异常处理:使用 try-except 捕获可能的异常,例如文件不存在、格式错误等。

示例输出

假设输入音频文件为 input.mp3,增加 6 分贝音量,并将输出格式转换为 WAV,处理后的音频将保存为 output.wav,并打印以下信息:

音频处理完成,已保存到 output.wav

扩展功能

pydub 还支持以下音频处理功能:

  • 裁剪音频
start_time = 0  # 开始时间(毫秒)
end_time = 5000  # 结束时间(毫秒)
audio = audio[start_time:end_time]
  • 拼接音频
audio1 = AudioSegment.from_file("audio1.mp3")
audio2 = AudioSegment.from_file("audio2.mp3")
combined_audio = audio1 + audio2
combined_audio.export("combined.mp3", format="mp3")
  • 播放音频
play(audio)

视频讲解

BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)