不同的 <prosody> ssml 值在 Google Text to Speech 中生成相同的音频

Posted

技术标签:

【中文标题】不同的 <prosody> ssml 值在 Google Text to Speech 中生成相同的音频【英文标题】:Different <prosody> ssml values generate the same audio in Google Text to Speech 【发布时间】:2019-09-18 23:01:37 【问题描述】:

在使用 WaveNet 语音时使用 ssml 时无法生成不同的音频波。

<prosody rate="slow" pitch="-2st">Can you hear me now?</prosody>
<prosody rate="medium" pitch="1st">Can you hear me now?</prosody>
<prosody rate="high" pitch="5st">Can you hear me now?</prosody>

使用强调标签产生相同的结果。

我们正在使用来自 Google Cloud Text-to-Speech 的 Python API 来请求音频生成。

我想在每个样本中听到不同的声音强度。

请注意,我们也尝试对 " 进行缩放,但这对生成的音频没有影响。

https://issuetracker.google.com/issues/131618213

【问题讨论】:

如果您包含所有相关代码,而不是“仅”包含您认为可能失败的代码,则更容易为您提供帮助。 嗨擦,感谢您的关注。我们使用 TTS UI 对其进行测试,使用我们在 2019 年提供的韵律文本。我们的 Python 代码产生了与 TTS UI 相同的结果。 不幸的是管理层决定他们不喜欢声音的声音,所以我们解决了重新编码人类的问题。由于他们的问题可能会得到解决,因为我们不再允许对此进行研究,所以我们将项目存档。 【参考方案1】:

我不知道 Python sdk 是什么样子,但我目前正在使用他们的 NodeJs sdk 进行 TTS。

看来,这些韵律属性(速率、音量、音高),而不是设置和传递您的 ssml 文本,应该直接在将发送到 Google TTS api 的请求对象中进行配置。

【讨论】:

【参考方案2】:

使用TTS UI,您可以轻松测试不同的配置。

导出为 JSON 后,您还可以查看 API 调用的方式。

在这种情况下:

Request URL
https://texttospeech.googleapis.com/v1beta1/text:synthesize
Request body

  "audioConfig": 
    "audioEncoding": "LINEAR16",
    "pitch": 0,
    "speakingRate": 1
  ,
  "input": 
    "ssml": "<speak><prosody rate='70%'> The slings and arrows of outrageous fortune. Or to take arms against a sea of troubles And by opposing end them.</prosody> </speak>"
  ,
  "voice": 
    "languageCode": "en-US",
    "name": "en-US-Wavenet-G"
  

如果不查看您在 API 调用中使用的完整代码,就很难看出您可能遇到的问题。

【讨论】:

以上是关于不同的 <prosody> ssml 值在 Google Text to Speech 中生成相同的音频的主要内容,如果未能解决你的问题,请参考以下文章

Alexa 技能 SSML 最大长度

如何从 Google Cloud text-to-speech API 获取 SSML <mark> 时间戳

在同一个 SSML 中混合语言

无法将 IPA 音素与 Google Home SSML 一起使用

Speak Text, Speak SSML

错误:无法解析提供的 SSML。提供的文本无效 SSML