0
我有超过200个MP3文件,我需要通过使用静音检测来分割它们中的每一个。我尝试过Audacity和WavePad,但他们没有批处理过程,并且一个接一个地进行处理非常缓慢。使用静音检测分割音频文件
的情况如下:在开始
- 分割轨道而沉默2秒或更
- 然后添加0.5秒和这些轨道的端部,并保存为MP3播放
- 比特率192立体声
- 正常化量,以确保所有的文件都是相同的体积和质量
我尝试FFmpeg的,但没有成功。
我有超过200个MP3文件,我需要通过使用静音检测来分割它们中的每一个。我尝试过Audacity和WavePad,但他们没有批处理过程,并且一个接一个地进行处理非常缓慢。使用静音检测分割音频文件
的情况如下:在开始
我尝试FFmpeg的,但没有成功。
我发现pydub是以简单的方式并以最少的代码量完成这些类型的音频操作的最简单的工具。
您可以安装pydub作为
pip install pydub
如果需要,您可能需要安装的ffmpeg/avlib。检查link了解更多详情。
这是一段代码,它可以完成你所问的任务。某些参数(如silence_threshold
,target_dBFS
)可能需要进行一些调整以符合您的要求。
总的来说,我是能够拆分mp3
文件(尽管在我结束不同silence_threshold
)
工作守则
from pydub import AudioSegment
from pydub.silence import split_on_silence
def match_target_amplitude(aChunk, target_dBFS):
''' Normalize given audio chunk '''
change_in_dBFS = target_dBFS - aChunk.dBFS
return aChunk.apply_gain(change_in_dBFS)
song = AudioSegment.from_mp3("your_audio.mp3")
#split track where silence is 2 seconds or more and get chunks
chunks = split_on_silence(song,
# must be silent for at least 2 seconds or 2000 ms
min_silence_len=2000,
# consider it silent if quieter than -16 dBFS
#Adjust this per requirement
silence_thresh=-16
)
#Process each chunk per requirements
for i, chunk in enumerate(chunks):
#Create 0.5 seconds silence chunk
silence_chunk = AudioSegment.silent(duration=500)
#Add 0.5 sec silence to beginning and end of audio chunk
audio_chunk = silence_chunk + chunk + silence_chunk
#Normalize each audio chunk
normalized_chunk = match_target_amplitude(audio_chunk, -20.0)
#Export audio chunk with new bitrate
print("exporting chunk{0}.mp3".format(i))
normalized_chunk.export(".//chunk{0}.mp3".format(i), bitrate='192k', format="mp3")
如果您的原始音频立体声(通道= 2),块将立体声。 您可以检查如下。
>>> song.channels
2
看看[如何分割mp3文件?](https://askubuntu.com/questions/27574/how-can-i-split-a-mp3-file)。 – John1024
我用[mp3DirectCut](http://www.mpesch3.de1.cc/mp3dc.html)合理成功。话虽如此,StackOverflow是编程的Q/A站点。它不是一个请求软件或其他场外资源推荐的站点。 – rojo