天天看點

如何用幾行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架構能否引領物聯網時代? 物聯網到底為什麼這麼火? 誰才是物聯網連接配接技術中的王者? 物聯網平台大量出現能否将行業帶入爆發式發展 腳本語言适合物聯網開發嗎 從“嵌入式”到“物聯網”的四大轉變 物聯網發展新趨勢