我想知道是否可以在SSML中不包含文本,因为我的音频文件显示“您准备好播放了吗?”,所以我不需要Google助手本身的任何讲话。
app.intent('Default Welcome Intent',(conv) =>{
const reply = `<speak>
<audio src="intro.mp3"></audio>
</speak>`;
conv.ask(reply);
});
由于我没有任何文本输入,因此上面的代码产生错误。
答案 0 :(得分:2)
您可能遇到的错误是
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
}) );
答案 1 :(得分:1)
为此添加了一个很短的字符串,然后将其放入带有静音音量的prosody标签中,从而解决了这一问题:
app.intent('Default Welcome Intent',(conv) =>{
const reply = `<speak>
<audio src="intro.mp3"></audio>
<prosody volume ="silent">a</prosody> </speak>`;
conv.ask(reply);
});
这会播放音频,但不会说'a'文本。
答案 2 :(得分:0)
另一种欺骗方法,请尝试使用空格不要出现无响应错误(...现在没有响应)
conv.ask(new SimpleResponse(" "))
const reply = `<speak>
<audio src="intro.mp3"></audio>
</speak>`;
conv.ask(reply);