目录
I. 简介II. 安装III. 使用补充随着短视频应用的普及,越来越多人开始了解并尝试制作自己的短视频作品。而在制作短视频时,背景音乐的选择和使用也是非常重要的一步。很多人喜欢选择一首长音乐,再通过剪辑软件将其剪成多段来使用,这种做法虽然可行,但效率较低。
(资料图)
在这种情况下,我们可以使用音频分割技术来快速剪辑出需要的音频段,以便于在短视频中使用。在 Python 中,我们可以使用 Pydub 库来进行音频分割。
I. 简介
pydub是Python的一个音频处理库,可以处理各种音频格式,如mp3、wav、flv等等。它是一个轻量级、快速且易于使用的库。silence库是pydub的一个扩展库,可以在音频文件中根据静默部分进行分割,非常方便。
II. 安装
使用pip安装pydub库:
pip install pydub
III. 使用
下面是一个使用pydub=分割音频文件的示例代码:
from pydub import AudioSegment
from pydub.silence import split_on_silence
# 读取音频文件
audio = AudioSegment.from_file("audio.mp3", format="mp3")
# 设置分割参数
min_silence_len = 700 # 最小静音长度
silence_thresh =-10 # 静音阈值,越小越严格
keep_silence = 600 # 保留静音长度
# 识别计算分割歌曲数量
num_segments = int(audio.duration_seconds/60/3) # 每首歌曲大概三分钟,计算歌曲数量
# 分割音频文件
for i in range(-10, 0):
segments = split_on_silence(audio, min_silence_len=min_silence_len, silence_thresh=i, keep_silence=keep_silence)
if len(segments) <= num_segments:
print(f"分割成功,共分割出 {len(segments)} 段")
break
else:
print(f"当前阈值为 {i},分割出 {len(segments)} 段,继续尝试")
上面的代码首先使用AudioSegment类从audio.mp3文件中读取音频数据,然后设置了分割参数min_silence_len、silence_thresh和keep_silence。min_silence_len是最小静音长度,silence_thresh是静音阈值,keep_silence是保留静音长度。这些参数的具体含义可以根据实际情况进行调整。最后,根据分割参数使用split_on_silence函数对音频文件进行分割。
分割成功后,我们可以输出分割后的音频文件,验证是否达到了我们预期的效果。至此,我们就完成了音频文件的自动分割,可以将分割后的文件用于其他需要使用的场景了。
补充
除了利用Pydub实现自动分割音频,本文还为大家整理了其他Python实现音频分割的方法,希望对大家有所帮助
方法一:
from pydub import AudioSegment
from pydub.utils import make_chunks
import os, re
# # 循环目录下所有文件
for each in os.listdir("D:/PycharmProjects/拾音器/"): # 循环目录
filename = re.findall(r"(.*?)\.mp3", each) # 取出.mp3后缀的文件名
print(each)
if each:
mp3 = AudioSegment.from_file("D:/PycharmProjects/拾音器//{}".format(each), "mp3") # 打开mp3文件
# # # mp3[17*1000+500:].export(filename[0], format="mp3") # 切割前17.5秒并覆盖保存,与以下代码不可同时使用
size = 10000 # 切割的毫秒数 10s=10000
chunks = make_chunks(mp3, size) # 将文件切割为10s一块
for i, chunk in enumerate(chunks):
chunk_name = "{}-{}.mp3".format(each.split(".")[0], i) # 也可以自定义名字
print(chunk_name)
chunk.export("D:/PycharmProjects/拾音器2/{}".format(chunk_name), format="mp3") # 新建的保存文件夹
方法二:
"""
把原音频,按csv中的标注结果分割成几个音频,如text是无,忽略。否则从sDate到eDate 进行分割。
"""
import os
import pandas as pd
import json
from pydub import AudioSegment
csv_url = "D:\csv\\"
wav_url = "D:\标注音频与示例\\"
save_wav = "D:\wav\\new_wav\\"
for path in os.listdir(csv_url):
data_frame = pd.read_csv(csv_url + path, encoding="utf-8")
name_list = data_frame["storeFileName"]
result_list = data_frame["finalResult"]
for nl, rl in zip(name_list, result_list):
new_wav_url = save_wav + nl.split(".")[0] + "\\"
if not os.path.exists(new_wav_url):
os.makedirs(new_wav_url)
result = json.loads(rl)
txt_url = new_wav_url + nl.split(".")[0]+".txt"
with open(txt_url, "w", encoding="utf-8") as fn:
fn.write(nl+"\n")
fn.write(rl)
fn.close()
audio = AudioSegment.from_wav(wav_url + nl)
for text in result["text"]:
if text["defData"]["text"] != "无":
sTime = text["defData"]["sTime"] * 1000
dTime = text["defData"]["dTime"] * 1000
eTime = sTime + dTime
# 音频切割按开始时间到结束时间切割
audio_chunk = audio[sTime:eTime]
audio_chunk.export(new_wav_url + nl.split(".")[0] + "-" + str(text["id"]) + ".wav", format="wav")到此这篇关于Python利用Pydub实现自动分割音频的文章就介绍到这了,更多相关Python Pydub分割音频内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
关键词:
下一篇:最后一页
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?

