Python实现音频音量调整:倍率与分贝双模式工具

陆景行
陆景行
发布时间:2026-10-15 | 4人浏览过
原创

本文介绍利用Python结合FFmpeg库实现音频音量调整的方法。通过ffmpy封装,提供基于倍率(如0.5)和基于分贝数(支持负值)两种调整模式。代码自动处理文件扩展名校验、使用UUID生成唯一文件名以避免冲突,并包含完整的调用示例及效果验证步骤,适用于需要批量或程序化调整音频音量的场景。

前言

本文分享一段用于提升音频音量的Python实用代码,风格保持一贯的简洁高效。

环境依赖

首先需要安装FFmpeg环境。

接着安装Python库ffmpy,安装命令如下:


pip install ffmpy -i https://pypi.douban.com/simple

代码实现

直接展示核心代码部分。


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/11/24 22:45
# @Author  : 剑客阿良_ALiang
# @Site    : 
# @File    : raise_audio_volume_tool.py
 
import os
import uuid
from ffmpy import FFmpeg
 
 
# 通过倍率提升
def raise_by_ratio(audio_path: str, output_dir: str, ratio):
    ext = os.path.basename(audio_path).strip().split('.')[-1]
    if ext not in ['wav', 'mp3']:
        raise Exception('format error')
    ff = FFmpeg(
        inputs={
            '{}'.format(audio_path): None}, outputs={
            os.path.join(
                output_dir, '{}.{}'.format(
                    uuid.uuid4(), ext)): '-filter:a "volume={}"'.format(ratio)})
    print(ff.cmd)
    ff.run()
    return os.path.join(output_dir, '{}.{}'.format(uuid.uuid4(), ext))
 
 
# 通过分贝数提升
def raise_by_decibel(audio_path: str, output_dir: str, decibel):
    ext = os.path.basename(audio_path).strip().split('.')[-1]
    if ext not in ['wav', 'mp3']:
        raise Exception('format error')
    ff = FFmpeg(
        inputs={
            '{}'.format(audio_path): None}, outputs={
            os.path.join(
                output_dir, '{}.{}'.format(
                    uuid.uuid4(), ext)): '-filter:a "volume={}dB"'.format(decibel)})
    print(ff.cmd)
    ff.run()
    return os.path.join(output_dir, '{}.{}'.format(uuid.uuid4(), ext))

代码逻辑说明

1、raise_by_ratio(倍率提升)和raise_by_decibel(分贝提升)两个方法的参数均包含音频文件路径、输出目录路径以及音量调整参数(倍率或分贝数)。

2、倍率参数支持浮点数类型,例如可以设置为0.5。

3、分贝数参数允许为负值,用于降低音量。

4、为防止输出文件名称重复,代码中使用UUID生成唯一的文件名。

5、当前代码对音频后缀格式的校验较为简单,仅检查wav和mp3,如需支持其他格式可自行扩展。

效果验证

为了确认音频当前的音量状态,可以使用以下FFmpeg命令查看音频的分贝数信息:


ffmpeg -i C:\Users\yi\Desktop\660952057553105332.wav -filter_complex volumedetect -c:v copy -f null C:\Users\yi\Desktop\1.txt

执行代码测试


if __name__ == '__main__':
    print(
        raise_by_ratio(
            'C:\\Users\\yi\\Desktop\\660952057553105332.wav',
            'C:\\Users\\yi\\Desktop\\', 2))
    print(
        raise_by_decibel(
            'C:\\Users\\yi\\Desktop\\660952057553105332.wav',
            'C:\\Users\\yi\\Desktop\\', -10))

倍率音量提升效果

音量有所增大,但提升幅度不明显,这可能与原始音频的基础分贝数有关。

分贝数提升效果

通过指定分贝数调整的效果数值相对更为精准。

至此,关于Python常用小工具之音频调整音量的介绍已完成,更多Python相关内容请搜索本站历史文章或继续浏览后续文章,感谢支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表