1、背景
Python语言如今已成为非常火的语言,尤其是在人工智能领域,但是它在嵌入式领域目前还应用较少。
本文将对HaaS平台的Python轻应用快速实现语音自动识别的例子,介绍HaaS平台的云端一体特点以及软硬件积木高效的特点。
本文将分为几个部分介绍语音自动识别的全过程:
实现效果
实现原理
未来展望
2、语音自动识别案例效果
案例拓扑结构
本案例的硬件示意图如下所示。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hhYVNUZWNo,size_16,color_FFFFFF,t_70.jpg



软件原理如下图所示。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hhYVNUZWNo,size_16,color_FFFFFF,t_70.jpg



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

1、搭建硬件平台
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hhYVNUZWNo,size_16,color_FFFFFF,t_70.jpg
2、编写python代码
  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、查看语音结果识别

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hhYVNUZWNo,size_16,color_FFFFFF,t_70.jpg