Python常用工具之音频调整音量

目录
  • 前言
  • 环境依赖
  • 代码
  • 验证一下

前言

本文提供将音频提升音量的python代码,一如既往的实用主义代码。

环境依赖

ffmpeg环境安装

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、音频后缀格式校验较少,如需添加自行添加。

验证一下

准备音频的音量,这里提供查看音频的分贝数的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 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2021-11-23

python 提取视频中的音频工具类详解

前言 利用Python的ffmpy库提取视频中的音频.本文提供工具类代码. 环境依赖 需要安装ffmpy,安装指令: pip install ffmpy -i https://pypi.douban.com/simple 工具代码 不废话,上代码. #!/user/bin/env python # coding=utf-8 """ @project : csdn @author : huyi @file : extract_audio_from_audio.py @ide :

python音频处理的示例详解

准备工作: 首先,我们需要 import 几个工具包,一个是 python 标准库中的 wave 模块,用于音频处理操作,另外两个是 numpy 和 matplot,提供数据处理函数. 一:读取本地音频数据 处理音频第一步是需要从让计算机"听到"声音,这里我们使用 python 标准库中自带的 wave模块进行音频参数的获取. (1) 导入 wave 模块 (2) 使用 wave 中的函数 open 打开音频文件,wave.open(file,mode)函数带有两个参数, 第一个 fi

提取视频中的音频 Python只需要三行代码!

身处数据爆炸增长的信息时代,各种各样的数据都飞速增长,视频数据也不例外.我们可以使用 python 来提取视频中的音频,而这仅仅需要安装一个体量很小的 python 库,然后执行三行代码! 语音数据在数据分析领域极为重要.比如可以分析语义.口音.根据人的情绪等等.可以应用于偏好分析.谎话检测等等. 一.提取音频 需要用到 python 的 moviepy 库 moviepy的 github 地址:https://github.com/Zulko/moviepy 命令行 pip 安装上 movie

Python从视频中提取音频的操作

