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

Google Text-to-Speech API能否生成同步字幕及实现方法问询

Google Text-to-Speech API 同步字幕生成方案

核心结论

Google Text-to-Speech API不直接提供SRT/VTT格式的同步字幕生成功能,但可以通过API返回的时间戳数据,自行转换生成符合要求的字幕文件,实现与音频的同步。

实现步骤

  1. 开启时间戳获取
    调用API时,在请求参数中添加enable_time_pointing配置,指定获取词级(SYNTHESIS_WORD)或音素级(SYNTHESIS_PHONEME)的时间戳。示例请求参数(以REST API为例):

    {
      "input": {"text": "需要转换的文本内容"},
      "voice": {"languageCode": "zh-CN", "name": "zh-CN-Standard-A"},
      "audioConfig": {"audioEncoding": "MP3"},
      "enableTimePointing": ["SYNTHESIS_WORD"]
    }
    
  2. 解析时间戳数据
    API返回的响应中会包含timepoints数组,每个元素包含对应文本片段的startTime、endTime和markName(即对应的词或音素)。例如:

    "timepoints": [
      {"startTime": "0s", "endTime": "0.3s", "markName": "需要"},
      {"startTime": "0.3s", "endTime": "0.7s", "markName": "转换"},
      ...
    ]
    
  3. 转换为SRT/VTT格式
    编写脚本将时间戳数据转换为目标格式。以下是简单的Python示例(生成SRT):

    def generate_srt(timepoints):
        srt_content = ""
        for idx, point in enumerate(timepoints, 1):
            # 转换时间格式为SRT要求的 HH:MM:SS,mmm
            start = format_time(point["startTime"])
            end = format_time(point["endTime"])
            srt_content += f"{idx}\n{start} --> {end}\n{point['markName']}\n\n"
        return srt_content
    
    def format_time(time_str):
        # 处理API返回的"Xs"格式,转换为SRT时间格式
        seconds = float(time_str[:-1])
        hours = int(seconds // 3600)
        minutes = int((seconds % 3600) // 60)
        secs = seconds % 60
        return f"{hours:02d}:{minutes:02d}:{secs:06.3f}".replace(".", ",")
    

使用限制

  • 语言支持范围:时间戳功能仅支持部分语言和语音模型,需确认目标语言是否在支持列表内
  • 时间戳精度:词级时间戳适用于大部分字幕场景,音素级精度更高但处理更复杂
  • 文本长度限制:API单请求的文本长度上限会影响时间戳的完整性,超长文本需拆分请求后再合并字幕

与AWS Polly的差异

AWS Polly直接内置了字幕生成功能,可直接输出SRT/VTT;而Google TTS需要自行处理时间戳转换,但优势在于可以自定义字幕的格式、分段规则等,灵活性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:05:13