ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整

这篇具有很好参考价值的文章主要介绍了ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整

ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整,面向Chat编程,10分钟 GET 新技能,工具,音视频,python,pydub,moviepy

老王媳妇说上次那个pip挺好用的,就是长度这个有点迷茫,
那就测下吧

获取音频长度

使用 pydub 和 mutagen 库都可以获取MP3文件的长度。

pydub获取音频长度

获取时长
from pydub.utils import mediainfo

def get_duration(filename):
    info = mediainfo(filename)
    duration = info['duration']
    return duration

filename = 'yourfile.mp3'
print(get_duration(filename))
精确到秒
from pydub.utils import mediainfo

def get_duration(filename):
    info = mediainfo(filename)
    duration = round(float(info['duration']))
    return duration

filename = 'yourfile.mp3'
print(get_duration(filename))
格式设定

如果你需要将获取的时长转换为 “03:03” 这样的格式, 可以首先将时长转换为整数(秒数), 然后通过除法和取余运算获取分钟和秒, 然后将这些值格式化为字符串。这是一个示例:

def get_duration(filename):
    info = mediainfo(filename)
    duration = int(float(info['duration']))  # change to int
    minutes, seconds = divmod(duration, 60)  # get minutes and seconds
    return "{:02d}:{:02d}".format(minutes, seconds)  # format as string

filename = 'yourfile.mp3'
print(get_duration(filename))

这个函数将返回一个字符串,比如 “03:03”。

mutagen获取音频长度

如果你想使用的是mutagen库,可以这样做:

from mutagen.mp3 import MP3

def get_duration(filename):
    audio = MP3(filename)
    duration = audio.info.length
    return duration

filename = 'yourfile.mp3'
print(get_duration(filename))

同样,如果需要精确到秒级+格式化如上pydub的处理操作即可

调整音量

老王媳妇说这小视频挺好的,就是声音有点大,
安排!

使用pydub直接调整mp3音量

以下是一个可以用于调整mp3音量的函数,使用pydub库:

from pydub import AudioSegment

def adjust_audio_db(input_file, output_file, db):
    song = AudioSegment.from_mp3(input_file)
    adjusted_song = song + db
    adjusted_song.export(output_file, format="mp3")

# 使用函数:
adjust_audio_db('input.mp3', 'output.mp3', -10)

在这个函数中,input_fileoutput_file是输入和输出音频文件的路径,db是想要增加或减少的分贝数。首先,函数加载输入文件,然后调整音量,最后导出修改后的音频到output_file。注意db可以是负数,如果你想降低音量。

请确保已经正确安装了pydub和ffmpeg,因为pydub需要ffmpeg进行音频编解码。

设定音量为随机值

如果你想让音量设定为一个随机值,你可以通过引入Python的random库来实现这一点。这里是如何修改上面的函数,以便音量增减设置为一个随机值:

from pydub import AudioSegment
import random

def adjust_audio_random_db(input_file, output_file, min_db, max_db):
    song = AudioSegment.from_mp3(input_file)
    # 生成一个介于min_db和max_db之间的随机分贝值
    db_change = random.randint(min_db, max_db)
    adjusted_song = song + db_change
    adjusted_song.export(output_file, format="mp3")

# 使用函数:
adjust_audio_random_db('input.mp3', 'output.mp3', -5, 5)

在这个修改版函数中,min_dbmax_db定义了可能的分贝变化范围。random.randint(min_db, max_db)会生成一个在这个范围内的随机整数,这个值可以是正的(增加音量)或负的(减少音量)。然后,这个随机生成的分贝值被用来调整音频的音量。

记住,使用随机分贝变化时要谨慎选择min_dbmax_db的值,以确保音量的变化在可接受的范围内,不会对听者造成不适。

老王媳妇:你搞错了
我:对对,先试试水么,马上安排

视频音量调整

调整原视频中的音频信号db,随机到-30到-20之间

你可以使用moviepy库中的AudioClip的fx函数来改变音频信号的db。volumex函数可以用于改变音频的音量,参数是音量的倍数,比如0.5表示降低一半的音量。

volumex函数的参数是一个对数尺度,所以如果你想把db调整到-30到-20之间,你需要把这个范围转换成线性尺度。对数尺度和线性尺度的转换公式是 value_in_linear_scale = 10^(value_in_db_scale/20)

这个转换是因为人耳对声音的感知是对数的。例如,如果一个声音的音量是另一个的两倍,我们感觉到的并不是两倍的响,而是稍微大一点。因此,在对数尺度上,增加10db大约意味着将音量加倍。

以下是一个如何用moviepy调整音频db的示例:

from moviepy.editor import VideoFileClip
import numpy as np

# 打开视频
clip = VideoFileClip('video.mp4')

# 生成-30到-20之间的随机数
db = np.random.uniform(-30, -20)

# 转换到线性尺度
linear = 10 ** (db / 20)

# 调整音频
clip = clip.fx(vfx.volumex, linear)

# 输出到文件
clip.write_videofile('output.mp4')

这段代码首先打开输入视频,然后生成-30到-20之间的随机db值,并把这个值转换成线性尺度。然后用vfx.volumex函数调整音频的音量。最后将视频输出到文件。

提取函数

你可以使用moviepy库中的AudioClip的fx函数来改变音频信号的db。volumex函数可以用于改变音频的音量,参数是音量的倍数,比如0.5表示降低一半的音量。

volumex函数的参数是一个对数尺度,所以如果你想把db调整到-30到-20之间,你需要把这个范围转换成线性尺度。对数尺度和线性尺度的转换公式是 value_in_linear_scale = 10^(value_in_db_scale/20)

