You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
1 year ago | |
|---|---|---|
| .. | ||
| bindings | 1 year ago | |
| controllers | 1 year ago | |
| views | 1 year ago | |
| README.md | 1 year ago | |
README.md
Realtime 实时语音聊天模块
⚠️ 当前状态
此模块为功能预览版本,语音对话功能暂未实现,仅提供界面效果演示。
后续将通过插件方式实现完整的语音识别、AI对话和语音合成功能。
概述
Realtime模块预留了类似ChatGPT app的实时语音对话功能框架,当前版本提供:
- ✅ 界面框架 - 完整的UI布局和视觉效果
- ✅ 状态管理 - 聆听、思考、回答状态的可视化
- ✅ 动画效果 - 圆形波形动画和状态指示器
- ✅ 交互体验 - 按钮点击和模拟状态切换
- ⏳ 语音功能 - 待通过插件实现
界面设计
布局结构
- 顶部状态区域 - 显示当前状态和提示信息
- 中间可视化区域 - 圆形波形动画,类似ChatGPT风格
- 底部控制区域 - 主控制按钮和状态指示器
状态指示
- 🔵 聆听状态 - 蓝色动画,模拟语音输入
- 🟠 思考状态 - 橙色动画,模拟AI处理
- 🟢 回答状态 - 绿色动画,模拟语音输出
- ⚪ 空闲状态 - 灰色静态,等待交互
使用方法
路由导航
// 跳转到实时语音对话页面(模拟功能)
Get.toNamed(Routes.realtime);
体验模拟效果
- 点击中央按钮开始模拟聆听
- 3秒后自动切换到AI思考状态
- 2秒后切换到语音播放状态
- 3秒后回到初始状态
技术架构
控制器 (RealtimeController)
- 状态管理:
isListening,isSpeaking,isProcessing - 模拟逻辑: 定时器控制状态切换
- 动画控制: 波形数据生成和更新
- 生命周期: 基础资源管理
视图组件
- RealtimeView - 主视图容器
- VoiceVisualizer - 语音可视化组件(简化版)
- ControlButton - 交互控制按钮(模拟功能)
待实现功能
- AsrService - 语音识别服务(插件)
- TtsService - 语音合成服务(插件)
- OpenAIServiceAdapter - AI对话服务(插件)
模拟流程
- 点击开始 → 模拟语音识别启动
- 动态波形 → 显示模拟的语音输入效果
- 自动停止 → 3秒后自动结束聆听
- AI处理 → 模拟AI思考过程
- 语音输出 → 模拟语音播放效果
- 完成循环 → 返回待机状态
开发计划
阶段一:界面框架 ✅
- 基础UI布局
- 状态管理
- 动画效果
- 模拟交互
阶段二:插件集成 ⏳
- 语音识别插件集成
- AI对话服务集成
- 语音合成插件集成
- 实时流式处理
阶段三:功能完善 ⏳
- 错误处理优化
- 性能优化
- 用户体验增强
- 多语言支持
注意事项
- 当前为演示版 - 所有功能均为模拟效果
- 无需权限 - 暂不涉及麦克风等硬件权限
- 无网络依赖 - 模拟功能不需要网络连接
- 保留扩展性 - 架构设计支持后续插件集成
自定义扩展
修改模拟参数
// 在RealtimeController中调整时间参数
Timer(const Duration(seconds: 3), () { // 聆听时长
stopListening();
});
await Future.delayed(const Duration(seconds: 2)); // AI处理时长
await Future.delayed(const Duration(seconds: 3)); // 播放时长
添加新的视觉效果
// 在VoiceWavePainter中添加新的绘制方法
void _drawCustomEffect(Canvas canvas, Offset center, double radius) {
// 自定义绘制逻辑
}
技术栈
- Flutter SDK: >= 3.0.0
- GetX: >= 4.6.5 (状态管理)
- Material Design: UI组件
- CustomPainter: 自定义绘制
版本信息
- 当前版本: v0.1.0 (Preview)
- 最后更新: 2024年
- 状态: 模拟功能演示