天天看点

如何用几行Python代码在物联网设备上实现语音AI自动识别?1、背景2、语音自动识别案例效果3、自动识别背后实现原理4、未来展望更多精品好文

来源 | HaaS技术社区
不看这几篇好文,就别说自己了解物联网

1、背景

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

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

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

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

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

案例拓扑结构

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

如何用几行Python代码在物联网设备上实现语音AI自动识别?1、背景2、语音自动识别案例效果3、自动识别背后实现原理4、未来展望更多精品好文

软件原理如下图所示。

如何用几行Python代码在物联网设备上实现语音AI自动识别?1、背景2、语音自动识别案例效果3、自动识别背后实现原理4、未来展望更多精品好文

案例过程

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

1、搭建硬件平台

2、编写python代码

3、录音采集上传

4、查看语音结果识别

如何用几行Python代码在物联网设备上实现语音AI自动识别?1、背景2、语音自动识别案例效果3、自动识别背后实现原理4、未来展望更多精品好文
如何用几行Python代码在物联网设备上实现语音AI自动识别?1、背景2、语音自动识别案例效果3、自动识别背后实现原理4、未来展望更多精品好文

代码主要做了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

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

如何用几行Python代码在物联网设备上实现语音AI自动识别?1、背景2、语音自动识别案例效果3、自动识别背后实现原理4、未来展望更多精品好文

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轻应用指导手册:

阿里云智能语音交互平台

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

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

接口说明

4、未来展望

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

更多精品好文

物联网需要什么样的UI交互方式? 如何分析物联网设备问题,看懂这篇文章就够了 透过ALSA这层迷雾剖析AliOS Things音频框架设计 漫谈农业物联网与互联网技术的结合 传感器,物联网时代的智能硬件数字化入口 如何快速搭建一个像“天猫精灵”的智能语音助手? 物联网之IP Camera解决方案简介 从语音交互历史浅看它是否会是物联网行业的一个爆点? 带你走进多媒体世界:视频文件是怎么播放出来的 物联网云端一体AI方案的探索 物联网设备连接的下一个引爆点:4G Cat.1 物联网教育现状和前景 一文看懂蓝牙在物联网中的应用场景 下一个智能硬件爆品是什么? 华为、阿里、小米都在用的全屋智能技术 为什么物联网领域使用Rust的项目越来越多? 物联网中也能使用区块链技术?面向IoT的区块链基础架构IoTeX 开源硬件的前世今生 物联网碎片化的一些思考 边缘计算在物联网行业的应用 物联网太难 ? 不妨试试用Python来开发 5G会给物联网行业带来哪些变化? 必须要了解的物联网安全知识 ARMv9能给ARM带来新一轮腾飞吗?(安全篇) ARMv9能给ARM带来新一轮腾飞吗?(人工智能篇) 国产物联网操作系统的出路在哪里? RISC-V架构能否引领物联网时代? 物联网到底为什么这么火? 谁才是物联网连接技术中的王者? 物联网平台大量出现能否将行业带入爆发式发展 脚本语言适合物联网开发吗 从“嵌入式”到“物联网”的四大转变 物联网发展新趋势