上传新演示视频
一个基于 Python 的、端到端全流式语音助手。本项目旨在实现从语音输入到AI****回复全链路的最低延迟,提供人性化低延迟的心理咨询的服务。
start.sh
stop.sh
Ollama
OllamaClient
CosyVoice2
Snowboy
SpeechRecognitionService
TextToSpeechService
AudioRenderer
ChatViewModel
ChatStore
ChatPage
MicrophoneInputView
本系统采用边端协同架构。端侧负责音频的采集与播放,而边缘端则承担所有计算密集型任务(ASR, LLM, TTS)。
ollama pull qwen:7b
建议在conda环境中部署
请参考CosyVoice官方仓库
conda env create -f requirement/cosyvoice_vllm.yml conda activate cosyvoice_vllm
conda env create -f requirement/audio.yml conda activate audio
请确保 Ollama 服务已在后台启动,然后按照以下步骤操作。
在服务器上,只需运行一个命令即可启动所有必需的后端服务(ASR, TTS, API Server)以及 natapp 内网穿透。
natapp
bash start.sh
脚本会自动处理各个服务的启动顺序、日志记录(保存在 logs/ 目录)和进程管理(PID保存在 pids/ 目录)。natapp 启动后会提供一个公网地址,鸿蒙App应连接此地址。
logs/
pids/
如果你想在PC上测试后端服务,可以运行端侧的主程序。
在您的客户端机器上打开终端:
python voice_assistant.py
现在说出定制的唤醒词,您可以开始与语音助手对话了!
需要借助DevEco烧录app,请参考DevEco官方文档
当您想关闭所有后端服务时,运行:
bash stop.sh
该脚本会根据 pids/ 目录中记录的进程ID,安全地关闭所有正在运行的服务。
服务器需要的代码
. ├── server/ # 服务端核心逻辑 │ ├── prompts/ # LLM 的角色提示文件 │ ├── ollama_client.py # Ollama LLM 客户端 │ └── tts_server_stable.py # start.sh 使用的稳定版 TTS 服务 ├── test/ │ └── test_trt.py # TensorRT 优化脚本 ├── .gitignore ├── api_server.py # FastAPI 网关服务 (供鸿蒙App调用) ├── asr_server.py # ASR 语音识别服务 ├── start.sh # 一键启动所有服务的脚本 └── stop.sh # 一键停止所有服务的脚本
语音助手端侧需要的代码
. ├── audio_stream_client.py # 封装了VAD、降噪和ASR流式发送逻辑 ├── tts_client.py # 封装了TTS音频流接收和播放逻辑 └── voice_assistant.py # PC端语音助手的主程序和状态管理
鸿蒙app端侧需要的代码
ets/ ├── components/ │ └── MicrophoneInputView.ets # 🎙️ 麦克风按键UI组件 ├── entryability/ │ └── EntryAbility.ts # 應用入口 ├── model/ │ ├── ChatModel.ets # 📝 聊天消息的数据模型 │ └── ChatStore.ets # 📦 聊天状态管理 ├── pages/ │ ├── ChatPage.ets # 💬 聊天主页面 │ └── Index.ets # 🤖 AI角色选择页面 ├── service/ │ ├── SpeechRecognitionService.ets # 👂 ASR 服务连接逻辑 │ └── TextToSpeechService.ets # 🗣️ TTS 服务连接和播放逻辑 └── viewModel/ └── ChatViewModel.ets # 🧠 UI的业务逻辑和数据绑定
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
一个基于 Python 的、端到端全流式语音助手。本项目旨在实现从语音输入到AI****回复全链路的最低延迟,提供人性化低延迟的心理咨询的服务。
队伍信息
核心特性
后端服务
start.sh和stop.sh脚本,实现所有后端服务的一键启动、日志管理和优雅关闭,极大简化了部署流程。Ollama无缝对接本地部署的各种大语言模型,并封装了专业的OllamaClient进行高效的流式交互和对话管理,确保数据私密性和低成本运行 。CosyVoice2先进的TTS引擎,不仅能生成自然、富有情感的语音回复,还支持通过配置文件轻松切换多种预设音色(如“妈妈”、“朋友”、“老师”)。语音助手客户端
Snowboy等本地化唤醒词引擎,实现低功耗、高精度的“随时唤醒”功能,让设备在待机状态下也能随时响应指令。鸿蒙客户端
SpeechRecognitionService,通过 WebSocket 将设备麦克风的音频流实时发送到后端 ASR 服务进行识别。TextToSpeechService负责接收后端返回的文本和音频流。文本流用于在界面上逐字显示AI的回复,音频流则通过鸿蒙的AudioRenderer实时播放,实现“边说边看”的同步效果 。ChatViewModel负责业务逻辑,ChatStore管理状态,UI(ChatPage,MicrophoneInputView)负责展示。系统架构
本系统采用边端协同架构。端侧负责音频的采集与播放,而边缘端则承担所有计算密集型任务(ASR, LLM, TTS)。
技术栈
安装与部署
建议在conda环境中部署
请参考CosyVoice官方仓库
如何运行
请确保 Ollama 服务已在后台启动,然后按照以下步骤操作。
1. 启动所有后端服务
在服务器上,只需运行一个命令即可启动所有必需的后端服务(ASR, TTS, API Server)以及
natapp内网穿透。脚本会自动处理各个服务的启动顺序、日志记录(保存在
logs/目录)和进程管理(PID保存在pids/目录)。natapp启动后会提供一个公网地址,鸿蒙App应连接此地址。2. 运行PC测试客户端
如果你想在PC上测试后端服务,可以运行端侧的主程序。
在您的客户端机器上打开终端:
现在说出定制的唤醒词,您可以开始与语音助手对话了!
3. 运行鸿蒙app
需要借助DevEco烧录app,请参考DevEco官方文档
4. 停止所有服务
当您想关闭所有后端服务时,运行:
该脚本会根据
pids/目录中记录的进程ID,安全地关闭所有正在运行的服务。项目结构
服务器需要的代码
语音助手端侧需要的代码
鸿蒙app端侧需要的代码