本帖最后由 kit7828 于 2022-12-3 11:24 编辑
一直想在行空板上进行语音识别的尝试和应用,尤其是看到官方网站中给出的离线语音识别maix-speech,结果还是非常失望,通过百度云进行的语音识别功能非常强大,识别率和识别速度都非常满意。
一、几乎没有效果的maix-speech离线语音识别
Maix-Speech 是专为嵌入式环境设计的离线语音库,设计目标包括:ASR/TTS/CHAT
作者的设计初衷是完成一个低至Cortex-A7 1.0GHz 单核下可以实时运行的ASR库。
目前市面上的离线语音库非常稀缺,即使有也对主控要求很高,Maix-Speech 针对语音识别算法进行了深度优化,在内存占用上达到了数量级上的领先,并且保持了优良的WER。
行空板上运行maix-speech离线语音识别效果很差,原因应该还是行空板的运算速度不够,或许直接用C语音编程能够实现,但是Python的效果几乎没有。过程如下:
1、官方网站中下载整个案例代码
我用的是网盘2,百度网盘https://pan.baidu.com/s/1H8yVFjFTEvZIrgwzDYpVEA?pwd=aixk
2、上传压缩包至行空板
下载后,通过浏览器打开10.1.2.3,使用文件上传功能,其实在Mind+中也是可以上传的。
在行空板中运行命令解压maix-speech.zip
可以在行空板中看到文件目录
3、安装依赖库
依照提示,先运行1-Install_dependency.py安装依赖库。
5、运行2-speech.py进行离线语音识别
识别的语音只有3个,分别是天猫精灵、开灯和关灯
6、识别效果
从截图可以看到有一定的识别效果,但是速度太慢了,以致于不知道有没有正确识别,前后之间的时间差,感觉也是无序的,综合来说,几乎没有识别。
二、强大的百度云语音识别
百度AI云语音识别精度很高,能够快递精准的识别语音,并转换为文字,需要调用API,将语音录音文件上传到云,然后就能得到经过AI云识别后的文字。
1、Python代码
通过行空板官方网站,看到了百度语音识别的案例,就直接拿来使用了。感觉Python的代码非常简单,应该是aip中进行了封装。
代码如下:
from unihiker import GUI,Audio #导入包
from aip import AipSpeech
gui=GUI() #实例化GUI类
audio = Audio() # 实例化Audio类
#gui 添加文本标题
gui.draw_text(x=60, y=20,color="#4169E1", font_size=18,text="语音识别助手")
# gui 添加按钮信息
gui.add_button(x=120, y=150, w=100, h=30, text="录音", origin='center', onclick=lambda:Record() )
gui.add_button(x=120, y=210, w=100, h=30, text="识别", origin='center', onclick=lambda: Recognition() )
# 识别显示信息
info_text2 = gui.draw_text(x=0, y=60,color="black",text="")
""" 你的 APPID AK SK """
APP_ID = ''
API_KEY = ''
SECRET_KEY = ''
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
# 读取文件(固定代码)
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
# 识别本地文件
def voiceToText():
res = client.asr(get_file_content('3s.wav'), 'wav', 16000, {
'dev_pid': 1537,
})
return res.get('result')[0]
def Record():
print("开始进行录音")
audio.record('3s.wav', 5) #录音5S
print("录音结束")
info_text2.config(x=0, y=60, text="")# 清空识别信息显示栏
def Recognition():
print("开始进行语音识别")
msg = voiceToText()
print(msg)
info_text2.config(x=0, y=60, text=msg) #更新识别显示的信息
time.sleep(1)
import time
while True:
#增加等待,防止程序退出和卡住
time.sleep(1)
只改了按钮的位置,以及录音长度改成了5秒。
2、百度云中的语音识别应用
需要在百度云中创建应用,并进行简单的设置
记录APPID、 API Key 、 Secret Key,然后更新前面的py代码
3、行空板中设置WiFi联网
通过http://10.1.2.3进行WiFi的设置,这里就不啰嗦了。
4、运行百度语音识别程序
可以看到识别效果非常好,由于我这边的wifi延迟比较严重,因此,识别的时候时间的差距比较大。
5、百度云语音识别视频
12月3日
三、总结
网上评价maix-speech是一款非常不错的离线语音识别,也看过语音识别的视频,效果还是不错的,行空板上没有效果,应该有两个方面的因素,一个是没有训练,没有用到特定的识别模型,二是运算速度的限制,尤其是Python代码,速度上更是拖了后腿。
百度云语音识别的效果确实非常棒,只是对网络的依赖比较重,网速更不上的时候,效果就差些。