豆包 RTC AI 聊天机器人

豆包 RTC AI 聊天机器人

该 AI 聊天机器人方案基于豆包火山 RTC 引擎开发,具有以下特性:

  • 支持智能体切换。
  • 支持音色切换。
  • 支持ASR字幕。
  • 支持TTS字幕。
  • 支持语音中断/打断。
  • 支持服务器地址切换。
  • 支持语音唤醒。
  • 使用 Python 语言,便于二次开发。
  • 开发资源
  • 快速上手
  • 软件设计

硬件资料

软件资料

开发工具

  • QPYcom - QuecPython 调试工具
    • 版本:V3.9.0
    • 下载 QPYcom
  • VSCode - 代码编辑器

实验源码

  • branch:ec800m-quecduino
  • 从 Github 仓库获取源代码步骤如下:
    git clone https://github.com/QuecPython/AIChatBot-Volcengine-webRTC.git
    cd AIChatBot-Volcengine-webRTC
    git checkout ec800m-quecduino
    
  • 压缩包下载

硬件准备

  • Windows 电脑一台,建议 Win10 系统。

  • 一套 EC800MCNLE / EC800MCNGB QuecDuino 开发板 (含天线、Type-C 数据线等)。

  • 一张可正常使用的 Nano SIM 卡。

  • 一个 2-5W 功率的喇叭。

环境搭建

  • 下载并安装 EC800M 系列模组驱动:QuecPython_USB_Driver_Win10_ASR

  • 下载并安装 VSCode

  • 下载并解压 QPYcom 工具到电脑的合适位置。

  • 下载固件包。

  • 下载实验源码

    💡 Tips

    • 固件内火山对话 token 临时测试使用,随时可能取消,如遇到无法正常加入房间对话,请联系移远fae人员获取支持。
    • 商业应用请走商务流程。

硬件连接

按照下图进行硬件连接:

  1. 将喇叭连接至图中标识有SPK+SPK-的排针上。
  2. 在图示位置插入可用的 Nano SIM 卡。
  3. 将天线连接至标识有LTE字样的天线连接座上。
  4. 使用 Type-C 数据线连接开发板和电脑。

设备开发

开机

完成硬件连接的工作后,长按开发板上标识为PWK的按键,直到网络灯闪烁,或电脑设备管理器的端口列表中出现包含 Quectel USB 字样的 COM 口,表示开机成功。

comport.png

烧录固件包

参考此章节,烧录对应型号固件包至开发板。

脚本导入与运行

  1. 参考此章节,将源码目录下 code 文件夹中的所有文件导入到模组文件系统,如下图所示:

 

  1. 参考此章节,执行主程序文件 ai_main.py
  2. 参考此章节,停止程序运行。

业务调试

程序启动

执行 ai_main.py 脚本后,程序开始运行。

进入房间

按下 KEY S3 键进入房间,收到 TIKTOK_RTC_EVENT_START 事件表示进入房间成功,开始进行语音对话。

退出房间

按下 KEY S2 键退出房间,收到 TIKTOK_RTC_EVENT_STOP 事件表示退出房间成功。

参考运行日志:

import example
>>> example.exec('/usr/ai_main.py')
volume: 11
>>> lte network normal
ai task running

# 按KEY S3键进入智能体
rtc_queue key event 1
start rtc
TIKTOK_RTC_EVENT_START
TIKTOK_RTC_EVENT_TTS_TEXT 你
TIKTOK_RTC_EVENT_TTS_TEXT 你好
TIKTOK_RTC_EVENT_TTS_TEXT 你好有
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么可
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么可以
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么可以帮
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么可以帮到
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么可以帮到你
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么可以帮到你的
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么可以帮到你的吗

# 按KEY S2键退出智能体
rtc_queue key event 2
stop rtc
TIKTOK_RTC_EVENT_STOP

软件框架

框架设计图

业务系统启动流程

代码讲解

AI 事件管理

处理 AI 事件

def ai_callback(args):
    global GPIO39 # audio PA GPIO管脚
    event = args[0]
    msg = args[1]
    if event == 1:
        print('TIKTOK_RTC_EVENT_START') # 进入房间,可以开始进行语音对话。
        GPIO39.write(1)
    elif event == 2:
        print('TIKTOK_RTC_EVENT_STOP') # 退出房间,语音对话结束。
        GPIO39.write(0)
    elif event == 3:
        print('TIKTOK_RTC_EVENT_TTS_TEXT {}'.format(msg)) # TTS 文本,模组播放tts文本。
    elif event == 4:
        print('TIKTOK_RTC_EVENT_ASR_TEXT {}'.format(msg)) # ASR 文本,模组识别到语音文本。
    elif event == 5:
        print('TIKTOK_RTC_EVENT_ERROR {}'.format(msg)) # 错误信息,模组发生错误时,上报错误信息。
    else:
        print('TIKTOK_RTC_EVENT UNKNOWN {}'.format(event)) #未知异常事件

AI 初始化

初始化 AI 对象,注册回调接口,以及配置AI对话时间。

tiktok = TiktokRTC(300000, ai_callback)

参考运行日志


import example
>>> example.exec('/usr/ai_main.py')
volume: 11
>>> lte network normal
ai task running

AI 进入房间#

按下KEY S3键进入房间,开始进行语音对话,调用tiktok.active(True)接口激活。

tiktok.active(True)

参考运行日志

# 按KEY S3键进入智能体
rtc_queue key event 1
start rtc
TIKTOK_RTC_EVENT_START
TIKTOK_RTC_EVENT_TTS_TEXT 你
TIKTOK_RTC_EVENT_TTS_TEXT 你好
TIKTOK_RTC_EVENT_TTS_TEXT 你好有
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么可
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么可以
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么可以帮
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么可以帮到
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么可以帮到你
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么可以帮到你的
TIKTOK_RTC_EVENT_TTS_TEXT 你好有什么可以帮到你的吗

AI 退出房间#

按下KEY S2键退出房间,结束语音对话,调用tiktok.active(False)接口去激活。

tiktok.active(False)

参考运行日志


# 按KEY S2键退出智能体
rtc_queue key event 2
stop rtc
TIKTOK_RTC_EVENT_STOP

沟通无界,服务无限

了解更多关于移远公司、产品和技术支持的信息。