我已经尝试了一段时间让语音或音素发音与 google 的文本到语音一起使用,但未能使其始终如一地执行。
我通过使用 https://tophonetics.com/ 获得了有限的结果 它翻译为“牛疯了”。到“ðə kaʊ wɛnt mæd”。但“the”“ðə” 听不见。当我尝试“ðɪs ɪz səm fəˈnɛtɪk tɛkst ˈɪnˌpʊt”时。
是否有任何 SSML 代码来定义文本的语音块, 可以是这种格式“D,Is Iz sVm f@n'EtIk t'Ekst 'InpUt” 可以代替“ðɪs ɪz səm fəˈnɛtɪk tɛkst ˈɪnˌpʊt” ”
Google 文本转语音至少从 2021 年春季开始支持
<phoneme>
标签。
但是,还有很多潜在的问题需要克服:
<phoneme>
标签。 (它与<voice>
标签的作用相同,如这里所指出的)<phoneme alphabet="ipa" ph="ˌmænɪˈtoʊbə">manitoba</phoneme>
不适用于除 en-US
之外的任何英语变体,因为所有其他版本都缺少 "o"
或 "oʊ"
音素。v1beta1
API(我可以确认它正在工作)或者版本 v1
是否也可以。SSML 标签
<phoneme>
可以满足您的目的。
不幸的是,Google Cloud 文本转语音目前不支持。 文档中列出了 Google Cloud 的可用 SSML 标签子集。
<phoneme>
标签不在此列表中。使用 Google Cloud 的文本转语音演示进行的实验证实音素被忽略。标签的内容被作为普通文本读取,正如@Trevor 在评论中所评论的那样。
但是,Microsoft Azure 文本转语音和 Amazon Polly 支持
<phoneme>
标签。在这两种情况下,可用的音素仅限于正在使用的语言中可用的音素(请参阅此处了解 Azure 和此处了解 Polly)。 Azure 文档并未 100% 明确排除语言外音素,但使用 Azure 文本转语音演示 进行的实际实验证实它们无法正常工作。在某些情况下,它们至少似乎被所用语言中最接近的可用等效项所取代。
仅限于一种语言的音素严重限制了音素标签的实用性。例如,您无法使用该功能在第二语言中嵌入正确发音的内容,因为第二语言通常具有一些第一语言中不可用的音素。具体语言对中,每种语言都有一些另一种语言中没有的音素,包括英语/德语、西班牙语/德语、英语/西班牙语。
日语特别确认。谷歌示例代码是错误的。
应该是:
<phoneme alphabet="yomigana" ph"^はし">端</phoneme>
<phoneme alphabet="yomigana" ph="^は!し">箸</phoneme>
<phoneme alphabet="yomigana" ph="^はし!">橋</phoneme>
现在文档(参考:https://cloud.google.com/text-to-speech/docs/phonemes#japanese_yomigana):
<phoneme alphabet="yomigana" phoneme="^はし">端</phoneme>
<phoneme alphabet="yomigana" phoneme="^は!し">箸</phoneme>
<phoneme alphabet="yomigana" phoneme="^はし!">橋</phoneme>