谷歌云文字转语音单词时间戳

22

我正在使用谷歌云的文本转语音API生成语音,并希望在播放时突出显示单词。

是否有一种方法可以获取所说单词或句子的时间戳?


我认为目前还不能使用Google Cloud实现这个功能,但如果您使用的是Android设备和Google TextToSpeech引擎,您可以尝试以下方法:https://dev59.com/57jna4cB1Zd3GeqP70tt - Nerdy Bunz
你可以将句子分解为单词作为标记,并通过自己的代码创建或突出显示这些单词。你还需要正确配置设置,可能需要使用线程同时发送多个单词。请问你能分享一下代码吗? - Akash Badam
3个回答

7

我在想,如果有人想要提供单词高亮功能,这个方法是否可行?在每个单词旁边打标记是否实用? - Bret

4

在撰写本文时,Google的语音合成API已经支持v1beta1版本。

举个例子,在Python中,您需要更改导入方式:

from google.cloud import texttospeech as tts

to:

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]
        )
    )

要运行的示例,请查看我在此问题上的答案


1
这需要被突出显示,非常感谢! - Julien K.

2
这个问题似乎已经变得相当受欢迎了,所以我想分享一下我的做法。这种方法可能只适用于英语或类似的语言。
首先,我将文本按照任何导致语音中断的标点符号进行分割。每个“句子”都单独转换成语音。生成的音频文件在结尾处似乎有随机数量的静默,需要在将它们连接起来之前将其删除,这可以使用FFmpeg的silencedetect过滤器完成。然后您可以使用适当的间隔连接音频文件。在句子内可以线性插值近似词时间戳。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接