Update
This commit is contained in:
@@ -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角色管理
|
||||||
|
- 实时对话生成
|
||||||
|
- 语音合成服务
|
||||||
|
- 多语言支持
|
||||||
|
- 对话历史记录
|
||||||
|
|
||||||
|
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<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>
|
<title data-i18n="title">黑盒圆桌</title>
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
@@ -546,7 +546,7 @@
|
|||||||
const sessionIdDisplay = document.getElementById('session-id');
|
const sessionIdDisplay = document.getElementById('session-id');
|
||||||
const specialRoles = {
|
const specialRoles = {
|
||||||
brainstorm: ['市场营销专家', '技术专家', '创意专家', '财务专家', '项目规划专家', '数据分析专家'],
|
brainstorm: ['市场营销专家', '技术专家', '创意专家', '财务专家', '项目规划专家', '数据分析专家'],
|
||||||
hallOfFame: ['马化腾', '李诞', '罗翔', '许知远', '大冰', '余华', '刘震云', '雷军']
|
hallOfFame: ['马化腾', '李诞', '罗翔', '许知远', '大冰', '余华', '雷军']
|
||||||
};
|
};
|
||||||
let currentTopic = 'brainstorm';
|
let currentTopic = 'brainstorm';
|
||||||
let selectedRoles = ['主持人'];
|
let selectedRoles = ['主持人'];
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<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>
|
<title data-i18n="historytitle">讨论内容</title>
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ const translations = {
|
|||||||
"许知远": "许知远",
|
"许知远": "许知远",
|
||||||
"大冰": "大冰",
|
"大冰": "大冰",
|
||||||
"余华": "余华",
|
"余华": "余华",
|
||||||
"刘震云": "刘震云",
|
|
||||||
"雷军": "雷军"
|
"雷军": "雷军"
|
||||||
},
|
},
|
||||||
brainstorm: "头脑风暴",
|
brainstorm: "头脑风暴",
|
||||||
@@ -94,7 +93,6 @@ const translations = {
|
|||||||
"许知远": "Xu Zhiyuan",
|
"许知远": "Xu Zhiyuan",
|
||||||
"大冰": "Da Bing",
|
"大冰": "Da Bing",
|
||||||
"余华": "Yu Hua",
|
"余华": "Yu Hua",
|
||||||
"刘震云": "Liu Zhenyun",
|
|
||||||
"雷军": "Lei Jun"
|
"雷军": "Lei Jun"
|
||||||
},
|
},
|
||||||
brainstorm: "Brainstorm",
|
brainstorm: "Brainstorm",
|
||||||
@@ -150,7 +148,6 @@ const translations = {
|
|||||||
"许知远": "서지원",
|
"许知远": "서지원",
|
||||||
"大冰": "대빙",
|
"大冰": "대빙",
|
||||||
"余华": "유화",
|
"余华": "유화",
|
||||||
"刘震云": "류진운",
|
|
||||||
"雷军": "레이준"
|
"雷军": "레이준"
|
||||||
},
|
},
|
||||||
brainstorm: "브레인스토밍",
|
brainstorm: "브레인스토밍",
|
||||||
|
|||||||
+101
-7
@@ -3,8 +3,8 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title data-i18n="pageTitle">用户登录/注册 - 黑盒智能</title>
|
<title data-i18n="pageTitle">用户登录/注册</title>
|
||||||
<script src="lang-1.6.js"></script>
|
<script src="lang-1.8.js"></script>
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
font-family: Arial, sans-serif;
|
font-family: Arial, sans-serif;
|
||||||
@@ -73,13 +73,107 @@
|
|||||||
top: 20px;
|
top: 20px;
|
||||||
right: 20px;
|
right: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#language-select {
|
#language-select {
|
||||||
padding: 5px 10px;
|
padding: 10px 20px;
|
||||||
font-size: 14px;
|
font-size: 16px;
|
||||||
border: 1px solid #000;
|
border: none;
|
||||||
border-radius: 4px;
|
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;
|
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>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title data-i18n="spacetitle">黑盒广场</title>
|
<title data-i18n="spacetitle">黑盒广场</title>
|
||||||
<script src="lang-1.7.js"></script>
|
<script src="lang-1.8.js"></script>
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
font-family: 'Helvetica Neue', Arial, sans-serif;
|
font-family: 'Helvetica Neue', Arial, sans-serif;
|
||||||
|
|||||||
Reference in New Issue
Block a user