AI语音技能云开发 - “我在,你说”

简介: 与语音技能的简单对话

上一篇中我们已经创建了一个语音技能,实现了“欢迎”-> “Hello World”


这一篇中,我们要创建一个查询天气的意图,实现“语音精灵”-> “我在,你说,我可以帮你查询天气”


一、 配置语音交互模型

1.1 新建一个“意图”

编辑已经创建好的语音技能,选择“语音交互模块”,点击“创建意图”,创建一个“天气查询意图

image.png

填写“意图名称”和“意图标识

image.png

1.2 配置单轮对话的语料
  • 语料:是指当用户为了达到目的向音箱说出的语音指令。
  • 单轮对话语料的含义是:当用户说这句话时,就可以确认用户就是希望使用这个意图的功能。
  • 语料的泛化:用户不可能只按照一句语料来说,所以相似的表达也应该配置成语料,这叫做语料的泛化。

如:“杭州今天天气怎么样”,“杭州明天天气怎么样”,“杭州今天天气如何”,“北京天气怎么样”

配置“单轮对话表达”,输入表达语句,回车添加,添加完成后,提交

image.png

1.3 创建配置实体

我们在进行配置意图语料时,天气查询涉及到杭州(城市)、今天(时间)这两个参数,而我们在配置中又不可能将所有城市和时间穷举。这时,通过实体就可以帮助我们很好的解决这两个参数的配置。


创建一个自定义实体,填写实体名称实体标识名,并添加实体值,如:北京、杭州、上海等,中间以空格分隔,回车保存

image.png

image.png

image.png

创建一个时间公共实体(sys.date),点击引用公共实体,搜索sys.date回车,打开引用按钮

image.png

image.png

以下就是我们所配置的实体列表,一个城市自定义实体,一个日期公共实体

image.png

1.4 进行实体标注

编辑意图中的天气查询,选中“今天”,在弹框中选择我们实体中的sys.date。同理,选中“杭州”,在弹框中选择实体city

image.png

image.png

1.5 参数默认及参数追问

有时,我们会这么问“杭州天气怎么样”,相当于默认日期为“今天”,此时我们可以这样配置

image.png

有时,我们也会这么问“今天天气怎么样”,我们就不知道要查询的是哪个城市的天气,此时,我们就可以配置追问,在城市参数中点击编辑,添加追问语句,“您要查询哪个城市的天气”

image.png

1.6 配置多轮对话

有时,在问完,“杭州天气怎么样”之后,会接着问“那明天呢”,“那北京呢”等等,添加多轮对话编辑,并进行实体标注

image.png

二、 开发部署后端服务

2.1 在后端服务模块,点击左侧服务部署,点击前往开发按钮前往CloudIDE平台开发技能

image.png

2.2 在CloudIDE平台进行代码修改
packagecom.alibaba.ailabs;
importcom.alibaba.ailabs.common.AbstractEntry;
importcom.alibaba.da.coin.ide.spi.meta.AskedInfoMsg;
importcom.alibaba.da.coin.ide.spi.meta.ExecuteCode;
importcom.alibaba.da.coin.ide.spi.meta.ResultType;
importcom.alibaba.da.coin.ide.spi.standard.ResultModel;
importcom.alibaba.da.coin.ide.spi.standard.TaskQuery;
importcom.alibaba.da.coin.ide.spi.standard.TaskResult;
importcom.alibaba.fastjson.JSON;
importcom.aliyun.fc.runtime.Context;
importjava.util.ArrayList;
importjava.util.List;
importjava.util.Map;
importjava.util.stream.Collectors;
/*** @Description 天猫精灵技能函数入口,FC*              handler:com.alibaba.ailabs.GenieEntry::handleRequest* @Version 1.0**/publicclassGenieEntryextendsAbstractEntry {
@OverridepublicResultModel<TaskResult>execute(TaskQuerytaskQuery, Contextcontext) {
context.getLogger().info("taskQuery: "+JSON.toJSONString(taskQuery));
// ResultModel<TaskResult> res = new ResultModel<>();TaskResulttaskResult=newTaskResult();
// 从请求中获取意图参数以及参数值Map<String, String>paramMap=taskQuery.getSlotEntities().stream().collect(Collectors.toMap(slotItem->slotItem.getIntentParameterName(), slotItem->slotItem.getOriginalValue()));
//处理名称为 welcome 的意图if ("welcome".equals(taskQuery.getIntentName())) {
taskResult.setReply("我在,你说,我可以帮你查询天气");
//处理名称为 weather 的意图        } elseif ("weather".equals(taskQuery.getIntentName())) {
//weather 意图中 date 参数勾选了必选,请求数据中一定会携带 date 参数,只需要判断 city 参数有没有。if (paramMap.get("city") ==null) {
taskResult.setReply("您要查询哪个城市的天气?");
returnaskReply(taskResult, "city", taskQuery.getIntentId());
            }
//TODO 根据参数获取天气信息,这里使用假数据替代taskResult.setReply(paramMap.get("city") +paramMap.get("sys.date(公共实体)") +"天气 晴");
//处理名称为 ari_quality 的意图        }else {
taskResult.setReply("请检查意图名称是否正确,或者新增的意图没有在代码里添加对应的处理分支。");
        }
returnreply(taskResult);
      }
