Python实现音频音量调整:倍率与分贝双模式工具
本文介绍利用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相关内容请搜索本站历史文章或继续浏览后续文章,感谢支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













