我正在使用AWS Lambda和NodeJS构建Alexa技能。我有两个问题:
1)我可以检索发言人的完整成绩单吗?
在我的Alexa手机应用程序中,我能够准确地阅读我所说的内容,但我想收集这些数据,以便我可以分析人们如何与我的技能交流。
使用Google语音API(demo here,spec here)等语音转文本工具,可以使用recognition.onresult()
之类的内容:
recognition.onresult = function(event) {
var interim_transcript = '';
for (var i = event.resultIndex; i < event.results.length; ++i) {
if (event.results[i].isFinal) {
final_transcript += event.results[i][0].transcript;
在我的Alexa应用程序中,当我问“唱生日快乐”时,你可以在这里看到它:
如何以编程方式捕获此内容?我想知道用户何时询问我没有想到的事情,收集这些失败和常见的语音请求,并根据它提高技能。
2)Alexa是否支持多种语音和多种语言(输入和输出)?
再次,看看Google Speech API,您可以看到它允许对语音输入和语音输出进行多次修改,使用多种语言,甚至是语速:
var utterance = new SpeechSynthesisUtterance();
utterance.rate = 0.7;
utterance.lang = "zh-CN";
Alexa是否提供这套控件?
答案 0 :(得分:4)
问题1:
目前不是。根据{{3}},音频剪辑不会提供给您服务的端点。或者,如果您提供硬件并利用Alexa语音服务,那么您将捕获音频。
问题2:
目前不是。 Alexa似乎只支持request syntax
答案 1 :(得分:1)
最新答案:
第一季度:仍然无法获取音频。但是您可以使用AMAZON.SearchQuery之类的内置槽来获取尚未指定的值。
第二季度:现在,您可以通过使用SSML中的voice
标签来使用不同的声音,例如:
<voice name="Kendra"><lang xml:lang="en-US">I want to tell you a secret.</lang></voice><voice name="Brian"><lang xml:lang="en-GB">Your secret is safe with me!</lang></voice>
以下语音支持各自的语言:
英语,英语(美国):常春藤,乔安娜,乔伊,贾斯汀,肯德拉,金伯利,马修,萨利
英语,英语(澳大利亚):妮可,罗素
英语,英语(en-GB):Amy,Brian,Emma
英语,印度语(en-IN):Aditi,Raveena
德语(de-DE):汉斯,马琳,维琪
西班牙语,卡斯蒂利亚语(es-es):孔奇塔,恩里克
意大利语(it-IT):卡拉,乔治(Giorgio)
日语(ja-JP):水木琢美
法语(fr-FR):席琳(Celine),李(Lea),马修(Mathieu)
答案 2 :(得分:1)
使用由我的同事Bryan Colligan创建的黑客。
黑客使用插槽类型CONTENT_LIST
和"value": "all"
捕获任何单词。通过创建包括多个捕获所有时隙的示例语音,例如"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX}"
,您可以相对轻松地捕获长度不同的句子。
注意:根据我的经验,亚马逊的“搜索查询”限于5-6个字。
警告:Amazon的转录非常糟糕,因此,如果您捕获的内容有些不可读,请不要感到惊讶。这种缺陷可能是亚马逊不透露其成绩单的原因之一。 Google在语音转文本方面遥遥领先。我敢肯定,将来亚马逊会在他们对技术更满意的情况下发布成绩单。
以下代码将连接多个插槽。可以将其放在您的lambda函数中。
let querySentance = '';
let wordSlots = ["WordI", "WordII", "WordIII", "WordIV", "WordV", "WordVI", "WordVII", "WordVIII", "WordIX", "WordX", "WordXI", "WordXII", "WordXIII", "WordXIV", "WordXV", "WordXVI", "WordXVII", "WordXVIII", "WordIXX", "WordXX", "WordXXI", "WordXXII", "WordXXIII", "WordXXIV", "WordXXV", "WordXXVI", "WordXXVII", "WordXXVIII", "WordIXXX", "WordXXX",];
wordSlots.forEach((word)=>{
let slot = this.event.request.intent.slots[word];
if (slot !== undefined && slot.value !== '' && slot.value !== '?' && slot.value !== null && slot.value !== undefined){
querySentance = querySentance+' '+slot.value;
}
});
以下交互模型使用CONTENT_LIST
和"value": "all"
捕获任何单词。
{
"interactionModel": {
"languageModel": {
"invocationName": "alpha voice",
"intents": [
{
"name": "AMAZON.CancelIntent",
"samples": [
"cancel"
]
},
{
"name": "AMAZON.HelpIntent",
"samples": [
"help"
]
},
{
"name": "AMAZON.StopIntent",
"samples": [
"stop"
]
},
{
"name": "OzIntent",
"slots": [
{
"name": "Query",
"type": "AMAZONSearchQuery"
},
{
"name": "WordI",
"type": "CONTENT_LIST"
},
{
"name": "WordII",
"type": "CONTENT_LIST"
},
{
"name": "WordIII",
"type": "CONTENT_LIST"
},
{
"name": "WordIV",
"type": "CONTENT_LIST"
},
{
"name": "WordV",
"type": "CONTENT_LIST"
},
{
"name": "WordVI",
"type": "CONTENT_LIST"
},
{
"name": "WordVII",
"type": "CONTENT_LIST"
},
{
"name": "WordVIII",
"type": "CONTENT_LIST"
},
{
"name": "WordIX",
"type": "CONTENT_LIST"
},
{
"name": "WordX",
"type": "CONTENT_LIST"
},
{
"name": "WordXI",
"type": "CONTENT_LIST"
},
{
"name": "WordXII",
"type": "CONTENT_LIST"
},
{
"name": "WordXIII",
"type": "CONTENT_LIST"
},
{
"name": "WordXIV",
"type": "CONTENT_LIST"
},
{
"name": "WordXV",
"type": "CONTENT_LIST"
},
{
"name": "WordXVI",
"type": "CONTENT_LIST"
},
{
"name": "WordXVII",
"type": "CONTENT_LIST"
},
{
"name": "WordXVIII",
"type": "CONTENT_LIST"
},
{
"name": "WordIXX",
"type": "CONTENT_LIST"
},
{
"name": "WordXX",
"type": "CONTENT_LIST"
},
{
"name": "WordXXI",
"type": "CONTENT_LIST"
},
{
"name": "WordXXII",
"type": "CONTENT_LIST"
},
{
"name": "WordXXIII",
"type": "CONTENT_LIST"
},
{
"name": "WordXXIV",
"type": "CONTENT_LIST"
},
{
"name": "WordXXV",
"type": "CONTENT_LIST"
},
{
"name": "WordXXVI",
"type": "CONTENT_LIST"
},
{
"name": "WordXXVII",
"type": "CONTENT_LIST"
},
{
"name": "WordXXVIII",
"type": "CONTENT_LIST"
},
{
"name": "WordIXXX",
"type": "CONTENT_LIST"
},
{
"name": "WordXXX",
"type": "CONTENT_LIST"
}
],
"samples": [
"{WordI}",
"{WordI} {WordII}",
"{WordI} {WordII} {WordIII}",
"{WordI} {WordII} {WordIII} {WordIV}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII} {WordXIV}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII} {WordXIV} {WordXV}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII} {WordXIV} {WordXV} {WordXVI}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII} {WordXIV} {WordXV} {WordXVI} {WordXVII}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII} {WordXIV} {WordXV} {WordXVI} {WordXVII} {WordXVIII}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII} {WordXIV} {WordXV} {WordXVI} {WordXVII} {WordXVIII} {WordIXX}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII} {WordXIV} {WordXV} {WordXVI} {WordXVII} {WordXVIII} {WordIXX} {WordXX}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII} {WordXIV} {WordXV} {WordXVI} {WordXVII} {WordXVIII} {WordIXX} {WordXX} {WordXXI}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII} {WordXIV} {WordXV} {WordXVI} {WordXVII} {WordXVIII} {WordIXX} {WordXX} {WordXXI} {WordXXII}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII} {WordXIV} {WordXV} {WordXVI} {WordXVII} {WordXVIII} {WordIXX} {WordXX} {WordXXI} {WordXXII} {WordXXIII}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII} {WordXIV} {WordXV} {WordXVI} {WordXVII} {WordXVIII} {WordIXX} {WordXX} {WordXXI} {WordXXII} {WordXXIII} {WordXXIV}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII} {WordXIV} {WordXV} {WordXVI} {WordXVII} {WordXVIII} {WordIXX} {WordXX} {WordXXI} {WordXXII} {WordXXIII} {WordXXIV} {WordXXV}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII} {WordXIV} {WordXV} {WordXVI} {WordXVII} {WordXVIII} {WordIXX} {WordXX} {WordXXI} {WordXXII} {WordXXIII} {WordXXIV} {WordXXV} {WordXXVI}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII} {WordXIV} {WordXV} {WordXVI} {WordXVII} {WordXVIII} {WordIXX} {WordXX} {WordXXI} {WordXXII} {WordXXIII} {WordXXIV} {WordXXV} {WordXXVI} {WordXXVII}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII} {WordXIV} {WordXV} {WordXVI} {WordXVII} {WordXVIII} {WordIXX} {WordXX} {WordXXI} {WordXXII} {WordXXIII} {WordXXIV} {WordXXV} {WordXXVI} {WordXXVII} {WordXXVIII}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII} {WordXIV} {WordXV} {WordXVI} {WordXVII} {WordXVIII} {WordIXX} {WordXX} {WordXXI} {WordXXII} {WordXXIII} {WordXXIV} {WordXXV} {WordXXVI} {WordXXVII} {WordXXVIII} {WordIXXX}",
"{WordI} {WordII} {WordIII} {WordIV} {WordV} {WordVI} {WordVII} {WordVIII} {WordIX} {WordX} {WordXI} {WordXII} {WordXIII} {WordXIV} {WordXV} {WordXVI} {WordXVII} {WordXVIII} {WordIXX} {WordXX} {WordXXI} {WordXXII} {WordXXIII} {WordXXIV} {WordXXV} {WordXXVI} {WordXXVII} {WordXXVIII} {WordIXXX} {WordXXX}"
]
},
{
"name": "AMAZON.NavigateHomeIntent",
"samples": [
"navigate home"
]
}
],
"types": [
{
"name": "AMAZONSearchQuery",
"values": [
{
"name": {
"value": "all"
}
}
]
},
{
"name": "CONTENT_LIST",
"values": [
{
"name": {
"value": "all"
}
}
]
}
]
}
}
}
注意:我使用此代码来捕获所有技能。这是唯一的意图。如果您正在寻找其他目的,以便该目的可以检测到出现的话语,建议您尝试一下。创建具有已定义话语的意图,然后查看亚马逊是否会选择它,然后再返回此自由格式捕获。
如果成功,请在下面评论,我将更新答案。