简介 OpenCV中使用VideoCapture类写的视频是没有音频的,如果要进一步处理音频则需要用到一个库--MoviePy,这个库是Python视频编辑库,可裁剪.拼接.标题插入.视频合成.视频处理和自定义效果. 安装 pip install moviepy 代码 from moviepy.editor import * video = VideoFileClip('test.mp4') audio = video.audio audio.write_audiofile('test.mp3'

Python使用pydub模块转换音频格式以及对音频进行剪辑

前言 近端时间看了一个短视频,觉得视频的背景音乐片段很不错,想把这个背景音乐得到,虽然小编运用Python爬虫肯定能得到这首音乐,但是这个音乐片段肯定是得不到的,于是网上看一下相关官方文档,没想到python真的有模块可以满足要求,这又让我想起自己CSDN界面的那段话了,"在Python面前,只有你想不到的,没有Python做不到的". 1.需要下载的Python模块和ffmpeg多媒体处理工具 需要的Python模块是标题上提到的那个,pydub,这个模块可以实现对音频文件的剪辑.转

Python用imghdr模块识别图片格式实例解析

imghdr模块 功能描述:imghdr模块用于识别图片的格式.它通过检测文件的前几个字节,从而判断图片的格式. 唯一一个API imghdr.what(file, h=None) 第一个参数file可以是用rb模式打开的file对象或者表示路径的字符串和PathLike对象.h参数是一段字节串.函数返回表示图片格式的字符串. >>> import imghdr >>> imghdr.what('test.jpg') 'jpeg' 具体的返回值和描述如下: 返回值 描述

Python使用reportlab模块生成PDF格式的文档

(1)使用python生成pdf文档需要的最基本的包是pdfgen.它属于reportlab模块,而reportlab模块并没有默认集成到python的安装包中,所以需要安装该模块. (2)pdfgen提供了一个绘画操作的对象canvas.canvas可以看作是带有笛卡尔坐标(X, Y)的一张白纸,默认坐标(0, 0)位于页面的左下角.默认X向右侧延伸,而Y向上延伸. #引入所需要的基本包 from reportlab.pdfgen import canvas #设置绘画开始的位置 def he

Python用sndhdr模块识别音频格式详解

本文主要介绍了Python编程中,用sndhdr模块识别音频格式的相关内容,具体如下. sndhdr模块 功能描述:sndhdr模块提供检测音频类型的接口. 唯一一个API sndhdr模块提供了sndhdr.what(filename)和sndhdr.whathdr(filename)两个函数.但实际上它们的功能是一样的.(不知道多写一个的意义何在,what函数在内部调用了whathdr函数并把数据完完整整地返回) 在之前的版本,whathdr函数返回元组类型的数据,在Python3.5版本之

Python使用base64模块进行二进制数据编码详解

前言 昨天团队的学妹来问关于POP3协议的问题,所以今天稍稍研究了下POP3协议的格式和Python里面的poplib.而POP服务器往回传的数据里有一部分需要用到Base64进行解码,所以就顺便看了下Python里面的base64模块. 本篇先讲一下base64模块,该模块提供了关于Base16,Base32,Base64,Base85和Ascii85的编码和解码相关的函数.有关poplib模块的内容,会在后面发上来.嗯,又挖了一个坑,这辈子挖的坑填不完了... 以下内容摘自http://bb

Python中getpass模块无回显输入源码解析

本文主要讨论了python中getpass模块的相关内容,具体如下. getpass模块 昨天跟学弟吹牛b安利Python标准库官方文档的时候偶然发现了这个模块.仔细一看内容挺少的,只有两个主要api,就花了点时间阅读了一下源码,感觉挺实用的,在这安利给大家. getpass.getpass(prompt='Password: ', stream=None) 调用该函数可以在命令行窗口里面无回显输入密码.参数prompt代表提示字符串,默认是'Password: '.在Unix系统中,strea

python实现通过pil模块对图片格式进行转换的方法

本文实例讲述了python实现通过pil模块对图片格式进行转换的方法.分享给大家供大家参考.具体分析如下: python的pil模块相当的智能,如果你需要对图片格式进行转换,比如jpg转转成tif,jpg转换成gif,png转换成jpg只需要在保存文件时指定正确的图片扩展名即可. 代码如下: import Image im = Image.open('test.jpg') im.save('test.tiff') # or 'test.tif' 希望本文所述对大家的Python程序设计有所帮助.

Python使用内置json模块解析json格式数据的方法

本文实例讲述了Python使用内置json模块解析json格式数据的方法.分享给大家供大家参考,具体如下: Python中解析json字符串非常简单,直接用内置的json模块就可以,不需要安装额外的模块. 一.json字符串转为python值 json字符串: 复制代码 代码如下: {"userAccount":"54321","date":"2016-12-06 10:26:17","ClickTime"

在Python的struct模块中进行数据格式转换的方法

Python是一门非常简洁的语言,对于数据类型的表示,不像其他语言预定义了许多类型(如:在C#中,光整型就定义了8种),它只定义了六种基本类型:字符串,整数,浮点数,元组,列表,字典.通过这六种数据类型,我们可以完成大部分工作.但当Python需要通过网络与其他的平台进行交互的时候,必须考虑到将这些数据类型与其他平台或语言之间的类型进行互相转换问题.打个比方:C++写的客户端发送一个int型(4字节)变量的数据到Python写的服务器,Python接收到表示这个整数的4个字节数据,怎么解析成Py

Python实现将HTML转换成doc格式文件的方法示例

本文实例讲述了Python实现将HTML转换成doc格式文件的方法.分享给大家供大家参考,具体如下: 网页上的一些文章,因为有格式的原因,它们在网页上的源码都是带有html标签的,用css来进行描述.本文利用HTML Parser 和docx两个模块,对网页进行解析并存储到word文档中.转换出来的格式相对还是有些粗糙,不喜勿喷.话不多说,直接上代码. class HTMLClient: #获取html网页源码 def GetPage(self, url): #user_agent = 'Moz

Python使用pydub库对mp3与wav格式进行互转的方法

我们需要用到一个叫pydub的类库, pydub是python的高级一个音频处理库,可以让你以一种不那么蠢的方法处理音频.---开发者原话 https://github.com/jiaaro/pydub 附上开发者的github地址 安装: pip install pydub 如果在pycharm中也可以这样安装: setting----Project Interpreter----右边绿色+号 点一下install package 依赖安装: 作者在github 上说,依赖可以安装libav