文章目录

  • 前言
  • 使用方法
    • class(类)
    • function(方法)
  • 语音识别

前言

  语音识别技术,也被称为自动语音识别Automatic Speech Recogntion(ASR),是通过计算机自动将人类的语音内容转换为相应文字的技术。通俗来讲,语音识别就是机器的“耳朵”,在人与机器进行语音交流的时候,让机器听得懂人类在说什么的前提。
  maix_asr是一个基于声学模型的语音识别模块,用户设置拼音组成的词汇加载到模块中,就可以开始录音识别用户输入的词汇,并返回可能匹配的词汇列表。

使用方法

class(类)

from speech_recognizer import asr
class maix_asr(asr):def config(self, sets):pass
t = maix_asr(address, i2s, dmac, shift=0)

参数说明:
address 烧写声学模型的 Flash 地址。
i2s 录音设备,默认使用 I2S.DEVICE_0 。
dmac 录音所使用的 DMA 通道,默认使用 通道 3。
shift 声道选择,Maix 系列的硬件录音设备通常为单声道输入,设置 0 为左声道,所以 1 为右声道。

该 maix_asr 模块由继承内部 asr 模块而来的拓展配置接口辅助类,实现如下:

from speech_recognizer import asrclass maix_asr(asr):
#asr_vocab为声学模型中包含的字的拼音。asr_vocab = ["lv", "shi", "yang", "chun", "yan", "jing", "da", "kuai", "wen", "zhang", "de", "di", "se", "si", "yue", "lin", "luan", "geng", "xian", "huo", "xiu", "mei", "yi", "ang", "ran", "ta", "jin", "ping", "yao", "bu", "li", "liang", "zai", "yong", "dao", "shang", "xia", "fan", "teng", "dong", "she", "xing", "zhuang", "ru", "hai", "tun", "zhi", "tou", "you", "ling", "pao", "hao", "le", "zha", "zen", "me", "zheng", "cai", "ya", "shu", "tuo", "qu", "fu", "guang", "bang", "zi", "chong", "shui", "cuan", "ke", "shei", "wan", "hou", "zhao", "jian", "zuo", "cu", "hei", "yu", "ce", "ming", "dui", "cheng", "men", "wo", "bei", "dai", "zhe", "hu", "jiao", "pang", "ji", "lao", "nong", "kang", "yuan", "chao", "hui", "xiang", "bing", "qi", "chang", "nian", "jia", "tu", "bi", "pin", "xi", "zou", "chu", "cun", "wang", "na", "ge", "an", "ning", "tian", "xiao", "zhong", "shen", "nan", "er", "ri", "zhu", "xin", "wai", "luo", "gang", "qing", "xun", "te", "cong", "gan", "lai", "he", "dan", "wei", "die", "kai", "ci", "gu", "neng", "ba", "bao", "xue", "shuai", "dou", "cao", "mao", "bo", "zhou", "lie", "qie", "ju", "chuan", "guo", "lan", "ni", "tang", "ban", "su", "quan", "huan", "ying", "a", "min", "meng", "wu", "tai", "hua", "xie", "pai", "huang", "gua", "jiang", "pian", "ma", "jie", "wa", "san", "ka", "zong", "nv", "gao", "ye", "biao", "bie", "zui", "ren", "jun", "duo", "ze", "tan", "mu", "gui", "qiu", "bai", "sang", "jiu", "yin", "huai", "rang", "zan", "shuo", "sha", "ben", "yun", "la", "cuo", "hang", "ha", "tuan", "gong", "shan", "ai", "kou", "zhen", "qiong", "ding", "dang", "que", "weng", "qian", "feng", "jue", "zhuan", "ceng", "zu", "bian", "nei", "sheng", "chan", "zao", "fang", "qin", "e", "lian", "fa", "lu", "sun", "xu", "deng", "guan", "shou", "mo", "zhan", "po", "pi", "gun", "shuang", "qiang", "kao", "hong", "kan", "dian", "kong", "pei", "tong", "ting", "zang", "kuang", "reng", "ti", "pan", "heng", "chi", "lun", "kun", "han", "lei", "zuan", "man", "sen", "duan", "leng", "sui", "gai", "ga", "fou", "kuo", "ou", "suo", "sou", "nu", "du", "mian", "chou", "hen", "kua", "shao", "rou", "xuan", "can", "sai", "dun", "niao", "chui", "chen", "hun", "peng", "fen", "cang", "gen", "shua", "chuo", "shun", "cha", "gou", "mai", "liu", "diao", "tao", "niu", "mi", "chai", "long", "guai", "xiong", "mou", "rong", "ku", "song", "che", "sao", "piao", "pu", "tui", "lang", "chuang", "keng", "liao", "miao", "zhui", "nai", "lou", "bin", "juan", "zhua", "run", "zeng", "ao", "re", "pa", "qun", "lia", "cou", "tie", "zhai", "kuan", "kui", "cui", "mie", "fei", "tiao", "nuo", "gei", "ca", "zhun", "nie", "mang", "zhuo", "pen", "zun", "niang", "suan", "nao", "ruan", "qiao", "fo", "rui", "rao", "ruo", "zei", "en", "za", "diu", "nve", "sa", "nin", "shai", "nen", "ken", "chuai", "shuan", "beng", "ne", "lve", "qia", "jiong", "pie", "seng", "nuan", "nang", "miu", "pou", "cen", "dia", "o", "zhuai", "yo", "dei", "n", "ei", "nou", "bia", "eng", "den", "_"]def get_asr_list(string='xiao-ai-fas-tong-xue'):return [__class__.asr_vocab.index(t) for t in string.split('-') if t in __class__.asr_vocab]def get_asr_string(listobj=[117, 214, 257, 144]):return '-'.join([__class__.asr_vocab[t] for t in listobj if t < len(__class__.asr_vocab)])def unit_test():print(__class__.get_asr_list('xiao-ai'))print(__class__.get_asr_string(__class__.get_asr_list('xiao-ai-fas-tong-xue')))def config(self, sets):self.set([(sets[key], __class__.get_asr_list(key)) for key in sets])def recognize(self):res = self.result()# print(tmp)if res != None:sets = {}for tmp in res:sets[__class__.get_asr_string(tmp[1])] = tmp[0]#print(tmp[0], get_asr_string(tmp[1]))return setsreturn None

