37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
||
from pydub import AudioSegment
|
||
from pydub.silence import split_on_silence
|
||
|
||
|
||
def remove_silent_parts(input_file_path, output_file_path, min_silence_len=1000, silence_thresh=-40):
|
||
"""
|
||
函数功能:删除音频文件中的无声部分,并将处理后的音频保存到指定输出路径
|
||
|
||
参数:
|
||
input_file_path: 输入音频文件的路径
|
||
output_file_path: 输出音频文件的路径
|
||
min_silence_len: 最小静音长度,单位为毫秒,默认值为1000毫秒
|
||
silence_thresh: 静音阈值,单位为dBFS,默认值为-40dBFS,低于此阈值的部分被视为静音
|
||
"""
|
||
# 从文件中读取音频
|
||
audio_segment = AudioSegment.from_file(input_file_path)
|
||
|
||
# 根据静音阈值和最小静音长度拆分音频
|
||
chunks = split_on_silence(audio_segment, min_silence_len=min_silence_len, silence_thresh=silence_thresh)
|
||
|
||
# 将拆分后的非静音部分重新拼接在一起
|
||
final_audio = AudioSegment.empty()
|
||
for chunk in chunks:
|
||
final_audio += chunk
|
||
|
||
# 将处理后的音频保存到输出文件路径
|
||
final_audio.export(output_file_path, format="wav")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
# 首先使用命令行umx audio.wav来将音频拆分为
|
||
input_file_path = "vocal/this is water_umxl/vocals.wav"
|
||
output_file_path = "vocal/this is water_umxl/vocals_process.wav"
|
||
|
||
remove_silent_parts(input_file_path, output_file_path)
|