|
发表于 2024-11-2 13:49:33
|
显示全部楼层
要修改这段代码以满足你的要求,我们需要确保在每个音频片段的长度在 `MIN_LENGTH` 和 `MAX_LENGTH` 之间,并且在静默处切分。以下是修改后的代码:
- from pydub import AudioSegment
- from pydub.silence import detect_silence
- MIN_SILENCE = 500
- SILENCE_THRESH = -40
- MIN_LENGTH = 300 * 1000 # 300 seconds
- MAX_LENGTH = 350 * 1000 # 350 seconds
- filename = 'cn1.wav'
- file_prefix = 'last_'
- sound = AudioSegment.from_file(filename, format="wav")
- silent_ranges = detect_silence(sound, min_silence_len=MIN_SILENCE, silence_thresh=SILENCE_THRESH)
- last_silence = 0
- chunk = 0
- for start, end in silent_ranges:
- if MIN_LENGTH <= (start - last_silence) <= MAX_LENGTH:
- sound[last_silence:start].export(f'{file_prefix}{chunk}.wav', format="wav")
- chunk += 1
- last_silence = start
- # Export the last segment if it wasn't exported
- if last_silence < len(sound):
- sound[last_silence:].export(f'{file_prefix}{chunk}.wav', format="wav")
复制代码
### 主要修改点:
1. **静默范围的处理**:使用 `for start, end in silent_ranges` 来遍历静默段的开始和结束时间。
2. **条件判断**:在导出音频片段之前,检查片段长度是否在 `MIN_LENGTH` 和 `MAX_LENGTH` 之间。
3. **导出最后一个片段**:在循环结束后,检查是否有剩余的音频片段需要导出。
这样可以确保音频在静默处切分,并且每个片段的长度在指定范围内。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|