Google Cloud Text-to-speech 单词时间戳
Google Cloud Text-to-speech word timestamps
我正在通过 Google Cloud 的文本转语音 API 生成语音,我想在朗读时突出显示单词。
有没有办法获取口语或句子的时间戳?
这个问题似乎很受欢迎,所以我想我应该分享一下我最后做了什么。此方法可能仅适用于英语或类似语言。
我首先根据任何导致说话中断的标点符号拆分文本。每个 "sentence" 单独转换为语音。生成的音频文件在末尾有看似随机的静音量,需要在加入它们之前将其删除,这可以使用 FFmpeg silencedetect
过滤器来完成。然后,您可以以适当的间隙加入音频文件。可以在句子中线性插入近似的单词时间戳。
您可以使用 SSML 和 v1beta1 版本的 Google Cloud text-to-speech API: https://cloud.google.com/text-to-speech/docs/reference/rest/v1beta1/text/synthesize#TimepointType
- 将
<mark>
SSML 标记添加到文本中您想要时间戳的位置(可能在每个句子的末尾)。
- 将 TimepointType 设置为
SSML_MARK
。如果不设置该字段,则默认不返回时间点。
Google 的文本转语音 API 在撰写本文时的 v1beta1
版本中支持此功能。
在 Python 中(例如)您需要更改导入自:
from google.cloud import texttospeech as tts
至:
from google.cloud import texttospeech_v1beta1 as tts
您必须使用 SSML,而不是纯文本,并在 XML.
中使用 <mark>
综合请求需要设置enable_time_pointing
标志。在 Python 中看起来像:
response = client.synthesize_speech(
request=tts.SynthesizeSpeechRequest(
...
enable_time_pointing=[
tts.SynthesizeSpeechRequest.TimepointType.SSML_MARK]
)
)
对于可运行的示例,see my answer on this question。
我正在通过 Google Cloud 的文本转语音 API 生成语音,我想在朗读时突出显示单词。
有没有办法获取口语或句子的时间戳?
这个问题似乎很受欢迎,所以我想我应该分享一下我最后做了什么。此方法可能仅适用于英语或类似语言。
我首先根据任何导致说话中断的标点符号拆分文本。每个 "sentence" 单独转换为语音。生成的音频文件在末尾有看似随机的静音量,需要在加入它们之前将其删除,这可以使用 FFmpeg silencedetect
过滤器来完成。然后,您可以以适当的间隙加入音频文件。可以在句子中线性插入近似的单词时间戳。
您可以使用 SSML 和 v1beta1 版本的 Google Cloud text-to-speech API: https://cloud.google.com/text-to-speech/docs/reference/rest/v1beta1/text/synthesize#TimepointType
- 将
<mark>
SSML 标记添加到文本中您想要时间戳的位置(可能在每个句子的末尾)。 - 将 TimepointType 设置为
SSML_MARK
。如果不设置该字段,则默认不返回时间点。
Google 的文本转语音 API 在撰写本文时的 v1beta1
版本中支持此功能。
在 Python 中(例如)您需要更改导入自:
from google.cloud import texttospeech as tts
至:
from google.cloud import texttospeech_v1beta1 as tts
您必须使用 SSML,而不是纯文本,并在 XML.
中使用<mark>
综合请求需要设置enable_time_pointing
标志。在 Python 中看起来像:
response = client.synthesize_speech(
request=tts.SynthesizeSpeechRequest(
...
enable_time_pointing=[
tts.SynthesizeSpeechRequest.TimepointType.SSML_MARK]
)
)
对于可运行的示例,see my answer on this question。