function(方法)

  可以配置语音识别的所需要的词汇列表,最大不超过 6 个音符,超了会忽略,参数为 ‘xiao-ai-ya’ : 0.3 对应的 中文拼音字符串 和 匹配的最低概率(门限),且注意它不区分音调,所以 你-好-鸭 和 尼-浩-雅 没有区别,所以设计的时候要注意词汇的语调是否会形成新词。
例如:

 t.config({'xiao-ai' : 0.3,'kai-deng' : 0.2,'ni-hao' : 0.3,'lv-shi' : 0.3,})

识别 config 函数中所配置的词汇。

tmp = t.recognize()
# print(tmp)
if tmp != None:print(tmp)

语音识别

下载固件:点击这里下载。
下载声学模型:点击这里下载。
  烧录完成固件后,将声学模型下载到maix_asr_2900k_0x500000, 烧录到 0x500000 地址即可。然后运行代码:

import time
from Maix import GPIO, I2S
from fpioa_manager import fm
import os, Maix, lcd, image
img = image.Image(size=(320, 240))
io_led_red = 13
fm.register(io_led_red, fm.fpioa.GPIO0)
led_r=GPIO(GPIO.GPIO0, GPIO.OUT)
led_r.value(1)
#采样频率
sample_rate   = 16000
record_time   = 4  #s
#配置一个 I2S.DEVICE_0 设备
fm.register(20,fm.fpioa.I2S0_IN_D0, force=True)
fm.register(18,fm.fpioa.I2S0_SCLK, force=True) # bit
fm.register(19,fm.fpioa.I2S0_WS, force=True) # bit
#设置 CHANNEL_0 通道到录音输入
rx = I2S(I2S.DEVICE_0)
rx.channel_config(rx.CHANNEL_0, rx.RECEIVER, align_mode=I2S.STANDARD_MODE)
rx.set_sample_rate(sample_rate)
print(rx)from speech_recognizer import asr
#创建 maix_asr 的辅助类
class maix_asr(asr):asr_vocab = ["lv", "shi", "yang", "chun", "yan", "jing", "da", "kuai", "wen", "zhang", "de", "di", "se", "si", "yue", "lin", "luan", "geng", "xian", "huo", "xiu", "mei", "yi", "ang", "ran", "ta", "jin", "ping", "yao", "bu", "li", "liang", "zai", "yong", "dao", "shang", "xia", "fan", "teng", "dong", "she", "xing", "zhuang", "ru", "hai", "tun", "zhi", "tou", "you", "ling", "pao", "hao", "le", "zha", "zen", "me", "zheng", "cai", "ya", "shu", "tuo", "qu", "fu", "guang", "bang", "zi", "chong", "shui", "cuan", "ke", "shei", "wan", "hou", "zhao", "jian", "zuo", "cu", "hei", "yu", "ce", "ming", "dui", "cheng", "men", "wo", "bei", "dai", "zhe", "hu", "jiao", "pang", "ji", "lao", "nong", "kang", "yuan", "chao", "hui", "xiang", "bing", "qi", "chang", "nian", "jia", "tu", "bi", "pin", "xi", "zou", "chu", "cun", "wang", "na", "ge", "an", "ning", "tian", "xiao", "zhong", "shen", "nan", "er", "ri", "zhu", "xin", "wai", "luo", "gang", "qing", "xun", "te", "cong", "gan", "lai", "he", "dan", "wei", "die", "kai", "ci", "gu", "neng", "ba", "bao", "xue", "shuai", "dou", "cao", "mao", "bo", "zhou", "lie", "qie", "ju", "chuan", "guo", "lan", "ni", "tang", "ban", "su", "quan", "huan", "ying", "a", "min", "meng", "wu", "tai", "hua", "xie", "pai", "huang", "gua", "jiang", "pian", "ma", "jie", "wa", "san", "ka", "zong", "nv", "gao", "ye", "biao", "bie", "zui", "ren", "jun", "duo", "ze", "tan", "mu", "gui", "qiu", "bai", "sang", "jiu", "yin", "huai", "rang", "zan", "shuo", "sha", "ben", "yun", "la", "cuo", "hang", "ha", "tuan", "gong", "shan", "ai", "kou", "zhen", "qiong", "ding", "dang", "que", "weng", "qian", "feng", "jue", "zhuan", "ceng", "zu", "bian", "nei", "sheng", "chan", "zao", "fang", "qin", "e", "lian", "fa", "lu", "sun", "xu", "deng", "guan", "shou", "mo", "zhan", "po", "pi", "gun", "shuang", "qiang", "kao", "hong", "kan", "dian", "kong", "pei", "tong", "ting", "zang", "kuang", "reng", "ti", "pan", "heng", "chi", "lun", "kun", "han", "lei", "zuan", "man", "sen", "duan", "leng", "sui", "gai", "ga", "fou", "kuo", "ou", "suo", "sou", "nu", "du", "mian", "chou", "hen", "kua", "shao", "rou", "xuan", "can", "sai", "dun", "niao", "chui", "chen", "hun", "peng", "fen", "cang", "gen", "shua", "chuo", "shun", "cha", "gou", "mai", "liu", "diao", "tao", "niu", "mi", "chai", "long", "guai", "xiong", "mou", "rong", "ku", "song", "che", "sao", "piao", "pu", "tui", "lang", "chuang", "keng", "liao", "miao", "zhui", "nai", "lou", "bin", "juan", "zhua", "run", "zeng", "ao", "re", "pa", "qun", "lia", "cou", "tie", "zhai", "kuan", "kui", "cui", "mie", "fei", "tiao", "nuo", "gei", "ca", "zhun", "nie", "mang", "zhuo", "pen", "zun", "niang", "suan", "nao", "ruan", "qiao", "fo", "rui", "rao", "ruo", "zei", "en", "za", "diu", "nve", "sa", "nin", "shai", "nen", "ken", "chuai", "shuan", "beng", "ne", "lve", "qia", "jiong", "pie", "seng", "nuan", "nang", "miu", "pou", "cen", "dia", "o", "zhuai", "yo", "dei", "n", "ei", "nou", "bia", "eng", "den", "_"]def get_asr_list(string='xiao-ai-fas-tong-xue'):return [__class__.asr_vocab.index(t) for t in string.split('-') if t in __class__.asr_vocab]def get_asr_string(listobj=[117, 214, 257, 144]):return '-'.join([__class__.asr_vocab[t] for t in listobj if t < len(__class__.asr_vocab)])def unit_test():print(__class__.get_asr_list('xiao-ai'))print(__class__.get_asr_string(__class__.get_asr_list('xiao-ai-fas-tong-xue')))def config(self, sets):self.set([(sets[key], __class__.get_asr_list(key)) for key in sets])def recognize(self):res = self.result()if res != None:sets = {}for tmp in res:sets[__class__.get_asr_string(tmp[1])] = tmp[0]return setsreturn Nonefrom machine import Timerdef on_timer(timer):timer.callback_arg().state()try:# default: maix dock / maix duino set shift=0t = maix_asr(0x500000, I2S.DEVICE_0, 3, shift=1) # maix bit set shift=1tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PERIODIC, period=64, callback=on_timer, arg=t)tim.start()t.config({'xiao-ai' : 0.3,'kai-deng' : 0.2,'guan-deng' : 0.2,'ni-hao' : 0.3,'lv-shi' : 0.3,})print(t.get())img.draw_rectangle((0, 0, 320, 240), fill=True, color=(255, 255, 255))img.draw_string(10,80, "Please speak", color=(255, 0, 0), scale=2, mono_space=0)lcd.display(img)while True:tmp = t.recognize()if tmp != None:print(tmp)string = str(tmp)a= string.split("'")print(a[1])img.draw_rectangle((0, 0, 320, 240), fill=True, color=(255, 255, 255))img.draw_string(10,80, "%s"%(a[1]), color=(255, 0, 0), scale=3, mono_space=0)lcd.display(img)if a[1]=='kai-deng':led_r.value(0)if a[1]=='guan-deng':led_r.value(1)except Exception as e:print(e)
finally:tim.stop()t.__del__()del t

  识别时可以离板子上的麦克风进一些,并且说的时候尽可能的标准,不然可能识别不出来,比如难受想哭说成蓝瘦香菇是识别不出来的。代码效果是可以在终端和lcd上打印出识别结果,当识别到开灯时led灯亮,识别到关灯时led灯灭。

