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

AWS Polly将're-record'读为're minus record',求SSML解决方案

解决AWS Polly中're-record'被误读为“re minus record”的问题

问题根源

你已经定位到核心原因:启用globalenglish词典时,Polly会错误将连字符解析为减号,导致发音偏差。

SSML解决方案

可以通过SSML标签强制指定正确发音,绕过词典的错误映射,以下是两种可行方案:

1. 使用<phoneme>标签指定精准音标

直接给re-record标注标准音标,让Polly按照指定发音朗读,完全忽略词典的错误解析规则。
示例修改:
将文本中的re-record替换为:

<phoneme alphabet="ipa" ph="/ˌriːˈrekərd/">re-record</phoneme>

(如果需要英式发音,可替换为/ˌriːˈrekɔːd/)

对应到你的Kotlin代码中,可提前对文本做替换处理:

private fun getSignedUrl(text: String, speechRate: Int): String {
    val processedText = text.replace("re-record", "<phoneme alphabet=\"ipa\" ph=\"/ˌriːˈrekərd/\">re-record</phoneme>")
    val synthesizeSpeechPresignRequest = SynthesizeSpeechPresignRequest()
        .withOutputFormat(OutputFormat.Mp3)
        .withText("<speak><prosody rate=\"${speechRate}%\">$processedText</prosody></speak>")
        .withTextType("ssml")
        .withVoiceId(voices[speechGender].id)
        .withEngine(Engine.Neural)
        .withLexiconNames("globalenglish")

    return client?.getPresignedSynthesizeSpeechUrl(synthesizeSpeechPresignRequest)?.toString() ?: ""
}

2. 使用<sub>标签替换为可读拆分表达

如果不需要精准音标,也可以用<sub>标签将re-record替换为Polly能正确识别的拆分形式:

<sub alias="re record">re-record</sub>

这种方法更简洁,适合对发音精度要求不高的场景。

额外建议

如果re-record在你的应用中高频出现,且你拥有globalenglish词典的编辑权限,也可以直接修改词典条目,添加该词的正确发音映射,从根源解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 18:42:33