仅在 SSML 中播放音频转化回复?
Only play audio conv reply in SSML?
我想知道是否可以不在我的 SSML 中包含文本,因为我的音频文件说 'Are you ready to play?',我不需要 google 助手本身的任何语音。
app.intent('Default Welcome Intent',(conv) =>{
const reply = `<speak>
<audio src="intro.mp3"></audio>
</speak>`;
conv.ask(reply);
});
上面的代码会产生错误,因为我没有任何文本输入。
为此找到了一个 hacky 解决方法,通过添加一个非常短的字符串,然后将它放在一个带有静音音量的韵律标签中:
app.intent('Default Welcome Intent',(conv) =>{
const reply = `<speak>
<audio src="intro.mp3"></audio>
<prosody volume ="silent">a</prosody> </speak>`;
conv.ask(reply);
});
这会播放音频但不会说出 'a' 文字。
您可能遇到的错误类似于
expected_inputs[0].input_prompt.rich_initial_prompt.items[0].simple_response: 'display_text' must be set or 'ssml' must have a valid display rendering.
正如它所指出的,在某些情况下,助手会在带有显示屏的设备(例如您的 phone)上运行,并且它应该显示与音频播放的内容基本相同的消息。
您有几个适合这些情况的选项。
首先,您可以在 <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
}) );
另一种欺骗方式,尝试使用空白 space 来避免出现 No Response 错误(...现在没有响应)
conv.ask(new SimpleResponse(" "))
const reply = `<speak>
<audio src="intro.mp3"></audio>
</speak>`;
conv.ask(reply);
我想知道是否可以不在我的 SSML 中包含文本,因为我的音频文件说 'Are you ready to play?',我不需要 google 助手本身的任何语音。
app.intent('Default Welcome Intent',(conv) =>{
const reply = `<speak>
<audio src="intro.mp3"></audio>
</speak>`;
conv.ask(reply);
});
上面的代码会产生错误,因为我没有任何文本输入。
为此找到了一个 hacky 解决方法,通过添加一个非常短的字符串,然后将它放在一个带有静音音量的韵律标签中:
app.intent('Default Welcome Intent',(conv) =>{
const reply = `<speak>
<audio src="intro.mp3"></audio>
<prosody volume ="silent">a</prosody> </speak>`;
conv.ask(reply);
});
这会播放音频但不会说出 'a' 文字。
您可能遇到的错误类似于
expected_inputs[0].input_prompt.rich_initial_prompt.items[0].simple_response: 'display_text' must be set or 'ssml' must have a valid display rendering.
正如它所指出的,在某些情况下,助手会在带有显示屏的设备(例如您的 phone)上运行,并且它应该显示与音频播放的内容基本相同的消息。
您有几个适合这些情况的选项。
首先,您可以在 <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
}) );
另一种欺骗方式,尝试使用空白 space 来避免出现 No Response 错误(...现在没有响应)
conv.ask(new SimpleResponse(" "))
const reply = `<speak>
<audio src="intro.mp3"></audio>
</speak>`;
conv.ask(reply);