我想知道是否有可能不在我的SSML中包含文本,因为我的音频文件说“你准备好了吗?”,我不需要谷歌助理本身的任何演讲。
app.intent('Default Welcome Intent',(conv) =>{
const reply = `<speak>
<audio src="intro.mp3"></audio>
</speak>`;
conv.ask(reply);
});
上面的代码产生错误,因为我没有任何文本输入。
你可能得到的错误是这样的
expected_inputs [0] .input_prompt.rich_initial_prompt.items [0] .simple_response:'display_text'必须设置或'ssml'必须具有有效的显示渲染。
正如它所指出的,有些情况下,智能助理在带有显示器的设备(例如您的手机)上运行,并且它应该显示与音频播放实质上相同的消息。
您有几个适合这些情况的选项。
首先,您可以在<audio>
标签内提供可选文本,该文本将被显示,但不会被读出(除非由于某种原因无法加载音频文件)。
<speak>
<audio src="intro.mp3">Are you ready to play?</audio>
</speak>
或者,您可以提供单独的字符串来表示您所说的SSML版本和纯文本版本。
const ssml = `<speak><audio src="intro.mp3"></audio></speak>`;
const text = "Are you ready to play?";
conv.ask( new SimpleResponse({
speech: ssml,
text: text
}) );
通过添加一个非常短的字符串,然后将其放入带有静音音量的韵律标签中,找到了一个讨厌的工作:
app.intent('Default Welcome Intent',(conv) =>{
const reply = `<speak>
<audio src="intro.mp3"></audio>
<prosody volume ="silent">a</prosody> </speak>`;
conv.ask(reply);
});
这播放音频并且不会说'a'文本。
另一种欺骗方法,尝试使用空格来获取无响应错误(...现在没有响应)
conv.ask(new SimpleResponse(" "))
const reply = `<speak>
<audio src="intro.mp3"></audio>
</speak>`;
conv.ask(reply);