我想通过 Google Cloud text-to-speech API使用SSML 标记来请求音频流中这些标记的时间。这些时间戳是必要的,以便为用户提供效果提示、单词/部分突出显示和反馈。
我发现这个问题是相关的,尽管这个问题是指每个单词的时间戳而不是 SSML<mark>标签。
以下 API 请求返回 OK,但显示缺少请求的标记数据。这是使用Cloud Text-to-Speech API v1.
{
"voice": {
"languageCode": "en-US"
},
"input": {
"ssml": "<speak>First, <mark name=\"a\"/> second, <mark name=\"b\"/> third.</speak>"
},
"audioConfig": {
"audioEncoding": "mp3"
}
}
Run Code Online (Sandbox Code Playgroud)
回复:
{
"audioContent":"//NExAAAAANIAAAAABcFAThYGJqMWA..."
}
Run Code Online (Sandbox Code Playgroud)
它只提供没有任何上下文信息的合成音频。
是否有我忽略的 API 请求可以公开有关这些标记的信息,例如IBM Watson和Amazon Polly 的情况?
我正在开发一个应用程序,其中我的 textview 由字符串和两个按钮组成。当我单击说话按钮时,文本会转换为语音。但是我想在语音运行时突出显示这个词。
这是我的文本到语音初始化:
textToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
result = textToSpeech.setLanguage(Locale.ENGLISH);
textToSpeech.setOnUtteranceProgressListener(new UtteranceProgressListener() {
@Override
public void onStart(String utteranceId) {
Log.d(utteranceId, "TTS start");}
@Override
public void onDone(String utteranceId) {
Log.d(utteranceId, "TTS done");}
@Override
public void onError(String utteranceId) {
});
} else {
Toast.makeText(getApplicationContext(), "Feature is not Available", Toast.LENGTH_SHORT).show();
}
}
});
Run Code Online (Sandbox Code Playgroud)
和其他代码:
private void speak() {
if (result == TextToSpeech.LANG_MISSING_DATA || result == …Run Code Online (Sandbox Code Playgroud)