python 轻应用开发|学习笔记

简介: 快速学习python 轻应用开发

开发者学堂课程【AliOS Things 物联网开发教程python 轻应用开发】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/835/detail/13992


python 轻应用开发


内容介绍

一、应用案例: Python 轻应用打造播报音箱


一、应用案例: Python 轻应用打造播报音箱

下图为播报音响整体的框图,播报设备是 Haas EDU K1的设备外接一个喇叭,其可以通过 IoT 连接到阿里云 IoT 平台,阿里云 IoT 设备主要需要使用千里传音服务(阿里云 IoT 针对具有语音播报能力设备提供的云端一体的解决方案:包括语料生成、语料推送、设备管理、OpenAPI)能帮住用户更快的进行播报类设备的开发。

image.png

下图为播报音响的实现图,这里 Haas EDU K1 的设备在连接云端后,用户可以根据云端创建用户语料,并且把语料从云端推送到设备,用户还可以指定播报的内容,让设备进行播报。  

image.png

硬件连接:这是实验播报用到的喇叭和 EDU 相关硬件的连接。第一根 GND 的线需要连接到第1个30GND 的线路,第二根 VCC(电源)的线需要连接到3.3v上,还有一个 IN(信号输入口)连接到 SPKLP,也就是第6个接口上。  

image.png

1.千里传音服务能力

(1)项目管理:

客户通过项目形式管理不同应用场景中的设备和语料。

(2)智能语料生成

通过人工智能算法帮助客户快速完成文字到固定播报语料的生成,支持 wav 和 mp3格式输出。

(3)语料组合播报

通过远程命令,告知特定设备将本地语料以特定顺序组合后播报,并支持加入动态数字内容。

(4)动态语料合成、

支持用户通过 API 生成动态播报语料,推送到端侧播报。此类语料设备端采用在线播放的形式,将不固化到设备中。

(5)语料空中推送

为客户提供语料空中推送到单个和项目中全量设备的能力,实现设备端固化语料的更新。使设备播报语音内容变得可以运营。

(6)云端 API

为客户提供平台能力对应 API,以实现上述播报能力的云端控制。

2.播报音响使用步骤

首先需要在云端创建一个千里传音的项目,在项目中生成语料,同时创建设备,并且将生成的语料和设备对应起来,然后再去运行 Hass EDU 设备。运行好之后就可以进行动态语料的更新、播报以及远程组合的播报之类相关的动作。  

image.png

3.云端平台使用

可以通过链接直接进入官方平台直接访问千里传音产品,或者通过阿里云 IoT 平台到企业物联网平台到控制台到增值服务到 IoT 云端一体服务,就可以进入“千里传音”产品界面。  

image.png

创建项目:创建项目时,需要输入产品名称、产品来源及项目描述,之后会在实际创建中展示如何操作。进入干里传音服务控制台后,可以看到相关管理页面,用户可以在此创建不同的项目以区分设备对应的不同场景或交付项目。在完成项目创建后,系统将帮助用户创建一个与项目名相同的产品,以便后续加入设备。同时,如果用户希望为设备增加千里传音以外的能力,也可以直接到物联网平台的设备管理界面中,为设备添加物模型能力。在项目列表中,点击需要配置的项目,可以对项目内容进行配置管理。

找到界面以后便创建项目,需要输入项目名称,产品来源以及项目描述。

image.png

创建好之后需要进行一个管理服务,在“千里传音”的管理页面去新建语料,语料可以任意输入内容,但需要输入一个标识符,因为在推送设备时需要将标识符对应相关语料的场景,将标识符推送到设备中的时候,它会将相关内容推送下去,在调试的过程中会用到。千里云服务默认了很多合成能力,可以根据自己的选择进行配置,之后会演示。

●语料标识:将作为生成语料的文件名,以及后续组合播报时的语料组合索引。建议按照播报内容的拼音首字母编写,如:“银行到账”可将语料标识定义为“YHDZ"。 ●语料内容:需要播报的语料内容。

●语音场景:千里传音服务为用户提供了5个场景下的45种不同语音合成能力,用户可以根据场景需求,选择对应的语音进行语料合成。

image.png

创建设备:创建好之后,再去创建相关的设备,在设备里主要是将当前的设备与语料进行关联,使得识别到设备的时候可以知道相关语料。

image.png

