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

如何不使用AWS Polly集成AWS Sumerian Host并保留唇形同步

核心结论

可以使用AWS Sumerian Host的3D资产搭配自托管TTS服务(如Mimic3、Web Speech API),同时保留唇形同步等视觉功能——核心是复刻Polly Speechmarks的音素时间戳数据格式,再替换原有代码中调用Polly的逻辑。

具体实现步骤

1. 明确Sumerian Host的同步逻辑

Sumerian Host的唇形同步依赖音素级时间戳数据(对应Polly Speechmarks里的VISIME标记),每个标记包含:

  • 匹配的口型动作编码(如p、a、o等)
  • 动作在音频中的起始时间(毫秒)
  • 动作持续时长

原有代码会把这些标记映射到3D模型的混合形状(blend shape),从而驱动口型变化。

2. 为自定义TTS生成兼容的时间戳数据

针对Mimic3

Mimic3原生支持输出音素级时间戳,可通过以下方式获取:

  • 调用时启用--phoneme-timestamps参数,会输出包含每个音素起始/结束时间的JSON数据。
  • 编写映射函数,将Mimic3输出的音素(如aa、p)转换为Sumerian Host使用的VISIME编码(可参考Sumerian Host源码中的音素-口型映射表)。

针对Web Speech API

Web Speech API本身不直接输出音素时间戳,可通过两种方式补充:

  • 使用SpeechSynthesisUtterance的boundary事件:该事件会在单词/音节边界触发,可基于此生成近似时间戳(精度略低,但能满足基础唇形同步需求)。
  • 结合第三方带时间戳的TTS库(如meSpeak),直接获取音素级时间数据。

3. 修改Sumerian Host的代码逻辑

以ThreeJS版本为例:

  • 找到原有调用Polly API的代码文件(如PollySpeechProvider.js),替换为调用自定义TTS服务的逻辑。
  • 将自定义TTS返回的音频和时间戳数据,转换为Polly Speechmarks的兼容格式:
    // 示例:将Mimic3时间戳转为Sumerian兼容格式
    const convertedSpeechmarks = mimic3Phonemes.map(phoneme => ({
      time: phoneme.start * 1000, // 转为毫秒单位
      type: 'viseme',
      value: mapPhonemeToViseme(phoneme.phoneme) // 自定义音素-口型映射函数
    }));
    
  • 将转换后的时间戳数据传入Sumerian Host的动画驱动模块(如LipSyncController.js),替换原有Polly Speechmarks的输入。

4. 调试与优化

  • 验证音素到VISIME的映射准确性,避免口型与发音不匹配。
  • 微调时间戳的偏移量,解决音频播放与口型动画的延迟问题。
  • 针对Web Speech API的boundary事件,可通过预拆分单词音节提升同步精度。
替代方案:使用通用唇形同步库

如果自定义时间戳难度较高,可直接集成通用唇形同步工具(如Rhino Speech-to-Visemes、Web版Wav2Lip):

  • 将自定义TTS生成的音频输入到工具中,直接获取驱动3D模型的混合形状动画数据。
  • 替换Sumerian Host原有的Polly驱动逻辑,改用该工具的输出控制模型口型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:10:33