You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于OpenAI Speech to Text API生成VTT文件时间戳异常及单词时间戳的问询

解决方案:OpenAI Speech to Text API VTT时间戳与单词级时间戳问题

一、修复VTT时间戳未跳过静音的问题

OpenAI Speech to Text API生成的默认VTT格式,是基于模型的文本分句逻辑生成分段,而非依据语音中的静音间隔。要解决这个问题,你可以通过以下步骤手动生成符合静音分段的VTT文件:

  1. 调用API时指定verbose_json格式
    发起请求时将response_format参数设为verbose_json,这样API会返回包含每个语音片段实际起止时间的原始数据,而非直接生成VTT。

  2. 从返回数据中提取有效分段
    响应的segments数组里,每个对象的start和end字段对应该语音片段的实际开始/结束时间(跳过静音时段),text字段是对应内容。

  3. 手动转换为VTT格式
    按照VTT规范拼接内容:

    • 开头添加WEBVTT标识
    • 每个分段格式为:[开始时间] --> [结束时间],时间需转为HH:MM:SS.mmm格式
    • 后续跟上对应文本内容

    示例伪代码逻辑:

    def format_timestamp(seconds):
        hours = int(seconds // 3600)
        minutes = int((seconds % 3600) // 60)
        secs = seconds % 60
        return f"{hours:02d}:{minutes:02d}:{secs:06.3f}"
    
    # 假设api_response是返回的verbose_json解析后的数据
    vtt_content = "WEBVTT\n\n"
    for seg in api_response['segments']:
        start = format_timestamp(seg['start'])
        end = format_timestamp(seg['end'])
        vtt_content += f"{start} --> {end}\n{seg['text'].strip()}\n\n"
    

二、单词级时间戳支持情况

OpenAI Speech to Text API支持单词级时间戳,只需在调用API时添加word_timestamps=True参数,同时将response_format设为verbose_json。

此时返回的segments数组中,每个segment会包含words字段,该数组内的每个对象包含单个单词的start(开始时间)、end(结束时间)和word(单词内容),可以基于此生成带单词级时间戳的字幕或做其他处理。

内容的提问来源于stack exchange,提问作者QCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 06:15:07