K210学习笔记——语音识别
文章目录
- 前言
- 使用方法
- 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学习笔记——语音识别相关推荐
- 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练
[K210]K210学习笔记七--使用K210拍摄照片并在MaixHub上进行训练 前言 K210准备工作 K210如何拍摄照片 准备工作 拍摄相关代码定义 用K210拍摄到的照片在MaixHub平台 ...
- K210学习笔记(三) K210与STM32进行串口通信,K210发STM收
文章目录 前言 一.以/r/n为结尾 二.K210端代码 三.STM32端 3.1 main函数 四.测试结果 4.1当收到1时 4.2当收到2时 4.3 测试视频 总结 前言 前面我们讲了STM32 ...
- 【K210学习笔记】#MaixPy#(3)人脸检测与人脸识别
目录 一.人脸检测: 1.烧录模型: 2.示例测试: 二.人脸识别: 1.获取机器码: 2.获取人脸识别模型: 3.烧录专用固件: 4.烧录模型: 5.示例测试: 6.报错解决: 一.人脸检测: 1. ...
- K210学习笔记(十二)——MaixHub本地训练模型(Windows)
文章目录 前言 一.环境配置 1.安装python3.8 2.安装pip 3.安装CUDA10.1 4.安装CUDNN 5.tensorflow安装 6.MaixHub本地训练代码下载 二.本地训练使 ...
- 【K210】K210学习笔记六——MaixHub在线模型训练识别数字
[K210]K210学习笔记六--MaixHub在线模型训练识别数字 前言 K210准备工作 数据的获取 MaixHub如何在线训练模型 训练模型在K210上的测试 小结 前言 本人大四学生,电赛生涯 ...
- 【K210】K210学习笔记五——串口通信
[K210]K210学习笔记五--串口通信 前言 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口接收相关定义 K210串口发送接收测试 完整源码 前言 本人大四学生 ...
- K210学习笔记(一) K210与STM32串口通信相关
文章目录 前言 一.STM32 串口中断 接收K210板子发送的ASCII码整数 转换为 多位整形数据 二.MAIX BIT(K210)与STM32串口通讯 2.1 实现MAIX BIT与XCOM之间 ...
- K210学习笔记(十)——二维码识别
前言 MAIX BIT(K210)和openmv在传统视觉处理这个方面代码是通用的,掌握K210的色块识别和二维码识别其实也掌握了openmv对应的用法. 一.二维码是什么? 二维码 (2-dimen ...
- K210学习笔记(八)——人脸检测和人脸识别
前言 人脸检测是人脸识别算法的第一步,人脸识别过程主要分为人脸图像获取.人脸检测.人脸配准.人脸表征以及人脸图像匹配与识别.人脸检测的目标是找出图像中所有的人脸对应的位置,算法的输出是人脸外接矩形(椭 ...
- 物联网外设学习笔记-语音识别模块
LDV7 语音识别模块使用 1.初次使用测试步骤 (1)连接 USB 下载器,接上 GND.RXD.TXD. 5V,注意 RXD/TXD 必须交叉连接,才能进行一 收一发通信,在 PC 机上打开串口调 ...
最新文章
- 总结-软件工程师 ( 编程能力 )
- ubuntu ibus谷歌输入法安装
- BZOJ-1257-[CQOI2007]余数之和sum
- python-包package
- linux共享库 == windows动态库
- ajax 请求post和get,ajax请求get和post
- python csv模块用法_python使用csv模块如何将数据存放在一张表的不同行?
- C#开发笔记之06-为什么要尽可能的使用尾递归,编译器会为它做优化吗?
- 物权法全文内容有哪些呢-广告外链_合肥SEO优化小编告诉您网站外链优化方法大全...
- invocation, 作者 Medwyn Goodall,女巫医 [搜索 invocation Medwyn Goodall]
- SQL正则表达式的应用 case的灵活应用
- 机器学习?有无监督、弱监督、半监督、强化、多示例学习是什么
- 希迪智驾发布“V2X+智慧高速”方案,打造智慧高速
- 如何自己制作装机工具装系统,硬装系统
- 2022年安全员-A证考题及在线模拟考试
- 数据库配置白/黑名单
- 用CainAbel进行ARP欺骗和用Wireshark侦测ARP欺骗
- 一个屌丝程序员的青春(十三)
- 8口交换机方案-RTL8309N(含原理图和PCB)
- Pro Android学习笔记(四八) ActionBar(1) Home图标区
热门文章
- 201671010415+词频统计软件项目报告
- 如何使用U盘制作苹果系统启动盘
- maya mentray_新手快速掌握Maya Mental ray
- 不可不知的家庭生活妙招
- CSS实现文字环绕图片效果
- 弧微分直角系最详细推导
- 台式计算机 如何组装,如何自行组装台式计算机?组装台式计算机主机的教程...
- 让你的 commit 更有价值
- 浏览器首页被雨林木风篡改( /hao.ylmf.com/u7654.html)
- C# 类似PS的魔棒工具(2)羽化