吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 853|回复: 12
收起左侧

[Python 原创] python调用ffmpeg切割音频静音段

[复制链接]
typps 发表于 2024-7-24 13:50
工作涉及,写了个根据音频静音段切割音频的小脚本,理论上可以做到按句按段分割长语音

[Asm] 纯文本查看 复制代码
from pydub import AudioSegment
from pydub.silence import split_on_silence
import os


# 设置分割参数
min_silence_len = 400  # 最小静音长度
silence_thresh = -60  # 静音阈值,越小越严格
keep_silence = 200  # 保留静音长度
all_dur_sec = 0.0

max_dur_sec = 15.0

long_dir = "D:/剪辑前"
save_dir = "D:/剪辑后"
if not os.path.exists(save_dir):
    os.system(f"mkdir -p {save_dir}")
with open(os.path.join(save_dir, "meta.info"), mode='w', encoding='utf-8') as fW:
    for fname in os.listdir(long_dir):
        if 'wav' not in fname:
            continue
        ffname = fname.split(".")[0]
        print(f"current file {fname} ...  ")
        # 读取音频文件
        audio = AudioSegment.from_file(
            os.path.join(long_dir, fname), format="wav")
        segments = split_on_silence(audio, min_silence_len=min_silence_len,
                                    silence_thresh=silence_thresh, keep_silence=keep_silence)
        print(f"Len: {len(segments)}")
        
        for i in range(0, len(segments)):
            sp_wav = f"{ffname}_{str(i).zfill(4)}.wav"
            segments[i].export(
                os.path.join(save_dir, sp_wav), format="wav")
            fW.write(f"{sp_wav}\t{segments[i].duration_seconds}\n")
            all_dur_sec += segments[i].duration_seconds
            if segments[i].duration_seconds > max_dur_sec:
                print(f"{sp_wav}\t{segments[i].duration_seconds}")
print(f"all dur sec : {all_dur_sec/60.0} min")

# 计算分割数量
# num_segments = int(audio.duration_seconds/60/3)  # 每个音频大概三分钟,计算歌曲数量

# # 分割音频文件
# for i in range(-10, 0):

#     if len(segments) <= num_segments:
#         print(f"分割成功,共分割出 {len(segments)} 段")
#         break
#     else:
#         print(f"当前阈值为 {i},分割出 {len(segments)} 段,继续尝试")

免费评分

参与人数 3吾爱币 +10 热心值 +3 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
ruanxiaoqi + 1 + 1 我很赞同!
wapjsx + 2 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

LUYAJUN 发表于 2024-8-13 16:21
typps 发表于 2024-8-12 12:16
哇,是我完全没想到的应用途径,厉害厉害~

因为课文朗读不同于“文字转语音”,课文朗读在于读出情感,读出意境,在于读出作者所要表达的思想,必须是朗诵专家的音频文件才有用。目前农村小学晨读仍然还是老师带读课文,问题是部分老师自己普通话仍不标准,所以急需一款课文带读软件,软件要求在语音停顿处,增加(语音停顿处)前面语句的时长空白,另加1-2秒(学生听完语音带读后的反应时间),比喻说软件识别朗诵专家读某一句为3秒,则后面停顿时间为4秒或5秒。希望大佬能出来软件,帮助广大的农村一线老师,也帮助广大的农村孩子学号标准的普通话。
wapjsx 发表于 2024-7-24 16:28
ruanxiaoqi 发表于 2024-7-24 17:17
WANGTL1223 发表于 2024-7-24 22:09
这个东西总是不定时出现权限问题
你们有遇到过吗 有什么一劳永逸的解决办法吗
 楼主| typps 发表于 2024-7-25 09:08
WANGTL1223 发表于 2024-7-24 22:09
这个东西总是不定时出现权限问题
你们有遇到过吗 有什么一劳永逸的解决办法吗

啊?没遇到过诶,是不是ffmpeg环境变量没配置对呀,可以检查一下
newjre 发表于 2024-7-25 10:42
学习学习
henryzhu 发表于 2024-7-25 23:45
ffmpeg非常好,楼主思路不错!
Fwing 发表于 2024-7-26 01:14
思路很好,准备测试下效果。
zab8888 发表于 2024-7-30 15:04
学习了,回头测试一下
LUYAJUN 发表于 2024-8-3 14:13
非常有用,对于编辑学生跟读课文的音频文件,很有帮助,能有软件出来则更好
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-14 14:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表