# rtv **Repository Path**: wapuboy/rtv ## Basic Information - **Project Name**: rtv - **Description**: 实时音视频,基于webrtc实现浏览器间的视频对话 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-28 - **Last Updated**: 2025-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WebRTC音频对话项目 本项目基于WebRTC实现浏览器间的实时音频对话服务,主要实现如下三个场景: - 用户A与用户B之间可以通过浏览器页面对话 - 用户A与用户B对话的内容可以选择性经过指定的服务器转发 - 用户A与用户B对话的内容可以被审查,避免非法内容 - 服务器可以插播语音,提醒用户A与用户B遵守规则 - 服务器提供职能语音服务角色,可以由用户指定,并相互对话 ## 系统组成 1. **浏览器页面**:用户可以通过页面发起会话 2. **转发服务器**:用来转发用户A与用户B的对话内容 3. **审查服务器**:用来审查用户A与用户B的对话内容 4. **语音智能体**:用来模拟一个真实用户,可以理解用户语音,并与之对话 ## 技术实现 1. **浏览器页面**:基于WebRTC实现实时音频对话 - 基于vite+vue3+typescript+weui+bootstrap实现前端页面 - 存放在根目录h5目录下 2. **转发服务器**:基于WebRTC实现实时音频对话 - 基于python+flask+webrtc+ffmpeg实现转发服务器 - 存放在根目录relaysvr目录下 3. **审查服务器**:存放用户的语音为mp3格式文件,并对mp3文件进行ASR,并审查内容合法性 - 基于python+flask+ffmpeg实现审查服务器 - 存放在根目录auditsvr目录下 4. **语音智能体**:基于ASR进行语音识别,并基于NLU进行语义理解,基于TTS进行语音合成 - 基于python+flask+ffmpeg+ASR+NLU+TTS实现语音智能体 - 存放在根目录asrsvr目录下 ## 快速开始 ### 环境要求 - Python 3.7+ - Node.js 14+ - 现代浏览器(支持WebRTC) ### 安装步骤 1. **克隆项目** ```bash git clone cd rtv ``` 2. **运行安装脚本** ```bash ./install.sh ``` 或者手动安装: 3. **安装前端依赖** ```bash cd h5 npm install cd .. ``` 4. **安装后端依赖** ```bash cd relaysvr python3 -m venv venv source venv/bin/activate # Linux/Mac # 或 venv\Scripts\activate # Windows pip install -r requirements.txt cd .. ``` ### 启动服务 1. **启动后端服务器** ```bash cd relaysvr source venv/bin/activate # Linux/Mac # 或 venv\Scripts\activate # Windows python app.py ``` 2. **启动前端开发服务器** ```bash cd h5 npm run dev ``` 3. **访问应用** 在浏览器中打开 http://localhost:5173 ## 使用方法 1. **创建房间** - 在第一个浏览器标签页中输入用户ID和房间ID - 点击"验证输入",然后点击"开始通话" 2. **加入房间** - 在第二个浏览器标签页中输入不同的用户ID和相同的房间ID - 点击"验证输入",然后点击"开始通话" 3. **开始对话** - 两个用户都加入房间后,WebRTC连接会自动建立 - 允许浏览器访问麦克风权限 - 开始语音对话 ## 项目结构 ``` rtv/ ├── h5/ # 前端Vue应用 │ ├── src/ │ │ ├── components/ │ │ │ └── AudioCall.vue # 音频通话组件 │ │ └── App.vue │ └── package.json ├── relaysvr/ # 后端转发服务器 │ ├── app.py # Flask应用主文件 │ ├── webrtc_handler.py # WebRTC处理逻辑 │ └── requirements.txt ├── install.sh # 安装脚本 └── README.md ``` ## 已修复的问题 1. **前端语法错误**:修复了Vue 3 Composition API中的`this`引用错误 2. **后端依赖缺失**:添加了`flask-cors`依赖 3. **WebRTC连接逻辑**:重写了后端的WebRTC处理逻辑,实现真正的P2P连接 4. **类型注解错误**:修复了Python代码中的类型注解问题 5. **连接状态管理**:添加了轮询机制来等待其他用户加入 6. **资源清理**:添加了组件卸载时的资源清理逻辑 ## 常见问题 ### 1. 麦克风权限被拒绝 - 确保浏览器允许访问麦克风 - 检查系统麦克风设置 ### 2. 连接失败 - 确保后端服务器正在运行(端口5000) - 检查防火墙设置 - 确保两个用户使用相同的房间ID ### 3. 无法听到对方声音 - 检查浏览器音频设置 - 确保麦克风和扬声器正常工作 - 检查WebRTC连接状态 ### 4. 服务器启动失败 - 确保Python虚拟环境已激活 - 检查依赖是否正确安装 - 确保端口5000未被占用 ## 开发计划 - [x] 完成浏览器页面与转发服务器,实现浏览器之间的实时对话 - [ ] 完成审查服务器,存放语音文件,并可以终止对话 - [ ] 完成语音智能体,可以理解用户语音,并与用户对话 ## 贡献 欢迎提交Issue和Pull Request来改进这个项目。 ## 许可证 MIT License