SoundWise 将录音转文字后自动分段的方法

文章导读
SoundWise 的自动分段通常取决于导出的文本格式。如果导出文本带时间码,可以用时间间隔或静音点做二次分段;如果只有纯文本,就要回到音频重新检测边界。下面按“先检查内置功能,再上脚本后处理”的顺序说明。
📋 目录
  1. 第一步:确认内置分段选项
  2. 第二步:用时间间隔切分 SRT/VTT
  3. 第三步:用静音检测补充没有时间戳的情况
  4. 第四步:验证分段结果
A A

SoundWise 的自动分段通常取决于导出的文本格式。如果导出文本带时间码,可以用时间间隔或静音点做二次分段;如果只有纯文本,就要回到音频重新检测边界。下面按“先检查内置功能,再上脚本后处理”的顺序说明。

判断:SoundWise 能否自动分段,取决于导出格式。优先在软件设置里找“智能分段”或“说话人分段”;若导出的是带时间戳的 SRT/VTT,可按时间间隔切段;若只有纯文本且保留原始音频,可用静音检测辅助定位分段点。需要结合具体版本确认选项位置。

第一步:确认内置分段选项

打开 SoundWise 的导出菜单,看是否有“带时间戳”“SRT”“VTT”“说话人标签”等格式。很多工具会提供“智能分段”“段落识别”“章节标记”之类的选项,这些通常基于语义或静音自动切分。如果有,直接导出分段后的文本,再检查每段是否在语义上闭合。

如果导出菜单里没有这些选项,再检查首选项或设置页面。某些版本把分段开关放在“转写”或“高级”分类下,需要打开后才能生效。若找不到,不要强行猜测,可参考该版本的帮助入口或更新说明。

第二步:用时间间隔切分 SRT/VTT

适用于导出带时间码的文本。原理是:录音中较长的停顿通常是自然分段的边界。把相邻字幕块之间的时间差超过阈值的点作为分段点。

SoundWise 将录音转文字后自动分段的方法

下面脚本按 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 检测静音段,再手动或写脚本把文本按时间点切开。

SoundWise 将录音转文字后自动分段的方法
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 行。

无论用哪种方法,最终都要人工抽听每一段的开头和结尾。自动分段只能给候选边界,真正可发布的版本需要再校验。