Skip to main content

基于人脸识别的简易语音交互案例

注意使用本案例需要先通过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

程序逻辑

  1. 导入模块及定义全局变量

    • 作用:导入所需的Python标准库和第三方库并定义录音和音频处理的全局参数。
  2. Ws_Param 类

    • 作用:处理讯飞语音合成服务的参数配置。
    • 关键逻辑:
      • 初始化APPID、APIKey、APISecret等参数
      • 生成WebSocket连接所需的URL和认证信息
  3. tts_xunfei 函数

    • 作用:调用讯飞语音合成服务将文本转换为语音。
    • 关键逻辑:
      • 创建WebSocket连接
      • 发送文本数据
      • 接收并保存合成的语音文件
  4. ASRClient 类

    • 作用:实现语音识别和人脸识别的核心功能。
    • 关键逻辑:
      • 初始化语音识别和人脸检测器
      • 实现录音功能
      • 处理语音识别结果
      • 进行人脸识别和语音播报
  5. 主程序

    • 作用:主程序逻辑,循环执行语音识别和人脸识别。
    • 关键逻辑:
      • 初始化ASRClient
      • 循环执行录音和识别
      • 根据识别结果进行相应处理

说明

⚠️ 注意: 该案例使用了科大讯飞的RTASR和TTS模型,这两个模型均为收费模型,需要自行创建账号充值获取API Key并将获取到的API Key复制到程序对应地方

环境配置

  1. 安装依赖
python3 -m pip uninstall matplotlib
python3 -m pip install matplotlib==3.5.1
  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
  1. 准备人脸数据
  • 将需要识别的人脸图片放入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
  • 使用说明
    1. 程序启动后会自动开始监听语音输入
    2. 当识别到语音中包含"是谁"时,会触发人脸识别
    3. 如果识别到已知人脸,会通过语音播报:"xxx,你好"
    4. 如果未识别到已知人脸,会播报:"不好意思,我不认识你"
    5. 运行案例前需要先打开头部相机

效果

  • 语音识别:实时识别用户语音输入
  • 人脸识别:快速识别摄像头中的人脸
  • 语音播报:播报识别结果