这个转换是因为人耳对声音的感知是对数的。例如,如果一个声音的音量是另一个的两倍,我们感觉到的并不是两倍的响,而是稍微大一点。因此,在对数尺度上,增加10db大约意味着将音量加倍。

以下是一个如何用moviepy调整音频db的示例:

from moviepy.editor import VideoFileClip
import numpy as np

# 打开视频
clip = VideoFileClip('video.mp4')

# 生成-30到-20之间的随机数
db = np.random.uniform(-30, -20)

# 转换到线性尺度
linear = 10 ** (db / 20)

# 调整音频
clip = clip.fx(vfx.volumex, linear)

# 输出到文件
clip.write_videofile('output.mp4')

这段代码首先打开输入视频,然后生成-30到-20之间的随机db值,并把这个值转换成线性尺度。然后用vfx.volumex函数调整音频的音量。最后将视频输出到文件。

注意事项

长度也测了,声音也小了,老王媳妇终于学会丝滑混剪短视频了。
ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整,面向Chat编程,10分钟 GET 新技能,工具,音视频,python,pydub,moviepy

继续pip文章来源地址https://www.toymoban.com/news/detail-827104.html

pip install pydub mutagen moviepy

到了这里,关于ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pandas实战100例 | 案例 17: 处理重复数据 - 删除重复行

    案例 17: 处理重复数据 - 删除重复行 知识点讲解 在数据分析过程中,处理重复的记录是一个常见的任务。Pandas 提供了方便的方法来删除重复行,保证数据的准确性和可靠性。 删除所有列重复的行 : 使用 drop_duplicates() 方法可以删除 DataFrame 中所有列值完全相同的重复行。 基于

    2024年01月20日
    浏览(56)
  • 手机测量长度怎么测量?这种方法不能不了解

    生活中相信小伙伴们偶尔都会有需要量某个物品尺寸的需求。但是,由于大家平时没有携带尺子的习惯很多时候也只能作罢。其实随着现在科技的发展,手机也可以进行测量物体的长度,而且测量的精准度也相当不错。那么大家知道手机测量长度怎么测量吗?今天就给小伙伴

    2024年02月12日
    浏览(36)
  • ffmpeg调整音频音量踩坑

    前一阵用 Flutter 结合 ffmpeg 做了一个音视频合并功能,记录一下遇到的问题。 首先是音视频合并命令: 说明: -i input.mp4 :指定输入视频文件。 -i input.mp3 :指定输入音频文件。 -filter_complex \\\"[1:a]adelay=0s:all=1[a1];[a1]amix=inputs=1[amixout]\\\" :使用filter_complex选项进行音频处理。首先,

    2024年02月06日
    浏览(55)
  • Android 音频开发——音量调节基础(十)

            AudioManager,音频管理类。它主要提供了丰富的 API 让开发者对应用的音量和铃声模式进行控制以及访问。主要内容涉及到音频流、声音、蓝牙、扩音器、耳机等等。 1、接口列表 接口 描述 dispatchMediaKeyEvent 发送媒体按钮的模拟键事件 isVolumeFixed 显示设备是否执行固

    2024年02月04日
    浏览(42)
  • rk3568 音频调节音量-rk809

    daisy使用的是rk3568的主板,系统使用的是v2版本的,使用正常-6dB的音频的文件和耳机声道输出听不清楚,但是使用0dB的能听清楚,所以先从软件上下手修改音量配置,从默认的3改到了0,因为手册里面写的0是最大音量配置参数,如果还是不行就需要硬件上做功放模块 IDO-EVB35

    2024年02月16日
    浏览(41)
  • 解析音频输出调节音量的原理以及调节的方法

    通常,音量调整可以在音频流水线的两个主要阶段进行:数字域和模拟域。当我们在系统设置中调整音量时,通常是在模拟域(即音频设备)进行调整。在这种情况下,所有的音频输出(包括来自不同应用的音频)都会受到影响。 如果你只想改变特定音频的音量,你可以在数

    2024年02月05日
    浏览(50)
  • ChatGPT实战100例 - (04) 自动化爬虫

    需求 :解析网页元素太复杂,要让他自动解析 操作步骤 : ChatGPT编写相关脚本 python跑起来 需要的前置技能: 听说过 python爬虫库requests和bs4 没听过?简单: requests是一个Python HTTP请求库,用于获取网页数据。 bs4是BeautifulSoup的缩写,是一个HTML/XML解析库,用于从网页数据中提取信

    2023年04月19日
    浏览(34)
  • ChatGPT实战100例 - (10) 提前体验ChatGPT的多模态绘图功能

    这个绘图其实比较基础,只能说是能显示个图吧 真要出图,隔壁 文心一言 秒杀 ChatGPT,没排上队的直接用 文心一格 - AI艺术和创意辅助平台 也很嗨啊。 据说 GPT-4 出了绘图功能,实际上ChatGPT 还不能直接用。 基本的思路还是靠 Markdown 结合三方网站功能 引入图片。 Unsplash 图

    2024年02月01日
    浏览(70)
  • ChatGPT实战100例 - (11) 零成本学习Python

    用ChatGPT列一个培训大纲, 然后:哪里不会点哪里! 问题: 回答

    2024年02月06日
    浏览(35)
  • ChatGPT实战100例 - (01) 秒出思维导图

    1. 需求:快速的头脑风暴 很多时候针对一个问题需要把它想清楚,可以一个人苦思冥想,也可以召集一堆人一起想,但现在可能更好的方法是让ChatGPT来帮我们想。 2. 思路:生成markdown然后转化嗯 生成一个关于现有主题的思维导图,用markdown语法。 转换一个可修改的思维导图

    2023年04月16日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包