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

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

本文介绍利用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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。