ChatMaster 是一个基于场景的多轮语音对话系统。本项目旨在帮助用户无痛练习日常英语口语和对话技能,从简单到困难循序渐进提升能力。
- 文字对话模式:提供流畅的文本对话体验
- 口语交流模式:支持语音输入输出,模拟真实对话场景
- 基于场景的口语练习:提供10个默认场景,也支持上传自定义场景
- 多轮对话管理:维持对话上下文,提供连贯的交互体验
- 自定义难度等级:根据用户水平调整对话复杂度
- 问题推荐系统:基于当前对话内容智能推荐相关问题
- 高级RAG检索:结合向量和关键词混合检索技术,提供更准确的知识匹配
- 智能文档解析:支持多种格式文档的解析和场景提取
- Streamlit框架构建的交互式Web应用
- 支持文字和语音两种交互模式
- 场景选择与自定义上传功能
- 对话历史管理和会话保存
- 语音识别(ASR):基于FunASR的语音转文本功能
- 文本生成:基于大型语言模型(GPT-3.5/GPT-4)的对话生成
- 语音合成(TTS):基于ChatTTS的文本转语音功能
- 检索增强生成(RAG):
- 高级向量检索(FAISS)
- 混合检索策略(BM25 + 向量相似度)
- 文档智能解析与分块
- 会话状态管理
- 检索结果重排序
- 数据来源:YouTube英文影视剧
- 处理流程:
- 使用youtube-dl下载视频
- 腾讯语音包做语音识别
- 正则表达式+GPT4o规则判定
- 低质量文本过滤(去重、特殊符号、纠错)
- 敏感词和停用词过滤
- BM25关键词匹配(匹配度>70%删除)
- 向量检索(相似度>0.8删除)
- 统一JSON格式输出
- 附带场景和难易度信息
-
口语化问题处理:
- 微调T5-base模型处理省略词汇、非正式语气词汇、语序不规范等问题
- CrossEntropyLoss损失函数,AdamW优化器
- BLEU评分≥90
-
指代消歧:
- 基于bert-base-uncased实现
- 参数量110M,max_sequence_len=512
-
意图识别:
- 三大意图类别:场景对话、日常闲聊、学习类提问
- 规则识别+RoBERTa-base分类模型
- 准确率>96%
-
命名实体识别(NER):
- BERT+CRF模型,采用BIO标注策略
- 实体识别F1分数>94%
-
文档处理:
- 多格式文档支持(PDF/Word/Excel/TXT)
- 基于语义的智能分块算法
- 文档元数据提取
-
高级检索引擎:
- 混合检索策略(向量相似度+关键词匹配)
- 自动权重调整机制
- 上下文感知检索
- ElasticSearch全文索引
-
知识库管理:
- 多知识库支持
- 增量更新机制
- 场景自动提取
- 双向索引(关键词+向量)
-
会话增强功能:
- 智能会话命名
- 推荐问题生成
- 对话历史分析
- 检索证据追踪
-
拆分式对话管理:
- 对话策略(DP)
- 对话状态跟踪(DST)
-
外部记忆机制:
- MemGPT、AttentionStore、MemLLM等实现长对话记忆
-
上下文压缩与摘要:
- Prompt Engineering
- Conversational Memory
- 基于主题的上下文聚焦
- Python 3.8+
- OpenAI API密钥(用于GPT模型调用)
- ElasticSearch 7.x(用于高级RAG检索,可选)
- 克隆本仓库
git clone https://github.com/yourusername/ChatMaster.git
cd ChatMaster- 安装依赖
pip install -r requirements.txt- 配置API密钥 创建.env文件并添加以下内容:
OPENAI_API_KEY=your_api_key_here
DASHSCOPE_API_KEY=your_dashscope_key_here # 可选,用于中文模型
- 准备知识库目录
mkdir -p dataset/knowledge_base
mkdir -p dataset/uploads- 启动应用
cd frontend
streamlit run app.py- 在侧边栏选择对话模型(GPT-3.5/GPT-4)
- 选择对话语言(默认为英语)
- 选择交流模式(文字对话/口语交流)
- 选择预设场景或上传自定义文档创建场景
- 开始与AI助手对话练习英语
- 查看系统推荐的相关问题,可点击快速提问
- 利用会话管理功能保存和恢复对话历史
- 文档解析:上传PDF、Word、Excel等格式文档,系统自动提取场景和知识点
- 场景定制:根据行业、难度等条件筛选场景
- 语音定制:选择不同口音和语速的语音合成
- 自定义主题:针对特定行业或场景的专业英语训练
- 进度追踪:记录用户练习历史和进步情况
感谢上海人工智能实验室,为我的项目提供宝贵的技术指导和强大的算力支持。
该项目采用 Apache License 2.0 开源许可证 同时,请遵守所使用的模型与数据集的许可证。
如果本项目对您有所帮助,请使用以下格式引用:
@misc{ChatMaster,
title={ChatMaster},
author={wjh2001},
url={https://github.com/wjh2001/ChatMaster},
year={2024}
}