首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >split_on_silence()何时/为什么返回空列表

split_on_silence()何时/为什么返回空列表
EN

Stack Overflow用户
提问于 2019-04-23 14:18:12
回答 1查看 497关注 0票数 0

我正在尝试获取一个mp3,并简单地删除静默块。我使用的是pydub.split_on_silence(),但它返回一个空列表。在我下面的代码中,音频块在前4秒似乎是静默的,有12秒的音频,然后是静默的其余部分。

代码语言:javascript
运行
复制
from pydub import AudioSegment
from pydub.silence import split_on_silence

sound =  AudioSegment.from_mp3("audio_files/xxxxxx.mp3")
clip = sound[21*1000:45*1000]

#"graph" the volume in 1 second increments
for x in range(0,int(len(clip)/1000)):
    print(x,clip[x*1000:(x+1)*1000].max_dBFS)

chunks = split_on_silence(
    clip,
    min_silence_len=1000,
    silence_thresh=-16,
    keep_silence=100
)

print("number of chunks",len(chunks))
print (chunks)

输出:

代码语言:javascript
运行
复制
0 -59.67942035834925
1 -59.67942035834925
2 -60.20599913279624
3 -59.18294868384861
4 -7.294483767470469
5 -9.54772815923718
6 -7.8863408992261785
7 -8.018780602216872
8 -8.086437972291877
9 -9.689721851628853
10 -12.146807891343315
11 -13.187719632532362
12 -14.065443216019279
13 -14.344275171835644
14 -14.668150366783275
15 -10.544064231686791
16 -59.67942035834925
17 -59.9387199016366
18 -58.94496421785445
19 -59.9387199016366
20 -59.42763781218885
21 -59.67942035834925
22 -60.20599913279624
23 -59.67942035834925
number of chunks 0
[]
EN

回答 1

Stack Overflow用户

发布于 2019-04-24 06:55:35

谢谢@ggrelet。我认为解决方案是用平均DBFS (或仅仅是.dBFS)来判断静默,而不是最大dbfs。我相应地更改了代码(显示平均dBFS,将阈值降低到-40),并得到了一个非空的返回。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55805350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档