/*** 结束对话的回复,回复后音箱闭麦*/privateResultModel<TaskResult>reply(TaskResulttaskResult) {
ResultModel<TaskResult>res=newResultModel<>();
taskResult.setExecuteCode(ExecuteCode.SUCCESS);
taskResult.setResultType(ResultType.RESULT);
res.setReturnCode("0");
res.setReturnValue(taskResult);
returnres;
    }
/*** 指定追问参数,音箱自动开麦,用户的回答优先匹配追问的参数*/privateResultModel<TaskResult>askReply(TaskResulttaskResult, StringparameterName, LongintentId) {
ResultModel<TaskResult>res=newResultModel<>();
taskResult.setExecuteCode(ExecuteCode.SUCCESS);
taskResult.setResultType(ResultType.ASK_INF);
AskedInfoMsgaskedInfoMsg=newAskedInfoMsg();
askedInfoMsg.setIntentId(intentId);
askedInfoMsg.setParameterName(parameterName);
List<AskedInfoMsg>askedInfos=newArrayList<>();
askedInfos.add(askedInfoMsg);
taskResult.setAskedInfos(askedInfos);
res.setReturnValue(taskResult);
returnres;
    }
}
2.3 完成代码修改后,提交到代码仓库保存,并部署“预发环境

image.png

image.png

三、语音技能测试

3.1 进入在线测试进行测试

image.png

3.2 测试结果

image.png

四、应用下线

在线测试完成后,要在云开发平台我的应用及时将部署的应用下线,因为免费额度有限,不及时下线将会产生不必要的费用

image.png

下一篇,我们将实现意图的切换,参数的传递

天猫技能应用平台官方文档:https://aligenie.com/doc/20255408/pvtgu9


文章搬自:https://blog.csdn.net/miao_x_m/article/details/121135791

目录
相关文章
|
2月前
|
人工智能 安全 API
20 万奖金池就位!Higress AI 网关开发挑战赛参赛指南
本次赛事共设三大赛题方向,参赛者可以任选一个方向参赛。本文是对每个赛题方向的参赛指南。
298 17
|
2月前
|
人工智能
Claude code AI 技能神器:Anthropic Skills!
Anthropic推出Claude AI技能神器Skills,将复杂任务打包成即插即用的“外挂”,让AI秒懂流程,告别重复提示。支持团队共享,提升效率数倍,三步搞定专业报告,堪称AI办公革命!
711 4
|
2月前
|
人工智能 运维 安全
加速智能体开发:从 Serverless 运行时到 Serverless AI 运行时
在云计算与人工智能深度融合的背景下,Serverless 技术作为云原生架构的集大成者,正加速向 AI 原生架构演进。阿里云函数计算(FC)率先提出并实践“Serverless AI 运行时”概念,通过技术创新与生态联动,为智能体(Agent)开发提供高效、安全、低成本的基础设施支持。本文从技术演进路径、核心能力及未来展望三方面解析 Serverless AI 的突破性价值。
|
3月前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段三:自定义 Advisor 与结构化输出实现以及对话记忆持久化开发
本文介绍如何在Spring AI中自定义Advisor实现日志记录、结构化输出、对话记忆持久化及多模态开发,结合阿里云灵积模型Qwen-Plus,提升AI应用的可维护性与功能性。
704 125
AI 超级智能体全栈项目阶段三:自定义 Advisor 与结构化输出实现以及对话记忆持久化开发
|
2月前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
3700 49
|
3月前
|
人工智能 Rust 并行计算
AI大模型开发语言排行
AI大模型开发涉及多种编程语言:Python为主流,用于算法研发;C++/CUDA优化性能;Go/Rust用于工程部署;Java适配企业系统;Julia等小众语言用于科研探索。
1257 127
|
人工智能 自然语言处理 前端开发
产品经理也能“开发”需求?淘宝信息流从需求到上线的AI端到端实践
淘宝推荐信息流业务,常年被“需求多、技术栈杂、协作慢”困扰,需求上线周期动辄一周。WaterFlow——一套 AI 驱动的端到端开发新实践,让部分需求两天内上线,甚至产品经理也能“自产自销”需求。短短数月,已落地 30+ 需求、自动生成 5.4 万行代码,大幅提升研发效率。接下来,我们将揭秘它是如何落地并改变协作模式的。
408 37
产品经理也能“开发”需求?淘宝信息流从需求到上线的AI端到端实践
|
2月前
|
人工智能 IDE 开发工具
从6人日到1人日:一次AI驱动的客户端需求开发实战
从6人日到1人日:一次AI驱动的客户端需求开发实战
从6人日到1人日:一次AI驱动的客户端需求开发实战
|
3月前
|
人工智能 前端开发 JavaScript
前端工程化演进之路:从手工作坊到AI驱动的智能化开发
前端工程化演进之路:从手工作坊到AI驱动的智能化开发
639 18
前端工程化演进之路:从手工作坊到AI驱动的智能化开发
|
2月前
|
人工智能 运维 定位技术
【微笑讲堂】AI时代的Geo优化:掌握这些技能,让你的内容被智能引擎“偏爱”
大家好,我是微笑老师!本期讲解“Geo都需要掌握哪些技能”。随着AI搜索兴起,GEO(生成式引擎优化)正取代传统SEO,核心在于让内容被AI“读懂、信任、引用”。需掌握四大技能:结构化数据工程、多模态语义对齐、动态知识图谱运维、权威信源建设。从“被找到”到“被引用”,GEO与SEO融合进化,助力内容在AI时代脱颖而出。未来已来,你准备好了吗?
298 8