是否可以与背景音频对话?
Is dialog with background audio possible?
我学习 dialogFlow 和程序化 webhook 来处理强度和响应的目标之一是看看是否可以创建音频丰富的测验。
在这个测验中有一个部分,我希望有多个 questions/responses 同时播放连续的音频背景。这可能吗?Google 智能助理或 Google 智能音箱在等待用户输入时必须保持静音吗?
此外,如果上述方法可行,是否也可以在由某种事件触发的音频背景之间进行交叉淡入淡出?那等于换了个风景没interruption/silence.
有多种方法可以解决这个问题,具体取决于您的具体需求和限制。并非所有事情都是完全可能的,但你或许可以接近。
带背景音频的对话框
最简单的方法是使用 Google's version of SSML with parallel elements 和 <par>
和 <media>
标签。 (但请注意,如果您希望能够在其他地方使用它们,这些是非标准标签。)有了这个,您将有一个 "track" 用于对话,一个用于音频。它可能看起来像这样:
<speak><par>
<media xml:id="track-0" begin="0s" soundLevel="+0dB">
<audio src="https://actions.google.com/sounds/v1/crowds/crowd_talking.ogg" >crowd talking</audio>
</media>
<media xml:id="track-1" begin="0.75s" soundLevel="+0dB">
<seq>
<media>
<speak><p>Well, hello there</p></speak>
</media>
<media begin="2.0s">
<speak><p>How are you?</p></speak>
</media>
</seq>
</media>
</par></speak>
有没有简单的设计方法?
您可能想查看 Nightingale Visual SSML Editor which has also been released as an open source project。它可以帮助您入门,但您需要自己调整 SSML。
交叉淡入淡出呢?
好的!只需表明您正在淡出一个音轨,然后淡化另一个音轨,从另一个音轨末尾的某个偏移量开始。
<speak><par>
<media xml:id="track-0" begin="0s" fadeOutDur="6s">
<audio src="https://actions.google.com/sounds/v1/alarms/digital_watch_alarm_long.ogg" >digital watch alarm long</audio>
</media>
<media xml:id="track-1" begin="track-0.end-6s" fadeInDur="6s">
<audio src="https://actions.google.com/sounds/v1/human_sounds/baby_cry_long.ogg" >baby cry long</audio>
</media>
</par></speak>
我可以在麦克风打开并听用户讲话时播放这个吗?
嗯...不。不适用于 SSML。
如果您将此视为与某人的对话,我们通常需要音频提示来知道何时说话。提出问题然后安静地 space 回复是一个很好的方法。面对面 - 我们有其他提示(例如,我们可以看到对方暂停),但如果我们只有音频,我们就只有沉默。
Google 助理基于这种对话模型工作,因此希望在轮到用户说话时让用户清楚。
您可以争辩说,对于某些类型的 "conversations",使用不同的音频提示来提示用户是正常的。你是对的。但是助手需要是一个通用的助手。
那我该怎么做呢?
由于您要进行测验,因此可以使用 Interactive Canvas to create a page with HTML and JavaScript. With this, you can use an <audio>
tag or the MediaStream JavaScript API 来创建背景音频。有了这个,您 可以 在该媒体仍在播放时打开麦克风,但是没有任何事件可以让您知道麦克风何时打开,因此您可以隐藏音频,这是有点缺点。
这解决了音频提示问题,因为当麦克风打开时会有视觉提示。
您还可以使用 SSML <mark>
标签触发 JavaScript 中的事件,这样您就可以知道来自服务器的 SSML 何时开始、结束或到达音频流中的其他点。
如果有视觉提示,我可以在智能音箱上使用互动 Canvas 吗?
嗯……不。
但是您可以做的是使用runtime surface capabilities确定是否支持交互式Canvas。
- 如果是 - 使用它(可能与 SSML 一起使用)。
- 如果没有,请使用 SSML 方法。
我学习 dialogFlow 和程序化 webhook 来处理强度和响应的目标之一是看看是否可以创建音频丰富的测验。
在这个测验中有一个部分,我希望有多个 questions/responses 同时播放连续的音频背景。这可能吗?Google 智能助理或 Google 智能音箱在等待用户输入时必须保持静音吗?
此外,如果上述方法可行,是否也可以在由某种事件触发的音频背景之间进行交叉淡入淡出?那等于换了个风景没interruption/silence.
有多种方法可以解决这个问题,具体取决于您的具体需求和限制。并非所有事情都是完全可能的,但你或许可以接近。
带背景音频的对话框
最简单的方法是使用 Google's version of SSML with parallel elements 和 <par>
和 <media>
标签。 (但请注意,如果您希望能够在其他地方使用它们,这些是非标准标签。)有了这个,您将有一个 "track" 用于对话,一个用于音频。它可能看起来像这样:
<speak><par>
<media xml:id="track-0" begin="0s" soundLevel="+0dB">
<audio src="https://actions.google.com/sounds/v1/crowds/crowd_talking.ogg" >crowd talking</audio>
</media>
<media xml:id="track-1" begin="0.75s" soundLevel="+0dB">
<seq>
<media>
<speak><p>Well, hello there</p></speak>
</media>
<media begin="2.0s">
<speak><p>How are you?</p></speak>
</media>
</seq>
</media>
</par></speak>
有没有简单的设计方法?
您可能想查看 Nightingale Visual SSML Editor which has also been released as an open source project。它可以帮助您入门,但您需要自己调整 SSML。
交叉淡入淡出呢?
好的!只需表明您正在淡出一个音轨,然后淡化另一个音轨,从另一个音轨末尾的某个偏移量开始。
<speak><par>
<media xml:id="track-0" begin="0s" fadeOutDur="6s">
<audio src="https://actions.google.com/sounds/v1/alarms/digital_watch_alarm_long.ogg" >digital watch alarm long</audio>
</media>
<media xml:id="track-1" begin="track-0.end-6s" fadeInDur="6s">
<audio src="https://actions.google.com/sounds/v1/human_sounds/baby_cry_long.ogg" >baby cry long</audio>
</media>
</par></speak>
我可以在麦克风打开并听用户讲话时播放这个吗?
嗯...不。不适用于 SSML。
如果您将此视为与某人的对话,我们通常需要音频提示来知道何时说话。提出问题然后安静地 space 回复是一个很好的方法。面对面 - 我们有其他提示(例如,我们可以看到对方暂停),但如果我们只有音频,我们就只有沉默。
Google 助理基于这种对话模型工作,因此希望在轮到用户说话时让用户清楚。
您可以争辩说,对于某些类型的 "conversations",使用不同的音频提示来提示用户是正常的。你是对的。但是助手需要是一个通用的助手。
那我该怎么做呢?
由于您要进行测验,因此可以使用 Interactive Canvas to create a page with HTML and JavaScript. With this, you can use an <audio>
tag or the MediaStream JavaScript API 来创建背景音频。有了这个,您 可以 在该媒体仍在播放时打开麦克风,但是没有任何事件可以让您知道麦克风何时打开,因此您可以隐藏音频,这是有点缺点。
这解决了音频提示问题,因为当麦克风打开时会有视觉提示。
您还可以使用 SSML <mark>
标签触发 JavaScript 中的事件,这样您就可以知道来自服务器的 SSML 何时开始、结束或到达音频流中的其他点。
如果有视觉提示,我可以在智能音箱上使用互动 Canvas 吗?
嗯……不。
但是您可以做的是使用runtime surface capabilities确定是否支持交互式Canvas。
- 如果是 - 使用它(可能与 SSML 一起使用)。
- 如果没有,请使用 SSML 方法。