Google Cloud文字转语音字时间戳

use*_*702 6 text-to-speech speech-synthesis google-text-to-speech

我正在通过Google Cloud的文本到语音API生成语音,我想在说出单词时突出显示它们。

是否可以获取口语或句子的时间戳记?

小智 7

您可以使用SSMLv1beta1版本的 Google Cloud 文本转语音 API 来执行此操作: https: //cloud.google.com/text-to-speech/docs/reference/rest/v1beta1/text/synthesize#TimepointType

  1. <mark>SSML 标签添加到文本中您想要时间戳的位置(可能在每个句子的末尾)。
  2. 将 TimepointType 设置为SSML_MARK。如果未设置此字段,则默认情况下不返回时间点。


And*_*w E 5

v1beta1在撰写本文时,Google 的文本转语音 API 在发布版本中支持此功能。

在 Python 中(作为示例),您需要更改导入:

from google.cloud import texttospeech as tts
Run Code Online (Sandbox Code Playgroud)

到:

from google.cloud import texttospeech_v1beta1 as tts
Run Code Online (Sandbox Code Playgroud)

您必须使用 SSML,而不是纯文本,并<mark>在 XML 中使用 's。

合成请求需要enable_time_pointing设置标志。在 Python 中,这看起来像:

    response = client.synthesize_speech(
        request=tts.SynthesizeSpeechRequest(
            ...
            enable_time_pointing=[
                tts.SynthesizeSpeechRequest.TimepointType.SSML_MARK]
        )
    )
Run Code Online (Sandbox Code Playgroud)

有关可运行的示例,请参阅我对此问题的回答


use*_*702 3

这个问题似乎很受欢迎,所以我想我应该分享一下我最终做了什么。此方法可能仅适用于英语或类似语言。

我首先根据任何导致说话中断的标点符号拆分文本。每个“句子”分别转换为语音。生成的音频文件末尾有看似随机的静音量,需要在加入它们之前将其删除,这可以使用 FFmpegsilencedetect过滤器来完成。然后,您可以以适当的间隙连接音频文件。近似的单词时间戳可以在句子内线性插值。