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日
    浏览(42)
  • 手机测量长度怎么测量?这种方法不能不了解

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

    2024年02月12日
    浏览(29)
  • 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日
    浏览(41)
  • Android 音频开发——音量调节基础(十)

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

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

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

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

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

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

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

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

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

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

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

    2023年04月16日
    浏览(32)
  • ChatGPT实战100例 - (07) 文本绘图工具大比拼

    近期经常需要绘制各类图表来进行学术论文、课程设计、简报制作等, 然而大众版的ChatGPT目前还不具备出图的功能, 其实对于办公图表和UML等常用的图形,业内有大量的文本绘图工具可以使用。 文本绘图工具为我们提供了一个简单且高效的方式来绘制各种图表和流程图。无

    2023年04月25日
    浏览(28)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包