如何用几行Python代码在物联网设备上实现语音AI自动识别?

简介: Python语言如今已成为非常火的语言,尤其是在人工智能领域,但是它在嵌入式领域目前还应用较少。本文将对HaaS平台的Python轻应用快速实现语音自动识别的例子,介绍HaaS平台的云端一体特点以及软硬件积木高效的特点。

> 来源 | HaaS技术社区

不看这几篇好文,就别说自己了解物联网

1、背景

Python语言如今已成为非常火的语言,尤其是在人工智能领域,但是它在嵌入式领域目前还应用较少。

本文将对HaaS平台的Python轻应用快速实现语音自动识别的例子,介绍HaaS平台的云端一体特点以及软硬件积木高效的特点。

本文将分为几个部分介绍语音自动识别的全过程:

  • 实现效果
  • 实现原理
  • 未来展望

2、语音自动识别案例效果

案例拓扑结构

本案例的硬件示意图如下所示。

![image.png](https://ucc.alicdn.com/pic/developer-ecology/7cd580e2298440b1afc257093691df77.png)

软件原理如下图所示。

![image.png](https://ucc.alicdn.com/pic/developer-ecology/71e6e1b752164ebdbf1547597c9f77b4.png)

案例过程

案例实验过程主要分为4个步骤:

1、搭建硬件平台

2、编写python代码

3、录音采集上传

4、查看语音结果识别

1、搭建硬件平台

![image.png](https://ucc.alicdn.com/pic/developer-ecology/ebc460abc45e4fc2a6d8765fa4fa9e03.png) ![image.png](https://ucc.alicdn.com/pic/developer-ecology/2b60b32a3a9e4f298819c57d4e28ec8c.png)

2、编写python代码

代码主要做了3件事,采集录音,上传录音,获取返回结果。

其中几个关键点在:

录音采集:

get_stream(readBuf, read_size)

上传录音:        

client.set_data(data,audio_length)

   client.set_header(header)

这些都是目前python轻应用封装好的接口可以直接使用。

需要注意的是,上传录音需要开通阿里云的智能语音服务,具体可以参考如下文档:

https://help.aliyun.com/document_detail/92131.html

详细代码参考如下:

  1. from audio import Player, Snd, Recorder

  2. import sdcard

  3. import http

  4. Snd.install_codec_driver()

  5. Snd.init()

  6. r0 = Recorder()

  7. r0.create()

  8. format = 1

  9. read_samples = 640

  10. channels = 1

  11. rate = 16000

  12. bits = 16

  13. r0.set_sink(format, rate, channels, bits, read_samples, 0, None)

  14. read_size = int(read_samples * channels * bits / 8)

  15. readBuf = bytearray(read_size)

  16. sdcard.open('/data/mic1.pcm', 'w')

  17. index = 0

  18. audio_length = 122880

  19. url = 'http://nls-gateway.cn-shanghai.aliyuncs.com/stream/v1/asr?appkey=yourtestappkeyXL8OZEpmRC&format=pcm&sample_rate=16000&enable_punctuation_prediction=true&enable_inverse_text_normalization=true'

  20. header = "X-NLS-Token: yourtesttokencb3572fc55b1a423b38\r\nContent-type: application/octet-stream\r\n"

  21. #注意需要修改token和appkey

  22. r0.start()

  23. while index < 101:

  24.    if (index == 100):

  25.        r0.stop()

  26.        r0.release()

  27.        sdcard.close()

  28.        data = bytearray(audio_length)

  29.        sdcard.open('/data/mic1.pcm','r')

  30.        sdcard.read(data,audio_length)

  31.        client=http.client()

  32.        client.set_data(data,audio_length)

  33.        client.set_header(header)

  34.        client.post(url)

  35.        response = client.get_response()

  36.    else:

  37.        rsize = r0.get_stream(readBuf, read_size)

  38.        sdcard.write(readBuf, rsize)

  39.        index += 1

3、录音采集上传

该过程启动脚本后,对着麦克风说话。

4、查看语音结果识别

![image.png](https://ucc.alicdn.com/pic/developer-ecology/2dc7a7c860554f80a70444ca269a3307.png)

3、自动识别背后实现原理

Python轻应用平台介绍

语音自动识别的工具平台使用的是Python轻应用,它是以MicroPython作为运行引擎,它继承了python优美简洁的语法特点,同时提供了便捷的嵌入式硬件操作库,极大的降低了嵌入式开发的门槛。

Python轻应用目前主要部署在阿里云Iot推出的HaaS系统开发板上,以HaaS EDK为例,它不仅提供了各种丰富的硬件操作接口,同时提供了阿里云物联网平台的连接控制以及云/端AI相关的能力。

通过Python轻应用,可以轻松便捷的搭建各种功能丰富案例和产品,让IoT应用开发轻松实现跨平台热更新。

Python轻应用的优势:

1.便捷的开发调试方法

2.丰富的硬件开发和外设控制能力

3.简洁的阿里云物联网平台连接接口

4.丰富的达摩院150+ AI算法

更多的Python轻应用请参见链接:https://g.alicdn.com/HaaSAI/PythonDoc/quickstart/index.html

语音识别组件介绍

本次使用了Snd(语音相关驱动模块)、Recorder(录音模块)、sdcard(sd卡模块)、http(网络模块)等多个组件,更多信息和接口介绍,参见python轻应用指导手册:https://g.alicdn.com/HaaSAI/PythonDoc/quickstart/index.html

阿里云智能语音交互平台

阿里云智能语音交互平台提供了语音识别、语音合成、自然语言理解等技术。本文是使用了其中的一句话识别功能。

所谓的一句话识别是指对时长较短(一分钟以内)的语音进行识别,适用于较短的语音交互场景,如语音搜索、语音指令、语音短消息等,可集成在各类App、智能家电、智能助手等产品中。更多信息,请参见接口说明

4、未来展望

本案例基于Python轻应用和阿里云智能语音交互平台以及HaaS平台,快速搭建一个自动语音识别系统,未来HaaS平台将持续提供高效快捷的软硬件积木,不断打造物联网设备云端一体Low-code开发框架。

更多精品好文

 

物联网需要什么样的UI交互方式?

如何分析物联网设备问题,看懂这篇文章就够了

透过ALSA这层迷雾剖析AliOS Things音频框架设计

漫谈农业物联网与互联网技术的结合

传感器,物联网时代的智能硬件数字化入口

如何快速搭建一个像“天猫精灵”的智能语音助手?

物联网之IP Camera解决方案简介

从语音交互历史浅看它是否会是物联网行业的一个爆点?

带你走进多媒体世界:视频文件是怎么播放出来的

物联网云端一体AI方案的探索

物联网设备连接的下一个引爆点:4G Cat.1

物联网教育现状和前景

一文看懂蓝牙在物联网中的应用场景

下一个智能硬件爆品是什么?

华为、阿里、小米都在用的全屋智能技术

为什么物联网领域使用Rust的项目越来越多?

开源硬件的前世今生

物联网碎片化的一些思考

边缘计算在物联网行业的应用

物联网太难 ? 不妨试试用Python来开发

5G会给物联网行业带来哪些变化?

必须要了解的物联网安全知识

ARMv9能给ARM带来新一轮腾飞吗?(安全篇)

ARMv9能给ARM带来新一轮腾飞吗?(人工智能篇)

国产物联网操作系统的出路在哪里?

RISC-V架构能否引领物联网时代?

物联网到底为什么这么火?

谁才是物联网连接技术中的王者?

物联网平台大量出现能否将行业带入爆发式发展

脚本语言适合物联网开发吗

从“嵌入式”到“物联网”的四大转变

物联网发展新趋势

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
1天前
|
设计模式 缓存 监控
Python中的装饰器:代码的魔法增强剂
在Python编程中,装饰器是一种强大而灵活的工具,它允许程序员在不修改函数或方法源代码的情况下增加额外的功能。本文将探讨装饰器的定义、工作原理以及如何通过自定义和标准库中的装饰器来优化代码结构和提高开发效率。通过实例演示,我们将深入了解装饰器的应用,包括日志记录、性能测量、事务处理等常见场景。此外,我们还将讨论装饰器的高级用法,如带参数的装饰器和类装饰器,为读者提供全面的装饰器使用指南。
|
1天前
|
存储 算法 搜索推荐
Python高手必备!揭秘图(Graph)的N种风骚表示法,让你的代码瞬间高大上
在Python中,图作为重要的数据结构,广泛应用于社交网络分析、路径查找等领域。本文介绍四种图的表示方法:邻接矩阵、邻接表、边列表和邻接集。每种方法都有其特点和适用场景,掌握它们能提升代码效率和可读性,让你在项目中脱颖而出。
12 5
|
1天前
|
数据库 Python
异步编程不再难!Python asyncio库实战,让你的代码流畅如丝!
在编程中,随着应用复杂度的提升,对并发和异步处理的需求日益增长。Python的asyncio库通过async和await关键字,简化了异步编程,使其变得流畅高效。本文将通过实战示例,介绍异步编程的基本概念、如何使用asyncio编写异步代码以及处理多个异步任务的方法,帮助你掌握异步编程技巧,提高代码性能。
11 4
|
2天前
|
缓存 开发者 Python
探索Python中的装饰器:简化和增强你的代码
【10月更文挑战第32天】 在编程的世界中,简洁和效率是永恒的追求。Python提供了一种强大工具——装饰器,它允许我们以声明式的方式修改函数的行为。本文将深入探讨装饰器的概念、用法及其在实际应用中的优势。通过实际代码示例,我们不仅理解装饰器的工作方式,还能学会如何自定义装饰器来满足特定需求。无论你是初学者还是有经验的开发者,这篇文章都将为你揭示装饰器的神秘面纱,并展示如何利用它们简化和增强你的代码库。
|
1天前
|
API 数据处理 Python
探秘Python并发新世界:asyncio库,让你的代码并发更优雅!
在Python编程中,随着网络应用和数据处理需求的增长,并发编程变得愈发重要。asyncio库作为Python 3.4及以上版本的标准库,以其简洁的API和强大的异步编程能力,成为提升性能和优化资源利用的关键工具。本文介绍了asyncio的基本概念、异步函数的定义与使用、并发控制和资源管理等核心功能,通过具体示例展示了如何高效地编写并发代码。
8 2
|
3天前
|
机器学习/深度学习 自然语言处理 API
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程。通过简单的代码示例,展示如何将文本转换为自然流畅的语音,适用于有声阅读、智能客服等场景。
20 3
|
5天前
|
设计模式 缓存 测试技术
Python中的装饰器:功能增强与代码复用的艺术####
本文将深入探讨Python中装饰器的概念、用途及实现方式,通过实例演示其如何为函数或方法添加新功能而不影响原有代码结构,从而提升代码的可读性和可维护性。我们将从基础定义出发,逐步深入到高级应用,揭示装饰器在提高代码复用性方面的强大能力。 ####
|
3天前
|
算法 IDE API
Python编码规范与代码可读性提升策略####
本文探讨了Python编码规范的重要性,并深入分析了如何通过遵循PEP 8等标准来提高代码的可读性和可维护性。文章首先概述了Python编码规范的基本要求,包括命名约定、缩进风格、注释使用等,接着详细阐述了这些规范如何影响代码的理解和维护。此外,文章还提供了一些实用的技巧和建议,帮助开发者在日常开发中更好地应用这些规范,从而编写出更加清晰、简洁且易于理解的Python代码。 ####
|
9天前
|
安全 物联网 物联网安全
智能物联网安全:物联网设备的防护策略与最佳实践
【10月更文挑战第26天】随着物联网(IoT)技术的快速发展,智能设备已广泛应用于智能家居、工业控制和智慧城市等领域。然而,设备数量的激增也带来了严重的安全问题,如黑客攻击、数据泄露和恶意控制,对个人隐私、企业运营和国家安全构成威胁。因此,加强物联网设备的安全防护至关重要。
26 7
|
6天前
|
缓存 测试技术 数据安全/隐私保护
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第29天】本文通过深入浅出的方式,探讨了Python装饰器的概念、使用场景和实现方法。文章不仅介绍了装饰器的基本知识,还通过实例展示了如何利用装饰器优化代码结构,提高代码的可读性和重用性。适合初学者和有一定经验的开发者阅读,旨在帮助读者更好地理解和应用装饰器,提升编程效率。

相关产品

  • 物联网平台