SoundWise 的自动分段通常取决于导出的文本格式。如果导出文本带时间码,可以用时间间隔或静音点做二次分段;如果只有纯文本,就要回到音频重新检测边界。下面按“先检查内置功能,再上脚本后处理”的顺序说明。
判断:SoundWise 能否自动分段,取决于导出格式。优先在软件设置里找“智能分段”或“说话人分段”;若导出的是带时间戳的 SRT/VTT,可按时间间隔切段;若只有纯文本且保留原始音频,可用静音检测辅助定位分段点。需要结合具体版本确认选项位置。
第一步:确认内置分段选项
打开 SoundWise 的导出菜单,看是否有“带时间戳”“SRT”“VTT”“说话人标签”等格式。很多工具会提供“智能分段”“段落识别”“章节标记”之类的选项,这些通常基于语义或静音自动切分。如果有,直接导出分段后的文本,再检查每段是否在语义上闭合。
如果导出菜单里没有这些选项,再检查首选项或设置页面。某些版本把分段开关放在“转写”或“高级”分类下,需要打开后才能生效。若找不到,不要强行猜测,可参考该版本的帮助入口或更新说明。
第二步:用时间间隔切分 SRT/VTT
适用于导出带时间码的文本。原理是:录音中较长的停顿通常是自然分段的边界。把相邻字幕块之间的时间差超过阈值的点作为分段点。
下面脚本按 SRT 格式读取,把间隔大于 2 秒的字幕块合并成一段。阈值可根据语速调整。
import re
def parse_srt(path):
with open(path, encoding='utf-8') as f:
lines = f.read().splitlines()
blocks = []
i = 0
while i < len(lines):
if '-->' in lines[i]:
start = lines[i].split(' --> ')[0]
end = lines[i].split(' --> ')[1].strip()
text_lines = []
i += 1
while i < len(lines) and lines[i].strip():
text_lines.append(lines[i].strip())
i += 1
blocks.append((start, end, ' '.join(text_lines)))
i += 1
return blocks
def to_seconds(ts):
h, m, s = ts.split(':')
s = s.replace(',', '.')
return int(h)*3600 + int(m)*60 + float(s)
def group_by_gap(blocks, gap=2.0):
result = []
current = []
prev_end = None
for blk in blocks:
start_s = to_seconds(blk[0])
if prev_end is not None and start_s - prev_end > gap:
if current:
result.append(current)
current = []
current.append(blk[2])
prev_end = to_seconds(blk[1])
if current:
result.append(current)
return result
if __name__ == '__main__':
blocks = parse_srt('output.srt')
segments = group_by_gap(blocks, gap=2.0)
for i, seg in enumerate(segments, 1):
print(f'--- 第{i}段 ---')
for line in seg:
print(line)
把导出的 SRT 命名为 output.srt 放到脚本所在目录,运行 python split_srt.py。如果分段点偏多或偏少,调整 gap 参数。
第三步:用静音检测补充没有时间戳的情况
如果 SoundWise 只输出纯文本,但它能保留原始音频,可以用 ffmpeg 检测静音段,再手动或写脚本把文本按时间点切开。
ffmpeg -i input.wav -af silencedetect=noise=-30dB:d=0.8 -f null - 2>&1 | grep silence_start
这个命令在 input.wav 上检测持续 0.8 秒以上且低于 -30dB 的静音,输出 silence_start 时间点。得到的时间点就是潜在分段位置。接下来把 SRT 或带时间戳的转写文本按这些时间点对齐。
注意:阈值和静音时长都要根据录音环境调整。环境安静可调低 noise 值,多人对话建议同时看说话人变化。
第四步:验证分段结果
- 每段是否语义完整:单独拿出来能看懂,不突然断在句子里。
- 时长是否均匀:会议录音的分段通常在 3-8 分钟之间;小说朗读会更短。
- 时间戳是否连续:后处理脚本如果出现乱序,要检查 SRT 的 idx 行。
无论用哪种方法,最终都要人工抽听每一段的开头和结尾。自动分段只能给候选边界,真正可发布的版本需要再校验。