K210学习笔记——语音识别相关推荐

  1. 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练

    [K210]K210学习笔记七--使用K210拍摄照片并在MaixHub上进行训练 前言 K210准备工作 K210如何拍摄照片 准备工作 拍摄相关代码定义 用K210拍摄到的照片在MaixHub平台 ...

  2. K210学习笔记(三) K210与STM32进行串口通信,K210发STM收

    文章目录 前言 一.以/r/n为结尾 二.K210端代码 三.STM32端 3.1 main函数 四.测试结果 4.1当收到1时 4.2当收到2时 4.3 测试视频 总结 前言 前面我们讲了STM32 ...

  3. 【K210学习笔记】#MaixPy#(3)人脸检测与人脸识别

    目录 一.人脸检测: 1.烧录模型: 2.示例测试: 二.人脸识别: 1.获取机器码: 2.获取人脸识别模型: 3.烧录专用固件: 4.烧录模型: 5.示例测试: 6.报错解决: 一.人脸检测: 1. ...

  4. K210学习笔记(十二)——MaixHub本地训练模型(Windows)

    文章目录 前言 一.环境配置 1.安装python3.8 2.安装pip 3.安装CUDA10.1 4.安装CUDNN 5.tensorflow安装 6.MaixHub本地训练代码下载 二.本地训练使 ...

  5. 【K210】K210学习笔记六——MaixHub在线模型训练识别数字

    [K210]K210学习笔记六--MaixHub在线模型训练识别数字 前言 K210准备工作 数据的获取 MaixHub如何在线训练模型 训练模型在K210上的测试 小结 前言 本人大四学生,电赛生涯 ...

  6. 【K210】K210学习笔记五——串口通信

    [K210]K210学习笔记五--串口通信 前言 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口接收相关定义 K210串口发送接收测试 完整源码 前言 本人大四学生 ...

  7. K210学习笔记(一) K210与STM32串口通信相关

    文章目录 前言 一.STM32 串口中断 接收K210板子发送的ASCII码整数 转换为 多位整形数据 二.MAIX BIT(K210)与STM32串口通讯 2.1 实现MAIX BIT与XCOM之间 ...

  8. K210学习笔记(十)——二维码识别

    前言 MAIX BIT(K210)和openmv在传统视觉处理这个方面代码是通用的,掌握K210的色块识别和二维码识别其实也掌握了openmv对应的用法. 一.二维码是什么? 二维码 (2-dimen ...

  9. K210学习笔记(八)——人脸检测和人脸识别

    前言 人脸检测是人脸识别算法的第一步,人脸识别过程主要分为人脸图像获取.人脸检测.人脸配准.人脸表征以及人脸图像匹配与识别.人脸检测的目标是找出图像中所有的人脸对应的位置,算法的输出是人脸外接矩形(椭 ...

  10. 物联网外设学习笔记-语音识别模块

    LDV7 语音识别模块使用 1.初次使用测试步骤 (1)连接 USB 下载器,接上 GND.RXD.TXD. 5V,注意 RXD/TXD 必须交叉连接,才能进行一 收一发通信,在 PC 机上打开串口调 ...

最新文章

  1. 总结-软件工程师 ( 编程能力 )
  2. ubuntu ibus谷歌输入法安装
  3. BZOJ-1257-[CQOI2007]余数之和sum
  4. python-包package
  5. linux共享库 == windows动态库
  6. ajax 请求post和get,ajax请求get和post
  7. python csv模块用法_python使用csv模块如何将数据存放在一张表的不同行?
  8. C#开发笔记之06-为什么要尽可能的使用尾递归,编译器会为它做优化吗?
  9. 物权法全文内容有哪些呢-广告外链_合肥SEO优化小编告诉您网站外链优化方法大全...
  10. invocation, 作者 Medwyn Goodall,女巫医 [搜索 invocation Medwyn Goodall]
  11. SQL正则表达式的应用 case的灵活应用
  12. 机器学习?有无监督、弱监督、半监督、强化、多示例学习是什么
  13. 希迪智驾发布“V2X+智慧高速”方案,打造智慧高速
  14. 如何自己制作装机工具装系统,硬装系统
  15. 2022年安全员-A证考题及在线模拟考试
  16. 数据库配置白/黑名单
  17. 用CainAbel进行ARP欺骗和用Wireshark侦测ARP欺骗
  18. 一个屌丝程序员的青春(十三)
  19. 8口交换机方案-RTL8309N(含原理图和PCB)
  20. Pro Android学习笔记(四八) ActionBar(1) Home图标区

热门文章

  1. 201671010415+词频统计软件项目报告
  2. 如何使用U盘制作苹果系统启动盘
  3. maya mentray_新手快速掌握Maya Mental ray
  4. 不可不知的家庭生活妙招
  5. CSS实现文字环绕图片效果
  6. 弧微分直角系最详细推导
  7. 台式计算机 如何组装,如何自行组装台式计算机?组装台式计算机主机的教程...
  8. 让你的 commit 更有价值
  9. 浏览器首页被雨林木风篡改( /hao.ylmf.com/u7654.html)
  10. C# 类似PS的魔棒工具(2)羽化