获取四元组:创建好之后,去获取四元组,四元组可以在场景管理中查找到,接下里进行实际操作。

点开 Visual Studio Code,重新创建一个工程,重新选择路径,在/Users/zeta/Documents/test1路径下进行创建,选择 Haas EDU K1,再选择 remote_speaker,这就是播报音响的项目,点击立即创建。完成之后发现这里有 resource,这个 resource 等下也会推送到设备当中来进行播报,先看一下代码。

if _name_ =='_main_':  

Init_audio() play(tonepathPowerOn)  

do_connect_lk()

从 main 函数开始看,第一步从 init_audio(将外接的喇叭驱动起来,这样它可以进行数据的传输,也可以进行正常的播报的功能),接着第二步进行 play(tonepathPowrOn)tonepathPowrOn = “fs:” + resDir + “PowrOn.wav”这个就是将文件传输到设备端之后在 data/app/resource 这样的文件。

其实 data/app/resource 就是刚才 Powron.wav 推到了设备端。播放完 tonepathPowrOn 后系统会做一个 do_connect_lk 的动作,可以找到它的实现,看到其描述为通过物联网平台连接千里传音服务,同时其定义了一些全局变量: productkey,devicename,devicesecret,on_request,on_play,初始化了 inkkit sdk,并且把下面的值输入上去。

#物联网平台相关的 key 和 serect 定义:

productKey = "xx"

deviceName= "xx"  

devidesecret= "xx"

这些值的定义在上文中提到过,可以看到值后有“xx”,此处是要求填写进数值。填入的值是刚才介绍到的阿里云物联网平台创建的项目和设备中需要获取的四元组或三元组。

填入完成后再连接 lk 平台的时候,会把参数发送到服务端,服务端会根据信息进行认证,否则将不能连接平台,所以接下来要去云端申请三元组并且将其填写在此处。接着往下看,观察到有 region:cn-shanghai 这是华东地区,填好之后做一个 iot.Device(key_info)这是在初始化 iot 平台,到目前为止,已经将从设备端连接云端完成了封装,将其封装到iot的模块里,所以从代码一开始就引入了 import 的 iot 进来,这也正是 python 的简介应用之处,就是将很多分散的小代码以及许多复杂的代码封装在一起,需要时可以直接进行调用。

现在直接调用 iot.Device,其自动会做一个连接物联网平台的动作。在进行此动作时会进行两个回调函数分别为 on_connect,这个的意思就是成功的连接到了云端然后进行播放 tonepathconnected = “fs:”+resDir + “connected .wav”这样一个资源文件,其实就是连接后播放语音。

连接好之后这里可以看到 on_service 的动作,这就是事件的接收函数,不论你是千里传音或者做一些远程的 led 的控制或者做一个远端设备的继电器的控制都是通过 on_service 来进行一个处理。Service 主要就是接受从服务端发送到设备端的消息,服务端发送的 json 的消息来对应消息进行处理,这里把 json 消息进行处理,并且解析出来。这里创建一个 data,用data去获取 json 里的参数,再等下实验的过程中把相关的 json 读取出来,这里读取出来比如说speechpost 就把 data 赋给on_request,比如说speechBroadcast 就把data赋给 on_play,这是两个不同条件的函数,也是服务发的两个不同的命令 speechpost 与speechBroadcast,而 Broadcast 含义就是广播,就是说可以直接从服务端调用让其直接播送每一条语音,从而让设备播放每一条语音。另外一个就是刚才提到的语调推送(speechpost),也就是如果在服务端配制好某些语调后,可以直接从服务端将语调推送到设备上来。

接受到消息后,就在下方对这两条消息做一个处理。第一个on_request 的消息处理,这个消息处理可以看出是一个 download_resource_file,服务端在推送的时候,其实是在发了这条命令之后会带一个链接(加密的 resource 链接),设备端在接受了链接之后,它其实会访问此链接,把当前的资源文件(语音文件)下载下来。

另外是一个 on_play 的动作,这个则是调用 play_voice也就是 play 函数将其播放出来,最后执行完就可以断开连接。当前的实验则是让其一直处于一个循环,其实可以看到在封装好之后用python 开发非常简单,仅仅是用几行函数,可以实现很多功能。

while(True):  

device.do_yield(1000)  

if on_request:

download_resource_file(on_request,resDir)

on_request= False  

elif on_play:  

play_voice(on_play,resDir)

on_play = False  

