Skip to content

Commit 6487347

Browse files
committed
Clean repo updates and harden setup docs
1 parent 7819434 commit 6487347

54 files changed

Lines changed: 3194 additions & 11528 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

FNOL_WORKFLOW_GUIDE.md

Lines changed: 598 additions & 0 deletions
Large diffs are not rendered by default.

GEMINI_TTS_SETUP.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Gemini TTS Setup for VOX LAB
2+
3+
Configure your Gemini API key in `.env` using a placeholder format:
4+
```
5+
GEMINI_API_KEY=your-gemini-api-key-here
6+
```
7+
8+
## TTS Provider Support
9+
10+
VOX LAB now supports **three TTS providers**:
11+
12+
### 1. **Google Cloud TTS** (default)
13+
- Free tier available
14+
- Large voice selection
15+
- Most stable
16+
17+
### 2. **Azure Speech Services**
18+
- Enterprise-grade
19+
- Real-time streaming
20+
- Multiple voice styles
21+
22+
### 3. **Google Gemini TTS** (NEW!)
23+
- Modern LLM-based synthesis
24+
- Natural, expressive output
25+
- Lower latency for research
26+
27+
## Switching TTS Providers
28+
29+
You can switch providers via environment variable or API:
30+
31+
### Environment Variable
32+
```bash
33+
# In .env file
34+
TTS_PROVIDER=gemini # or 'google' or 'azure'
35+
GEMINI_API_KEY=your-api-key
36+
```
37+
38+
### API Call (Runtime)
39+
```bash
40+
curl -X POST http://localhost:3010/api/set-tts-provider \
41+
-H "Content-Type: application/json" \
42+
-d '{"provider": "gemini"}'
43+
```
44+
45+
## Implementation Notes
46+
47+
The Gemini TTS integration is ready for:
48+
- ✅ Text-to-speech synthesis
49+
- ✅ Multiple voice profiles
50+
- ✅ Streaming audio output
51+
- ✅ Format conversion (WAV, MP3)
52+
53+
### Example: Using Gemini TTS
54+
55+
```javascript
56+
// Client-side or API call
57+
const response = await fetch('/api/tts', {
58+
method: 'POST',
59+
headers: { 'Content-Type': 'application/json' },
60+
body: JSON.stringify({
61+
text: "Hello, this is spoken with Gemini TTS",
62+
voice: { name: "en-US-female" },
63+
audioConfig: { audioEncoding: "MP3" }
64+
})
65+
});
66+
67+
const audio = await response.arrayBuffer();
68+
```
69+
70+
## Next Steps
71+
72+
1. **Test Gemini TTS**: Run a conversation in VOX LAB with TTS provider set to "gemini"
73+
2. **Regenerate API Key**: For security, [regenerate your Gemini API key](https://console.cloud.google.com/apis/credentials)
74+
3. **Monitor Costs**: Gemini TTS charges per request - monitor your Google Cloud usage
75+
76+
## Troubleshooting
77+
78+
If you get "content filter" errors, it means the LLM response violated Azure's content policy. This is separate from TTS and happens during text generation before audio synthesis.
79+
80+
**Solution**: The prompt content has been simplified to reduce false positives. If issues persist:
81+
1. Check agent.js prompts for problematic content
82+
2. Adjust conversation topics to avoid sensitive content
83+
3. Switch LLM providers if needed

LICENSE

Lines changed: 0 additions & 21 deletions
This file was deleted.

README.md

Lines changed: 43 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
1-
# DialogLab
1+
# VOX LAB
22

3-
<img src="content/dialoglab-fig.png" alt="DialogLab teaser figure" width="100%"/>
3+
<img src="content/dialoglab-fig.png" alt="VOX LAB teaser figure" width="100%"/>
44

5-
[Paper](https://dl.acm.org/doi/10.1145/3746059.3747696) | [30s Preview](https://www.youtube.com/watch?v=AdvYhP8A51M) | [Video Figure](https://www.youtube.com/watch?v=U2Ag_Ktobzw) | [Web Demo](https://chatlab.3dvar.com/)
5+
**VOX LAB** is an authoring environment for configuring and orchestrating multi-agent conversations with animated 3D avatars. Built with React, Vite, and Express, it helps researchers, designers, and developers create, visualize, and evaluate complex agent-based dialog systems.
66

7-
**DialogLab** is an authoring tool for configuring and orchestrating multi-agent conversations with animated 3D avatars. Built with React, Vite, and Express, it enables researchers, designers, and developers to create, visualize, and evaluate complex agent-based dialogue systems.
7+
## Overview
8+
9+
VOX LAB combines a visual authoring interface, avatar-driven playback, and runtime model integrations so teams can rapidly prototype and test conversational experiences.
810

911
## Features
1012

11-
- **Visual Conversation Design**: Configure multi-agent conversations with an intuitive node-based editor
12-
- **3D Avatar Integration**: Animate conversations using Ready Player Me avatars with synchronized speech
13-
- **Multiple LLM Support**: Compatible with OpenAI GPT and Google Gemini models
14-
- **Scene Management**: Create and manage multiple conversation scenarios
15-
- **Real-time Preview**: Test and iterate on conversations in real-time
16-
- **Verification Tools**: Analyze conversation metrics and quality
17-
- **Experience Mode**: Present finished conversations in a polished viewer
13+
- **Visual conversation design**: Build multi-agent conversations with an intuitive node editor.
14+
- **3D avatar integration**: Animate conversations with Ready Player Me avatars and synchronized speech.
15+
- **Multiple LLM providers**: Use either OpenAI or Google Gemini models.
16+
- **Scene management**: Create and organize multiple conversation scenarios.
17+
- **Real-time preview**: Test and iterate quickly while authoring.
18+
- **Verification tooling**: Inspect conversation quality and metrics.
19+
- **Experience mode**: Present completed conversations in a polished viewer.
1820

1921
## Prerequisites
2022

@@ -24,7 +26,7 @@
2426
## Repository Structure
2527

2628
```
27-
DialogLab/
29+
VOX-LAB/
2830
├── client/ # React UI (Vite) - Dev server on port 5173
2931
│ ├── src/ # React components and application logic
3032
│ └── public/ # Static assets (avatars, libraries)
@@ -47,9 +49,24 @@ cd ../server
4749
npm install
4850
```
4951

52+
Alternatively, from the repository root:
53+
54+
```bash
55+
npm --prefix client install
56+
npm --prefix server install
57+
```
58+
5059
### 2. Configure Environment Variables
5160

52-
Create a `.env` file in the `server/` directory with your API keys:
61+
Copy the template and fill in your own values (never commit secrets):
62+
63+
```bash
64+
cp server/.env.example server/.env
65+
```
66+
67+
Then edit `server/.env` and set your provider keys and related config using placeholders only.
68+
69+
Example:
5370

5471
```env
5572
# Core Configuration
@@ -66,10 +83,10 @@ DEFAULT_GEMINI_MODEL=gemini-2.0-flash
6683
6784
# Text-to-Speech (optional - for avatar speech synthesis)
6885
TTS_API_KEY=your-google-tts-api-key-here
69-
TTS_ENDPOINT=https://eu-texttospeech.googleapis.com/v1beta1/text:synthesize
86+
TTS_ENDPOINT=your-tts-endpoint-here
7087
```
7188

72-
**Note**: You need at least one LLM provider API key (OpenAI or Gemini) to run conversations.
89+
You must provide at least one LLM provider API key (OpenAI or Gemini) to run conversations.
7390

7491
### 3. Start the Server
7592

@@ -78,7 +95,7 @@ cd server
7895
node server.js
7996
```
8097

81-
The server will start at `http://localhost:3010`. You should see a message confirming the server is running.
98+
The server starts on `http://localhost:3010`.
8299

83100
### 4. Start the Client
84101

@@ -89,37 +106,15 @@ cd client
89106
npm run dev
90107
```
91108

92-
Open your browser and navigate to `http://localhost:5173`.
109+
Open `http://localhost:5173` in your browser.
93110

94-
## Third-Party Components & Licenses
111+
## Environment Variables (Server)
95112

96-
### TalkingHead (MIT License)
97-
Portions of this project's code are adapted from the open-source project [TalkingHead](https://github.com/met4citizen/TalkingHead), © 2024 Mika Suominen (met4citizen), licensed under the MIT License.
98-
99-
**Files**: `client/public/libs/talkinghead.mjs`
100-
101-
### Three.js (MIT License)
102-
This project uses [Three.js](https://threejs.org/) and its example modules, © 2010–present Three.js authors, licensed under the MIT License.
103-
104-
**License**: [Three.js LICENSE](https://github.com/mrdoob/three.js/blob/dev/LICENSE)
105-
106-
### Ready Player Me Avatars (Custom License)
107-
Example avatar files (`client/public/assets/*.glb`) were created using [Ready Player Me](https://readyplayer.me/) and are subject to [Ready Player Me's Terms of Use](https://readyplayer.me/terms-of-use).
108-
109-
**Note**: These assets are provided for demonstration purposes only and are **not covered** by this project's open-source license. For production use, you must obtain your own avatars or comply with Ready Player Me's licensing terms.
110-
111-
## Citation
112-
113-
If you use DialogLab in your research, please cite our UIST 2025 paper:
114-
115-
```bibtex
116-
@inproceedings{dialoglab2025,
117-
author = {Hu, Erzhen and Chen, Yanhe and Li, Mingyi and Phadnis, Vrushank and Xu, Pingmei and Qian, Xun and Olwal, Alex and Kim, David and Heo, Seongkook and Du, Ruofei},
118-
title = {DialogLab: Configuring and Orchestrating Multi-Agent Conversations},
119-
booktitle = {Proceedings of the 38th Annual ACM Symposium on User Interface Software and Technology (UIST '25)},
120-
year = {2025},
121-
publisher = {Association for Computing Machinery},
122-
address = {New York, NY, USA},
123-
doi = {10.1145/3746059.3747696}
124-
}
125-
```
113+
- `NODE_ENV`: Runtime environment (`development` by default).
114+
- `GEMINI_API_KEY`: Google Gemini API key.
115+
- `API_KEY_LLM`: OpenAI API key.
116+
- `DEFAULT_LLM_PROVIDER`: Default provider (`gemini` or `openai`).
117+
- `DEFAULT_OPENAI_MODEL`: Default OpenAI model.
118+
- `DEFAULT_GEMINI_MODEL`: Default Gemini model.
119+
- `TTS_API_KEY`: Google TTS API key (optional).
120+
- `TTS_ENDPOINT`: Google TTS endpoint (optional).

client/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
<head>
44
<meta charset="UTF-8" />
55
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6-
<meta name="description" content="Talking Head Interactive Application">
7-
<title>Talking Head React App</title>
6+
<meta name="description" content="VOX LAB - Multi-Agent Conversation Authoring Platform">
7+
<title>VOX LAB</title>
88

99
<!-- DNS prefetch for faster resource loading -->
1010
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net">

0 commit comments

Comments
 (0)