前言
针对语音交互过程,提供了一种语音唤醒的方法供大家参考,语音交互采用snowboy离线语音唤醒引擎,snowboy已经被kitt.AI团队下架,但我们仍能够在github中找到该项目
获取相关工具开发包网址:
链接: link.
一、语音唤醒相关环境搭建
下载完成后,文件夹中文件如下图所示,在终端处打开swig文件夹进入python文件夹通过make指令编译生成python文件及二进制链接文件即可使用
二、使用步骤
1.使用流程
1.传入热词模型snowboy.umdl
2.使用snowboydecoder模块创建对象snowboydecoder.HotwordDetector(model,sensitivity=0.5)
3.开始热词检测,detector.start(detected_callback=function_name,interrupt_callback,sleep_time=0.03)
2.示例代码
代码如下(示例):
#_*_coding=UTF-8_*_
#导入SDK包
import sys
sys.path.append('/home/pi/SnowBoy')
import my1audio
import snowboydecoder
import signal
interrupted = False
def signal_handler(signal,frame):
global interrupted
interrupted = True
#play()为所传入的函数
def play():
my1audio.play('snowboy_rouse.wav')
return True
def interrupt_callback():
global interrupted
return interrupted
def rouse(function):
#判断命令行指令是否传入唤醒词模型,无则退出程序
if len(sys.argv)==1:
print("Error:need to specify model name")
print("Usage:python demo.py your.model")
sys.exit(-1)
#唤醒词模型为输入的参数,这里可以进行修改
#modle = sys.argv[1]
modle = '/home/pi/SnowBoy/resources/snowboy.umdl' #修改model,指定其文件名
#capture Sigint signal ,e.g.,Ctrl+C
signal.signal(signal.SIGINT,signal_handler)
#唤醒词检测函数,调整sensitivity参数可修改唤醒词检测的准确性
detector = snowboydecoder.HotwordDetector(modle,sensitivity=0.5)
print "Listening......Please Ctrl+C to exit"
#main loop
#回调函数detected_callback=snowboydecoder.play_audio_file
#修改回调函数可实现我们的功能
detector.start(detected_callback=function,interrupt_check=interrupt_callback,sleep_time=0.3)
#资源释放
detector.terminate()
##实现自己的语音唤醒平台,我们只需要修改三个参数:
##1.修改model,model=‘resources/snowboy.umdl’ 修改model,指定model的文件名
##2.修改热度检测灵敏度修改sensitivity
##3.修改回调函数 detected_callback=own_callbacks
if __name__=='__main__':
rouse(play)
print 'aaaa'
总结
通过采用离线语音唤醒引擎能够实现系统被唤醒后执行相应的功能