【问题标题】:How to use Phonetic or Phoneme pronunciation in google text to speech?如何在谷歌文本到语音中使用语音或音素发音?
【发布时间】:2021-10-06 16:21:34
【问题描述】:
一段时间以来,我一直在尝试使用 google's text to speech 使用语音或音素发音,但未能使其始终如一地执行。
我已经设法通过使用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 Cloud 上关于文本到语音使用音素的文档似乎仅限于番茄示例,但是当我测试时,语音似乎正在阅读“番茄”这个词,而不是阅读音素当我改变番茄这个词但保留音素 tom 时,出于某种原因。 Google Cloud 的平台似乎没有返回音素的声音
标签:
text-to-speech
google-text-to-speech
【解决方案1】:
有 SSML 标签<phoneme> 可以满足您的目的。
很遗憾,Google Cloud Text-to-speech 目前不支持此功能。可用于 Google Cloud 的 SSML 标记子集列在 documentation 中。 <phoneme> 标签不在此列表中。使用 Google Cloud 的text-to-speech-demo 进行的实验确认音素被忽略。正如@Trevor 在 cmets 中已经指出的那样,标签的内容被作为普通文本读取。
但是,Microsoft Azure Text-to-Speech 和 Amazon Polly 支持 <phoneme> 标签。在这两种情况下,可用的音素都仅限于所用语言中可用的音素(参见here for Azure 和here for Polly)。 Azure 文档并未 100% 明确排除语言外音素,但对 Azure Text-to-Speech demo 的实际实验证实它们无法正常工作。在某些情况下,它们至少似乎被所用语言中最接近的可用等价物所取代。
仅限于一种语言的音素严重限制了音素标签的实用性。例如,您不能使用该功能在第二语言中嵌入正确发音的内容,因为第二语言通常会有一些第一语言中不可用的音素。每种语言都有一些在另一种语言中没有的音素的具体语言对是英语/德语、西班牙语/德语、英语/西班牙语。
【解决方案2】:
Google Text-to-Speech 至少从 2021 年春季开始支持 <phoneme> 标签。
但是,有很多潜在的问题需要克服:
-
demo page 在客户端到达 API 之前就过滤掉了客户端的
<phoneme> 标记。 (正如here 指出的那样,<voice> 标签的作用相同)
- 与 Microsoft Azure 文本转语音(有关详细信息,请参阅 other answer)一样,每种语言仅支持可以使用的 limited set of phonemes(“字母”)。
- 如果您使用不受支持的标签,则完全忽略音素标签而不会发出任何警告。因此官方示例
<phoneme alphabet="ipa" ph="ˌmænɪˈtoʊbə">manitoba</phoneme> 不适用于除en-US 之外的任何英文变体,因为所有其他变体都缺少"o" 或"oʊ" 音素。
- 不清楚您是否需要使用
v1beta1 API(我可以确认它正在工作)或者版本v1 是否也可以。