This commit is contained in:
2025-01-12 08:13:40 +00:00
parent ca0fbd35d2
commit 9cdbb166a1
6 changed files with 189 additions and 14 deletions
+84
View File
@@ -0,0 +1,84 @@
# Obscura Roundtable - 黑盒圆桌会议系统
一个创新的AI驱动的多角色对话系统,支持多语言实时讨论和语音合成功能。
## 功能特性
- 🤖 多AI角色实时对话
- 🌐 多语言支持
- 🎯 自定义讨论主题
- 🔊 实时语音合成
- 👥 用户认证系统
- 📝 对话历史记录
- 🎨 现代化Web界面
## 项目结构
```
Obscuraroundtable/
├── README.md # 项目说明文档
├── .env # 环境变量配置文件
├── roundtable.py # 主程序
├── 前端页面
│ ├── login.html # 登录页面
│ ├── box.html # 黑盒圆桌会议页面
│ ├── space.html # 黑盒广场页面
│ ├── history.html # 历史记录页面
│ └── lang.js # 多语言支持脚本
├── team_members/ # 团队成员设置
└── old/ # 历史版本备份,可以忽略
```
## 使用说明
### 后端服务 http://dev.obscura.work/user
1. 环境变量:`.env`文件
2. 服务器:222.186.10.253
- port: 8000
3. kafka 配置:222.186.10.253:9092
- tts: "tts"
4. SQL: sh-cdb-4ln6r8y0.sql.tencentcdb.com:28234/minio #用户认证
4. redis 配置:150.158.144.159:13003
db分配:
- 0: "存储用户会话信息"
- 11: "task 任务记录"
#语言
- 63: "session_zh 中文"
- 62: "session_en 英文"
- 61: "session_ko 韩语"
#音色数据记录
- 15: "girl"
- 16: "woman"
- 17: "man"
- 18: "leijun"
- 19: "dufu"
- 20: "hejiong"
- 21: "mahuateng"
- 22: "lidan"
- 23: "dabing"
- 24: "luoxiang"
- 25: "xuzhiyuan"
- 26: "yuhua"
- 27: "liuzhenyun"
5. 音频文件保存目录:
- 音频文件:"/obscura/task/audio_files"
- 头像:"/obscura/task/avatar"
6. 模型:
- chat: siliconflow"deepseek-ai/DeepSeek-V2.5"
- tts: kafka: "tts"
### Web界面 http://beat.obscura.work/
1. login.html 登录页面
2. box.html 黑盒圆桌会议页面
3. space.html 黑盒广场,查看所有探讨
4. history.html 历史记录页面
5. lang.js 多语言支持脚本
## 主要功能模块
- 用户认证与管理
- AI角色管理
- 实时对话生成
- 语音合成服务
- 多语言支持
- 对话历史记录
+2 -2
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="lang-1.6.js"></script>
<script src="lang-1.8.js"></script>
<title data-i18n="title">黑盒圆桌</title>
<style>
body {
@@ -546,7 +546,7 @@
const sessionIdDisplay = document.getElementById('session-id');
const specialRoles = {
brainstorm: ['市场营销专家', '技术专家', '创意专家', '财务专家', '项目规划专家', '数据分析专家'],
hallOfFame: ['马化腾', '李诞', '罗翔', '许知远', '大冰', '余华', '刘震云', '雷军']
hallOfFame: ['马化腾', '李诞', '罗翔', '许知远', '大冰', '余华', '雷军']
};
let currentTopic = 'brainstorm';
let selectedRoles = ['主持人'];
+1 -1
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="lang-1.6.js"></script>
<script src="lang-1.8.js"></script>
<title data-i18n="historytitle">讨论内容</title>
<style>
body {
-3
View File
@@ -38,7 +38,6 @@ const translations = {
"许知远": "许知远",
"大冰": "大冰",
"余华": "余华",
"刘震云": "刘震云",
"雷军": "雷军"
},
brainstorm: "头脑风暴",
@@ -94,7 +93,6 @@ const translations = {
"许知远": "Xu Zhiyuan",
"大冰": "Da Bing",
"余华": "Yu Hua",
"刘震云": "Liu Zhenyun",
"雷军": "Lei Jun"
},
brainstorm: "Brainstorm",
@@ -150,7 +148,6 @@ const translations = {
"许知远": "서지원",
"大冰": "대빙",
"余华": "유화",
"刘震云": "류진운",
"雷军": "레이준"
},
brainstorm: "브레인스토밍",
+101 -7
View File
@@ -3,8 +3,8 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title data-i18n="pageTitle">用户登录/注册 - 黑盒智能</title>
<script src="lang-1.6.js"></script>
<title data-i18n="pageTitle">用户登录/注册</title>
<script src="lang-1.8.js"></script>
<style>
body {
font-family: Arial, sans-serif;
@@ -73,13 +73,107 @@
top: 20px;
right: 20px;
}
#language-select {
padding: 5px 10px;
font-size: 14px;
border: 1px solid #000;
border-radius: 4px;
padding: 10px 20px;
font-size: 16px;
border: none;
border-radius: 25px;
background-color: #1a1a1a;
color: white;
cursor: pointer;
transition: background-color 0.3s ease;
width: auto; /* Allow the width to adjust to content */
min-width: 40px; /* Set a minimum width */
}
#language-select:hover {
background-color: #333;
}
#language-select option {
background-color: white;
color: #000;
color: black;
padding: 10px;
}
#language-select:focus {
outline: none;
box-shadow: 0 0 0 2px rgba(255,255,255,0.5);
}
@media (max-width: 768px) {
.container {
padding: 2rem;
max-width: 350px;
}
h1 {
font-size: 2.2rem;
margin-bottom: 1.5rem;
}
input {
font-size: 1rem;
padding: 0.7rem;
}
button {
font-size: 1.1rem;
padding: 0.7rem;
}
.error {
font-size: 1rem;
margin-top: 1.2rem;
}
#language-select {
padding: 9px 18px;
font-size: 15px;
}
}
@media (max-width: 480px) {
body {
padding: 10px;
}
.container {
padding: 1.5rem;
max-width: 100%;
}
h1 {
font-size: 1.8rem;
margin-bottom: 1rem;
}
input {
font-size: 0.9rem;
padding: 0.6rem;
margin: 0.5rem 0;
}
button {
font-size: 1rem;
padding: 0.6rem;
margin-top: 1rem;
}
.error {
font-size: 0.9rem;
margin-top: 1rem;
}
#language-selector {
top: 10px;
right: 10px;
}
#language-select {
padding: 8px 16px;
font-size: 14px;
}
}
</style>
</head>
+1 -1
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title data-i18n="spacetitle">黑盒广场</title>
<script src="lang-1.7.js"></script>
<script src="lang-1.8.js"></script>
<style>
body {
font-family: 'Helvetica Neue', Arial, sans-serif;