基于人脸识别的简易语音交互案例
注意使用本案例需要先通过roslaunch启动头部相机,保证有话题
/camera/color/image_raw
存在# 旧版4代, 4Pro
roslaunch dynamic_biped load_robot_head.launch use_orbbec:=false all_enable:=false
# 标准版, 进阶版, 展厅版, 展厅算力版
roslaunch dynamic_biped load_robot_head.launch use_orbbec:=true all_enable:=false
- 参数说明:(true为是, false为否)
- use_orbbec 是否是奥比中光相机
- all_enable 启动相机时是否启用yolo检测及二维码检测功能
描述
- 实现了一个基于人脸识别的语音交互系统,包括语音识别、人脸检测和语音播报功能。
- 当用户说出的话中包含"是谁"时,系统会进行人脸识别并播报识别结果。
- 示例代码路径:
<kuavo_ros_application>/src/kuavo_large_model/kuavo_re_face_model/asr_re_tts.py
程序逻辑
导入模块及定义全局变量
- 作用:导入所需的Python标准库和第三方库并定义录音和音频处理的全局参数。
Ws_Param 类
- 作用:处理讯飞语音合成服务的参数配置。
- 关键逻辑:
- 初始化APPID、APIKey、APISecret等参数
- 生成WebSocket连接所需的URL和认证信息
tts_xunfei 函数
- 作用:调用讯飞语音合成服务将文本转换为语音。
- 关键逻辑:
- 创建WebSocket连接
- 发送文本数据
- 接收并保存合成的语音文件
ASRClient 类
- 作用:实现语音识别和人脸识别的核心功能。
- 关键逻辑:
- 初始化语音识别和人脸检测器
- 实现录音功能
- 处理语音识别结果
- 进行人脸识别和语音播报
主程序
- 作用:主程序逻辑,循环执行语音识别和人脸识别。
- 关键逻辑:
- 初始化ASRClient
- 循环执行录音和识别
- 根据识别结果进行相应处理
说明
⚠️ 注意: 该案例使用了科大讯飞的RTASR和TTS模型,这两个模型均为收费模型,需要自行创建账号充值获取API Key并将获取到的API Key复制到程序对应地方
该案例所使用的语音模型为讯飞的模型: https://www.xfyun.cn/
讯飞实时语音转写(RTASR)模型
- https://console.xfyun.cn/app/myapp创建RTASR应用,获取app_id和api_key
- 将程序中的app_id和api_key替换成获取到的即可,在程序
<kuavo_ros_application>/src/kuavo_large_model/kuavo_re_face_model/asr_re_tts.py
的125-126行
讯飞语音合成(TTS)模型
- https://console.xfyun.cn/app/myapp创建TTS应用,获取APPID,APISecret,APIKey
- 将程序中的APPID,APISecret,APIKey替换成获取到的即可,在程序
<kuavo_ros_application>/src/kuavo_large_model/kuavo_re_face_model/asr_re_tts.py
的114-115行
环境配置
- 安装依赖
python3 -m pip uninstall matplotlib
python3 -m pip install matplotlib==3.5.1
- 下载人脸识别模型
wget https://kuavo.lejurobot.com/kuavo_research_editiion/face_models/buffalo_l.zip
mkdir -p ~/.insightface/models/buffalo_l
unzip buffalo_l.zip -d ~/.insightface/models/buffalo_l
- 准备人脸数据
- 将需要识别的人脸图片放入
faces/
目录,图片格式指定为png、jpg、jpeg三种。 - 图片文件名设置为对应的人名
执行
- 启动
到达目录
<kuavo_ros_application>/src/kuavo_large_model/kuavo_re_face_model/
下运行:
python3 -m pip install -r requirements.txt
python3 asr_re_tts.py
- 使用说明
- 程序启动后会自动开始监听语音输入
- 当识别到语音中包含"是谁"时,会触发人脸识别
- 如果识别到已知人脸,会通过语音播报:"xxx,你好"
- 如果未识别到已知人脸,会播报:"不好意思,我不认识你"
- 运行案例前需要先打开头部相机
效果
- 语音识别:实时识别用户语音输入
- 人脸识别:快速识别摄像头中的人脸
- 语音播报:播报识别结果