K210(SiPEED MaixBit)MicroPython使用参考(四、孤立词语音识别)

2023-11-02 11:10

本文主要是介绍K210(SiPEED MaixBit)MicroPython使用参考(四、孤立词语音识别),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.首先确定K210使用带语音功能的固件:

1)固件更新工具Kflash_gui 1.6.5_2:kflash_gui_v1.6.5_2_windows.7z_kflash_gui下载-深度学习文档类资源-CSDN文库或

下载站 - Sipeed33

2)带语音功能简化版固件0.6.2_78:

http://cn.dl.sipeed.com/fileList/MAIX/MaixPy/release/master/maixpy_v0.6.2_77_g11806960d/maixpy_v0.6.2_77_g11806960d_minimum_speech_with_ide_support.bin

2.运行以下代码:

import time
from Maix import GPIO, I2S
from fpioa_manager import fm
from speech_recognizer import isolated_word
# user setting
sample_rate   = 16000
record_time   = 4  #sfm.register(20,fm.fpioa.I2S0_IN_D0, force=True)
fm.register(18,fm.fpioa.I2S0_SCLK, force=True)
fm.register(19,fm.fpioa.I2S0_WS, force=True)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)sr = isolated_word(dmac=2, i2s=I2S.DEVICE_0, size=15, shift=1) # maix bit set shift=1
print(sr.size())
print(sr)# threshold
sr.set_threshold(0, 0, 10000)# record and get & set
while True:time.sleep_ms(100)#不停循环print('voice 0 state:',sr.state()) #等待语音输入时是5,有语音变成6if sr.Done == sr.record(0): #有语音信号data = sr.get(0) #获取语音信号数据print(data) #打印数据break #退出循环if sr.Speak == sr.state(): #持续等待语音输入print('Please speak: 0')

.3.正常情况下一开始显示如下信息:

等几秒钟后,以下信息不停循环显示:

这时候,对着开发板话筒大声说“0”,此时出现以下信息且停止程序运行:

如果无反应或显示不与上述一致,说明固件错误或者配置有误,主要是I2S的引脚以及声道(即shift)的设置。

4.运行以下代码:

import time
from Maix import GPIO, I2S
from fpioa_manager import fm
from speech_recognizer import isolated_word
# user setting
sample_rate   = 16000
record_time   = 4  #sio_led_red = 13
fm.register(io_led_red, fm.fpioa.GPIO0)
led_r=GPIO(GPIO.GPIO0, GPIO.OUT)
fm.register(20,fm.fpioa.I2S0_IN_D0, force=True)
fm.register(18,fm.fpioa.I2S0_SCLK, force=True)
fm.register(19,fm.fpioa.I2S0_WS, force=True)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)sr = isolated_word(dmac=2, i2s=I2S.DEVICE_0, size=15, shift=1) # maix bit set shift=1
print(sr.size())
print(sr)# threshold
sr.set_threshold(0, 0, 10000)# record and get & set
while True:time.sleep_ms(100)#不停循环print('voice 0 state:',sr.state()) #等待语音输入时是5,有语音变成6if sr.Done == sr.record(0): #有语音信号data = sr.get(0) #获取语音信号数据print(data) #打印数据break #退出循环if sr.Speak == sr.state(): #持续等待语音输入print('Please speak: 0') #要求对着话筒说0
while True:time.sleep_ms(100)print('voice 0 state:',sr.state())if sr.Done == sr.record(1):data = sr.get(1)print(data)breakif sr.Speak == sr.state():print('Please speak: 1') #要求对着话筒说1# recognizer
time.sleep_ms(1000)#等待一段时间
print('recognizer\n')
while True:time.sleep_ms(3000)print('SR recognize state:',sr.state()) #等待语音输入时是5,有语音变成6print('DTW value:',sr.dtw(data)) #DTW值if sr.Done == sr.recognize():res = sr.result()print('res value:',res)if res!=None:  #无法识别输出Noneled_r.value(res[0]) #根据识别的语音开关灯,0点亮,1关闭

根据提示,先录入语音0,然后录入语音1,等待几秒后,当串行终端出现“SR recognize state: 5”时,再次对着开发板话筒说0或者1,系统将进行识别,实现对led的控制,0点亮,1关闭。

5.本开发板板载硅麦型号为MSM261S4030H0R,查手册知其为标准I2S输出,故在此设置为align_mode=I2S.STANDARD_MODE,称之为飞利浦格式,对于部分DAC语音设备,较常采用align_mode=I2S.RIGHT_JUSTIFYING_MODE,也被称为日本格式。

 6.参考资料来自官方网站:

isolated word - Sipeed Wiki

这篇关于K210(SiPEED MaixBit)MicroPython使用参考(四、孤立词语音识别)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/330212

相关文章

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学