跳到主要内容
版本:V2.0.5.x

1.项目简介


项目概述

tkvoice 是一个基于天工行者(无界/无疆)的语音交互框架项目。

信息

天工行者(无界/无疆)配备了讯飞的RK3588 AIUI多模态开发套件,其音频传输协议可参考。

仓库地址:https://github.com/UBTECH-Robot/tkvoice/tree/opentts_public

opentts_public 分支集成了语音识别(ASR)、大语言模型(LLM)和文本转语音(TTS)三大核心功能,实现端到端的离线语音对话能力,目前支持中文。

注意

本文档的介绍内容主要是基于 opentts_public 分支,也就是纯离线的语音方案。但是大体的流程也是同样适用于 allonline_public 分支的。

可以这样认为,本项目是一个 ASR -> LLM -> TTS 的服务框架,而 opentts_public 分支,是基于这个框架,对接了搭建于天工本地的 ASR ,LLM,TTS 服务。而 allonline_public 分支,则是基于这个框架,语音方面对接了在线的微软语音服务,LLM方面则是可对接兼容OpenAI LLM接口的任意LLM提供商(因为内部直接使用的 openai 的python SDK)。

如果你要使用 allonline_public 分支,参考【文档】


系统架构

硬件部署

├── x86 服务器 (192.168.41.1) → ASR 服务 (Funasr)
├── Orin 板 (192.168.41.2) → LLM 服务 (Ollama) + TTS
└── RK3588s 设备 → 音频采集设备

数据流处理流程

RK3588s 音频流

[tk_audio_publisher] 获取整句音频
↓ (audio_sentence_frames 话题)
[tk_asr_text_publisher] 语音识别
↓ (asr_sentence 话题)
[tk_audio_process] LLM理解 + TTS合成

AudioPlayer 播放输出

核心技术栈

功能模块技术方案部署位置端口
ASRFunasrx86 服务器10097
LLMOllama (qwen2.5:1.5b)Orin 板-
TTSPiper-TTSOrin 板-
框架ROS 2 (Python)Orin 板-

项目结构分析

主要目录说明

tkvoice/
├── src/
│ ├── audio_message/ # 自定义ROS消息定义
│ │ └── msg/
│ │ └── AudioFrame.msg # 音频帧消息格式
│ └── audio_service/ # 核心服务包
│ ├── setup.py # Python包配置 (v0.2.26)
│ ├── package.xml # ROS2包元数据
│ └── audio_service/ # 主代码目录
│ ├── tk_audio_publisher.py # 音频发布者
│ ├── tk_asr_text_publisher.py # ASR文本发布者
│ ├── tk_audio_process.py # 音频处理 + LLM + TTS
│ ├── funasr_client.py # Funasr API封装
│ ├── llm_client.py # Ollama API封装
│ ├── piper_provider.py # TTS语音合成
│ ├── socket_audio_provider.py # 音频Socket接收
│ ├── socket_connector.py # 网络连接
│ ├── log_config.py # 日志配置
│ └── utils.py # 工具函数
├── res/ # 资源和安装脚本
│ ├── docker_funasr/ # Funasr Docker脚本
│ ├── ollama/ # Ollama安装脚本
│ └── piper_voices/ # TTS语音模型
└── build.sh / install.sh # 构建和安装脚本

核心代码模块(8个主要模块)

模块功能描述
tk_audio_publisher从RK3588s获取音频流,发布整句音频
tk_asr_text_publisher音频识别,通过WebSocket调用Funasr服务
tk_audio_process核心处理节点:LLM理解 + TTS合成 + 音频播放
funasr_clientFunasr WebSocket客户端封装
llm_clientOllama API客户端封装
piper_providerPiper TTS Python库调用
socket_audio_providerSocket音频数据接收
socket_connector网络连接管理

开源协议

部分协议
项目主体Apache-2.0
TTS模块 (piper-tts)GPL-3.0

依赖和部署

系统依赖

  • ROS 2 - 中间件框架
  • Python 3 - 编程语言
  • Docker - x86服务器容器化

第三方服务

  • Funasr - 语音识别模型服务
  • Ollama - 大语言模型推理框架
  • Piper-TTS - 离线语音合成库

安装步骤

  1. x86服务器:安装Docker + Funasr镜像
  2. Orin板:安装Ollama + 拉取qwen2.5:1.5b模型
  3. Orin板:部署audio_service ROS包