接下来学习服务端的创建,首先进入物联网平台的官方主页,也就是在 lot.console.aliyun.com 的网站。

进去之后先登录页面,没有账号需要自己创建,进来之后点击增值服务,在增值服务里点击使用 IoT 云端一体服务,进去就可以看到千里传音的配置页面,在这里创建项目,选择名称、项目配套产品来源、项目描述后点击确定就可以完成创建。完成创建后需要进行配置,点击管理服务,管理服务就是对预料的配置的界面。

点击新增语料,选择语料类型,例可以添加语料标识“HYHAAS”,语料内容“欢迎参加 HaaS 训练营”,语音场景等等,不同的场景有不同的合成。

假设设置完成后点击确定。当前创建的语料在这个地方,这里只是创建千里传音的语音和语料。  

需要将语料和设备进行关联,例如我们点击推送到设备,此时其实是没有设备提供选择的,可以点击下方的创建设备。也可以在上一个界面的设备管理创建设备。输入一个测试设备,名称“testdev”,随便输入一个备注,点击确定。创建完后可以点击完成和查看。  

创建设备完成后是一个未激活的状态,可以在后方的操作处进行查看,再查看的页面可以看到产品的名称,是千里传音项目的产品,也可以看到产品关联的设备,在上方有一个 DeviceSecret 点击查看可以看到设备的三元组,在代码中需要修改的三元组就是需要填入的数值填入其中。

image.png

即:

productKey="a1wTaZI5atI"

deviceName ="testdev"  

deviceSecret “d85f5f2832899f8cfc9efd72ab584a54"

修改好之后,目前三元组需要填入的已经完成。下面还有productSecret 也是可以看到的,需要在千里传音的产品证书处复制填写到代码处。

image.png

'region":'cn-shanghai',

'productkey': productkey,

'deviceName': deviceName,

'deviceSecret': deviceSecret,

'productSecret': “CLaNWPxpwjtqwUFf"

这样代码修改就已经完成了,接着将其烧录到设备当中,这里烧录之前还需要考虑这个 lot 的模块封装可能只单独针对物联网平台,也就说代码在执行的过程中可能直接连接物联网平台,所以这里有一个问题就是没有考虑到 wifi 连接的情况,所以在后面还需要加上 wifi的判断与连接的条件与代码在最后执行。

因为此处实验可以手动连接 wifi,所以暂时不添加代码,不加的情况下先更改main的名称为 test_main,因为代码在执行的时候如果有 main 的函数,它会直接执行 main.py,如果当时 wifi 还没有连接上就去执行,有可能导致陷入死循环无法继续,因为测试代码并没有添加保护代码,所以更改名称为 test_main 来手动执行,接着也更改一下 resource 的路径,进行烧录,记得串口先断开。烧录完成后,在函数中找到 pyamp 的文件。首先连接 wifi,然后执行 python-app/main.py。

在wifi链接成功后直接执行 pyamp,可以听到音箱播报的系统启动成功,wifi 启动成功这样的提示语。

接下来做推送的实验,先推送刚才创建的“欢迎加入 Haas 训练营”的语音,点击推送到刚才创建的设备,点击确定,网页提示成功以后,转会并查看 load,可以看到这便下载成功了 download,所以已经推送成功后在云端进行一个播放的控制,需要进入云端的管理控制台。 这时进入阿里云的云端控制平台,在这里点击可视化调试,点击搜索千里传音的项目调试 api(speechbycomination)选择 Regionld,刚才默认为华东,并且填入代码中的 productkey 和 devicename。并且在 combinationList 处填入之前的语音标识。发起调用后便可以听到正常的播报。  

即:

productKey ="a1wTaZI5atI"

deviceName = "testdev"  

deviceSecret =“d8515f2832899f8cfc9efd72ab584a54"

接着进行实验,选择“支付宝到账一百元”的语音,将他其推送到设备中,并且在接口处选择“支付宝到账一百元”的语音标识,发起调用可以看到播报音响已经完成了,可以直接通过云端对设备进行语调的推送以及播放控制,当然这份代码还有很多可以完善和改进的地方,拿到设备的同学可以去做实验,将代码改进的更加完美。  

4.修改四元组:

(1)修改如下四个变量:

①productSecret="xxx产品密钥  

②productKey="xxx” 产品key  

③deviceName=“xxx”设备名字

