只能在SSML中播放音频转发回复?

问题描述 投票:1回答:3

我想知道是否有可能不在我的SSML中包含文本,因为我的音频文件说“你准备好了吗?”,我不需要谷歌助理本身的任何演讲。

app.intent('Default Welcome Intent',(conv) =>{

  const reply = `<speak>
  <audio src="intro.mp3"></audio>
   </speak>`;
  conv.ask(reply);

});

上面的代码产生错误,因为我没有任何文本输入。

actions-on-google
3个回答
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
投票

通过添加一个非常短的字符串,然后将其放入带有静音音量的韵律标签中,找到了一个讨厌的工作:

app.intent('Default Welcome Intent',(conv) =>{
  const reply = `<speak>
  <audio src="intro.mp3"></audio>
  <prosody volume ="silent">a</prosody> </speak>`;
  conv.ask(reply);

});

这播放音频并且不会说'a'文本。


0
投票

另一种欺骗方法,尝试使用空格来获取无响应错误(...现在没有响应)

conv.ask(new SimpleResponse(" "))
const reply = `<speak>
  <audio src="intro.mp3"></audio>
   </speak>`;
conv.ask(reply);
© www.soinside.com 2019 - 2024. All rights reserved.