如何在Amazon Polly中获取当前朗读的词?是否有类似AVSpeechSynthesizerDelegate的方法?
Amazon Polly实现朗读词高亮的方案
Amazon Polly没有直接对应AVSpeechSynthesizerDelegate.speechSynthesizer(_:willSpeakRangeOfSpeechString:utterance:)的原生委托方法,但可以通过**语音标记(Speech Marks)**功能实现相同的高亮效果,具体步骤如下:
- 调用Polly合成语音时,在请求中指定
SpeechMarkTypes参数为["word"],这样Polly会返回包含每个朗读词汇的时间戳和原文本偏移量的标记数据。 - 获取到合成的音频文件和对应的Speech Marks后,播放音频时监听播放进度,将当前播放时间与Speech Marks中的词开始/结束时间做匹配,定位到当前正在朗读的词汇。
- 根据Speech Marks里的文本偏移量(
start和end字段),在原文本中找到对应范围,执行屏幕高亮操作。
如果使用Polly的实时流式合成(如WebSocket流式接口),可以在流式响应中实时接收Speech Marks数据,无需等待完整音频生成,就能同步实现高亮效果。
内容的提问来源于stack exchange,提问作者Bawenang Rukmoko Pardian Putra
相关产品推荐
相关产品推荐