④deviceSecret=“xxx“设备密钥

image.png

5.下载到设备:

可以通过 IDE 工具进行下载。

6.推送语料到设备

语料需要在执行前推送到设备,推送方法是点击推送到设备。

7.远程调试

在线 API 调试地址,修改其中的 ProductKey 和 DeviceName 以及需要发送的语料完成参数配置后,点击“发起调用”,即可将组合播报命令发送至设备端。

image.png

8.更多代码示例参考

https://g.alicdn.com/HaaSAI/PythonDoc/apps/index.htmlz

在 python 应用的官方主页上。  

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
5月前
|
存储 监控 算法
淘宝买家秀 API开发实录Python(2025)
本文讲述了作者在电商开发领域,尤其是对接淘宝买家秀 API 接口过程中所经历的挑战与收获。从申请接入、签名验证、频率限制到数据处理和实时监控,作者分享了多个实战经验与代码示例,帮助开发者更高效地获取和处理买家秀数据,提升开发效率。
|
8月前
|
API C++ 开发者
PySide vs PyQt:Python GUI开发史诗级对决,谁才是王者?
PySide 和 PyQt 是 Python GUI 开发领域的两大利器,各有特色。PySide 采用 LGPL 协议,更灵活;PyQt 默认 GPL,商业使用需授权。两者背后团队实力雄厚,PySide 得到 Qt 官方支持,PyQt 由 Riverbank Computing 打造。API 设计上,PySide 简洁直观,贴近原生 Qt;PyQt 增加 Pythonic 接口,操作更高效。性能方面,两者表现优异,适合不同需求的项目开发。选择时可根据项目特点与开源要求决定。
926 20
|
4月前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
656 7
|
10月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的商城管理系统源码+运行步骤
基于Python+Vue开发的商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的网上商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
360 7
|
5月前
|
算法 程序员 API
电商程序猿开发实录:淘宝商品python(2)
本文分享了开发者在对接淘宝商品详情API过程中的真实经历,涵盖权限申请、签名验证、限流控制、数据解析及消息订阅等关键环节,提供了实用的Python代码示例,帮助开发者高效调用API,提升系统稳定性与数据处理能力。
|
6月前
|
数据采集 存储 数据库
Python爬虫开发:Cookie池与定期清除的代码实现
Python爬虫开发:Cookie池与定期清除的代码实现
|
7月前
|
人工智能 搜索推荐 数据可视化
用 Python 制作简单小游戏教程:手把手教你开发猜数字游戏
本教程详细讲解了用Python实现经典猜数字游戏的完整流程,涵盖从基础规则到高级功能的全方位开发。内容包括游戏逻辑设计、输入验证与错误处理、猜测次数统计、难度选择、彩色输出等核心功能,并提供完整代码示例。同时,介绍了开发环境搭建及调试方法,帮助初学者快速上手。最后还提出了图形界面、网络对战、成就系统等扩展方向,鼓励读者自主创新,打造个性化游戏版本。适合Python入门者实践与进阶学习。
996 1
|
9月前
|
程序员 测试技术 开发工具
怎么开发Python第三方库?手把手教你参与开源项目!
大家好,我是程序员晚枫。本文将分享如何开发Python第三方库,并以我维护的开源项目 **popdf** 为例,指导参与开源贡献。Popdf是一个PDF操作库,支持PDF转Word、转图片、合并与加密等功能。文章涵盖从fork项目、本地开发、单元测试到提交PR的全流程,适合想了解开源贡献的开发者。欢迎访问[popdf](https://gitcode.com/python4office/popdf),一起交流学习!
324 21
怎么开发Python第三方库?手把手教你参与开源项目!
|
7月前
|
存储 算法 数据可视化
用Python开发猜数字游戏:从零开始的手把手教程
猜数字游戏是编程入门经典项目,涵盖变量、循环、条件判断等核心概念。玩家通过输入猜测电脑生成的随机数,程序给出提示直至猜中。项目从基础实现到功能扩展,逐步提升难度,适合各阶段Python学习者。
597 0
|
7月前
|
数据采集 存储 监控
抖音直播间采集提取工具,直播间匿名截流获客软件,Python开发【仅供学习】
这是一套基于Python开发的抖音直播间数据采集与分析系统,包含观众信息获取、弹幕监控及数据存储等功能。代码采用requests、websockets和sqlite3等...

推荐镜像

更多