use*_*702 6 text-to-speech speech-synthesis google-text-to-speech
我正在通过Google Cloud的文本到语音API生成语音,我想在说出单词时突出显示它们。
是否可以获取口语或句子的时间戳记?
小智 7
您可以使用SSML和v1beta1版本的 Google Cloud 文本转语音 API 来执行此操作: https: //cloud.google.com/text-to-speech/docs/reference/rest/v1beta1/text/synthesize#TimepointType
<mark>SSML 标签添加到文本中您想要时间戳的位置(可能在每个句子的末尾)。SSML_MARK。如果未设置此字段,则默认情况下不返回时间点。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)
有关可运行的示例,请参阅我对此问题的回答。
这个问题似乎很受欢迎,所以我想我应该分享一下我最终做了什么。此方法可能仅适用于英语或类似语言。
我首先根据任何导致说话中断的标点符号拆分文本。每个“句子”分别转换为语音。生成的音频文件末尾有看似随机的静音量,需要在加入它们之前将其删除,这可以使用 FFmpegsilencedetect过滤器来完成。然后,您可以以适当的间隙连接音频文件。近似的单词时间戳可以在句子内线性插值。
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |