openvoiceui 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +104 -0
- package/Dockerfile +30 -0
- package/LICENSE +21 -0
- package/README.md +638 -0
- package/SETUP.md +360 -0
- package/app.py +232 -0
- package/auto-approve-devices.js +111 -0
- package/cli/index.js +372 -0
- package/config/__init__.py +4 -0
- package/config/default.yaml +43 -0
- package/config/flags.yaml +67 -0
- package/config/loader.py +203 -0
- package/config/providers.yaml +71 -0
- package/config/speech_normalization.yaml +182 -0
- package/config/theme.json +4 -0
- package/data/greetings.json +25 -0
- package/default-pages/ai-image-creator.html +915 -0
- package/default-pages/bulk-image-uploader.html +492 -0
- package/default-pages/desktop.html +2865 -0
- package/default-pages/file-explorer.html +854 -0
- package/default-pages/interactive-map.html +655 -0
- package/default-pages/style-guide.html +1005 -0
- package/default-pages/website-setup.html +1623 -0
- package/deploy/openclaw/Dockerfile +46 -0
- package/deploy/openvoiceui.service +30 -0
- package/deploy/setup-nginx.sh +50 -0
- package/deploy/setup-sudo.sh +306 -0
- package/deploy/skill-runner/Dockerfile +19 -0
- package/deploy/skill-runner/requirements.txt +14 -0
- package/deploy/skill-runner/server.py +269 -0
- package/deploy/supertonic/Dockerfile +22 -0
- package/deploy/supertonic/server.py +79 -0
- package/docker-compose.pinokio.yml +11 -0
- package/docker-compose.yml +59 -0
- package/greetings.json +25 -0
- package/index.html +65 -0
- package/inject-device-identity.js +142 -0
- package/package.json +82 -0
- package/profiles/default.json +114 -0
- package/profiles/manager.py +354 -0
- package/profiles/schema.json +337 -0
- package/prompts/voice-system-prompt.md +149 -0
- package/providers/__init__.py +39 -0
- package/providers/base.py +63 -0
- package/providers/llm/__init__.py +12 -0
- package/providers/llm/base.py +71 -0
- package/providers/llm/clawdbot_provider.py +112 -0
- package/providers/llm/zai_provider.py +115 -0
- package/providers/registry.py +320 -0
- package/providers/stt/__init__.py +12 -0
- package/providers/stt/base.py +58 -0
- package/providers/stt/webspeech_provider.py +49 -0
- package/providers/stt/whisper_provider.py +100 -0
- package/providers/tts/__init__.py +20 -0
- package/providers/tts/base.py +91 -0
- package/providers/tts/groq_provider.py +74 -0
- package/providers/tts/supertonic_provider.py +72 -0
- package/requirements.txt +38 -0
- package/routes/__init__.py +10 -0
- package/routes/admin.py +515 -0
- package/routes/canvas.py +1315 -0
- package/routes/chat.py +51 -0
- package/routes/conversation.py +2158 -0
- package/routes/elevenlabs_hybrid.py +306 -0
- package/routes/greetings.py +98 -0
- package/routes/icons.py +279 -0
- package/routes/image_gen.py +364 -0
- package/routes/instructions.py +190 -0
- package/routes/music.py +838 -0
- package/routes/onboarding.py +43 -0
- package/routes/pi.py +62 -0
- package/routes/profiles.py +215 -0
- package/routes/report_issue.py +68 -0
- package/routes/static_files.py +533 -0
- package/routes/suno.py +664 -0
- package/routes/theme.py +81 -0
- package/routes/transcripts.py +199 -0
- package/routes/vision.py +348 -0
- package/routes/workspace.py +288 -0
- package/server.py +1510 -0
- package/services/__init__.py +1 -0
- package/services/auth.py +143 -0
- package/services/canvas_versioning.py +239 -0
- package/services/db_pool.py +107 -0
- package/services/gateway.py +16 -0
- package/services/gateway_manager.py +333 -0
- package/services/gateways/__init__.py +12 -0
- package/services/gateways/base.py +110 -0
- package/services/gateways/compat.py +264 -0
- package/services/gateways/openclaw.py +1134 -0
- package/services/health.py +100 -0
- package/services/memory_client.py +455 -0
- package/services/paths.py +26 -0
- package/services/speech_normalizer.py +285 -0
- package/services/tts.py +270 -0
- package/setup-config.js +262 -0
- package/sounds/air_horn.mp3 +0 -0
- package/sounds/bruh.mp3 +0 -0
- package/sounds/crowd_cheer.mp3 +0 -0
- package/sounds/gunshot.mp3 +0 -0
- package/sounds/impact.mp3 +0 -0
- package/sounds/lets_go.mp3 +0 -0
- package/sounds/record_stop.mp3 +0 -0
- package/sounds/rewind.mp3 +0 -0
- package/sounds/sad_trombone.mp3 +0 -0
- package/sounds/scratch_long.mp3 +0 -0
- package/sounds/yeah.mp3 +0 -0
- package/src/adapters/ClawdBotAdapter.js +264 -0
- package/src/adapters/_template.js +133 -0
- package/src/adapters/elevenlabs-classic.js +841 -0
- package/src/adapters/elevenlabs-hybrid.js +812 -0
- package/src/adapters/hume-evi.js +676 -0
- package/src/admin.html +1339 -0
- package/src/app.js +8802 -0
- package/src/core/Config.js +173 -0
- package/src/core/EmotionEngine.js +307 -0
- package/src/core/EventBridge.js +180 -0
- package/src/core/EventBus.js +117 -0
- package/src/core/VoiceSession.js +607 -0
- package/src/face/BaseFace.js +259 -0
- package/src/face/EyeFace.js +208 -0
- package/src/face/HaloSmokeFace.js +509 -0
- package/src/face/manifest.json +27 -0
- package/src/face/previews/eyes.svg +16 -0
- package/src/face/previews/orb.svg +29 -0
- package/src/features/MusicPlayer.js +620 -0
- package/src/features/Soundboard.js +128 -0
- package/src/providers/DeepgramSTT.js +472 -0
- package/src/providers/DeepgramStreamingSTT.js +766 -0
- package/src/providers/GroqSTT.js +559 -0
- package/src/providers/TTSPlayer.js +323 -0
- package/src/providers/WebSpeechSTT.js +479 -0
- package/src/providers/tts/BaseTTSProvider.js +81 -0
- package/src/providers/tts/HumeProvider.js +77 -0
- package/src/providers/tts/SupertonicProvider.js +174 -0
- package/src/providers/tts/index.js +140 -0
- package/src/shell/adapter-registry.js +154 -0
- package/src/shell/caller-bridge.js +35 -0
- package/src/shell/camera-bridge.js +28 -0
- package/src/shell/canvas-bridge.js +32 -0
- package/src/shell/commercial-bridge.js +44 -0
- package/src/shell/face-bridge.js +44 -0
- package/src/shell/music-bridge.js +60 -0
- package/src/shell/orchestrator.js +233 -0
- package/src/shell/profile-discovery.js +303 -0
- package/src/shell/sounds-bridge.js +28 -0
- package/src/shell/transcript-bridge.js +61 -0
- package/src/shell/waveform-bridge.js +33 -0
- package/src/styles/base.css +2862 -0
- package/src/styles/face.css +417 -0
- package/src/styles/pi-overrides.css +89 -0
- package/src/styles/theme-dark.css +67 -0
- package/src/test-tts.html +175 -0
- package/src/ui/AppShell.js +544 -0
- package/src/ui/ProfileSwitcher.js +228 -0
- package/src/ui/SessionControl.js +240 -0
- package/src/ui/face/FacePicker.js +195 -0
- package/src/ui/face/FaceRenderer.js +309 -0
- package/src/ui/settings/PlaylistEditor.js +366 -0
- package/src/ui/settings/SettingsPanel.css +684 -0
- package/src/ui/settings/SettingsPanel.js +419 -0
- package/src/ui/settings/TTSVoicePreview.js +210 -0
- package/src/ui/themes/ThemeManager.js +213 -0
- package/src/ui/visualizers/BaseVisualizer.js +29 -0
- package/src/ui/visualizers/PartyFXVisualizer.css +291 -0
- package/src/ui/visualizers/PartyFXVisualizer.js +637 -0
- package/static/emulators/jsdos/js-dos.css +1 -0
- package/static/emulators/jsdos/js-dos.js +22 -0
- package/static/favicon.svg +55 -0
- package/static/icons/apple-touch-icon.png +0 -0
- package/static/icons/favicon-32.png +0 -0
- package/static/icons/icon-192.png +0 -0
- package/static/icons/icon-512.png +0 -0
- package/static/install.html +449 -0
- package/static/manifest.json +26 -0
- package/static/sw.js +21 -0
- package/tts_providers/__init__.py +136 -0
- package/tts_providers/base_provider.py +319 -0
- package/tts_providers/groq_provider.py +155 -0
- package/tts_providers/hume_provider.py +226 -0
- package/tts_providers/providers_config.json +119 -0
- package/tts_providers/qwen3_provider.py +371 -0
- package/tts_providers/resemble_provider.py +315 -0
- package/tts_providers/supertonic_provider.py +557 -0
- package/tts_providers/supertonic_tts.py +399 -0
package/.env.example
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# OpenVoiceUI — .env.example
|
|
3
|
+
# Copy to .env and fill in your values: cp .env.example .env
|
|
4
|
+
# =============================================================================
|
|
5
|
+
|
|
6
|
+
# Server
|
|
7
|
+
PORT=5001
|
|
8
|
+
DOMAIN=your-domain.com
|
|
9
|
+
|
|
10
|
+
# Flask secret key — generate with: python3 -c "import secrets; print(secrets.token_hex(32))"
|
|
11
|
+
# Required for persistent sessions. If unset, a random key is generated per restart.
|
|
12
|
+
SECRET_KEY=your-secret-key-here
|
|
13
|
+
|
|
14
|
+
# Canvas pages directory
|
|
15
|
+
# VPS/systemd install: set to the path created by deploy/setup-sudo.sh
|
|
16
|
+
# Docker install: leave UNSET — defaults to runtime/canvas-pages/ inside the container
|
|
17
|
+
# (matches the docker-compose volume mount)
|
|
18
|
+
# CANVAS_PAGES_DIR=/var/www/openvoiceui/canvas-pages
|
|
19
|
+
|
|
20
|
+
# =============================================================================
|
|
21
|
+
# OpenClaw Gateway (required for LLM / voice conversations)
|
|
22
|
+
# Download and install OpenClaw: https://openclaw.ai
|
|
23
|
+
# =============================================================================
|
|
24
|
+
CLAWDBOT_GATEWAY_URL=ws://127.0.0.1:18791
|
|
25
|
+
CLAWDBOT_AUTH_TOKEN=your-openclaw-gateway-token
|
|
26
|
+
|
|
27
|
+
# Coding CLI for the openclaw container (activates the coding-agent skill).
|
|
28
|
+
# Same options as openclaw's setup wizard. Choose one:
|
|
29
|
+
# codex — OpenAI Codex CLI (also set OPENAI_API_KEY)
|
|
30
|
+
# claude — Anthropic Claude Code (also set ANTHROPIC_API_KEY)
|
|
31
|
+
# opencode — OpenCode (bring your own provider key)
|
|
32
|
+
# pi — Pi coding agent (bring your own provider key)
|
|
33
|
+
# none — skip (coding-agent skill inactive, default)
|
|
34
|
+
# Note: if you already ran openclaw's setup wizard it handled this for you.
|
|
35
|
+
# CODING_CLI=codex
|
|
36
|
+
|
|
37
|
+
# OpenClaw version for the Docker image — pinned to a tested release.
|
|
38
|
+
# Only change this if you've verified the new version works with OpenVoiceUI.
|
|
39
|
+
# OPENCLAW_VERSION=2026.3.13
|
|
40
|
+
|
|
41
|
+
# Session key prefix — change if running multiple instances on the same gateway
|
|
42
|
+
GATEWAY_SESSION_KEY=voice-main-1
|
|
43
|
+
|
|
44
|
+
# =============================================================================
|
|
45
|
+
# TTS — choose one or more providers
|
|
46
|
+
# =============================================================================
|
|
47
|
+
|
|
48
|
+
# Groq Orpheus (recommended — fast, high quality, free tier available)
|
|
49
|
+
# Get key: https://console.groq.com
|
|
50
|
+
GROQ_API_KEY=your-groq-api-key
|
|
51
|
+
USE_GROQ=true
|
|
52
|
+
USE_GROQ_TTS=true
|
|
53
|
+
|
|
54
|
+
# Qwen3-TTS via fal.ai (optional)
|
|
55
|
+
# Get key: https://fal.ai/dashboard
|
|
56
|
+
# FAL_KEY=your-fal-key
|
|
57
|
+
|
|
58
|
+
# Hume EVI (optional — expressive, emotion-aware TTS)
|
|
59
|
+
# Get keys: https://platform.hume.ai/settings/keys
|
|
60
|
+
# HUME_API_KEY=your-hume-api-key
|
|
61
|
+
# HUME_SECRET_KEY=your-hume-secret-key
|
|
62
|
+
|
|
63
|
+
# Supertonic (ships with docker compose — no config needed)
|
|
64
|
+
# Override only if you run the Supertonic service elsewhere:
|
|
65
|
+
# SUPERTONIC_API_URL=http://supertonic:8765
|
|
66
|
+
|
|
67
|
+
# =============================================================================
|
|
68
|
+
# Authentication — Clerk (optional)
|
|
69
|
+
# Without Clerk, the app runs open — no login required (fine for single-user).
|
|
70
|
+
# To require login: set key below + CANVAS_REQUIRE_AUTH=true + ALLOWED_USER_IDS
|
|
71
|
+
# Get keys: https://clerk.com → Your App → API Keys
|
|
72
|
+
# =============================================================================
|
|
73
|
+
# CLERK_PUBLISHABLE_KEY=pk_live_...
|
|
74
|
+
# CANVAS_REQUIRE_AUTH=true
|
|
75
|
+
|
|
76
|
+
# Restrict access to specific user IDs (recommended in production)
|
|
77
|
+
# Find your user_id in server logs after first login, then set it here
|
|
78
|
+
# ALLOWED_USER_IDS=user_abc123,user_xyz789
|
|
79
|
+
|
|
80
|
+
# =============================================================================
|
|
81
|
+
# Vision (optional — for screenshot/image analysis)
|
|
82
|
+
# Get key: https://aistudio.google.com/app/apikey
|
|
83
|
+
# =============================================================================
|
|
84
|
+
# GEMINI_API_KEY=your-gemini-key
|
|
85
|
+
|
|
86
|
+
# =============================================================================
|
|
87
|
+
# Music Generation (optional — Suno AI)
|
|
88
|
+
# =============================================================================
|
|
89
|
+
# SUNO_API_KEY=your-suno-key
|
|
90
|
+
# SUNO_CALLBACK_URL=https://your-domain.com/api/suno/callback
|
|
91
|
+
# SUNO_WEBHOOK_SECRET=your-webhook-secret # optional HMAC verification
|
|
92
|
+
|
|
93
|
+
# =============================================================================
|
|
94
|
+
# Search (optional — Brave Search for web_search tool in OpenClaw agent)
|
|
95
|
+
# Free tier: 2,000 queries/month. Get key: https://brave.com/search/api/
|
|
96
|
+
# Must also be set in the OpenClaw gateway service environment.
|
|
97
|
+
# =============================================================================
|
|
98
|
+
# BRAVE_API_KEY=your-brave-search-api-key
|
|
99
|
+
|
|
100
|
+
# =============================================================================
|
|
101
|
+
# Rate limiting (optional — overrides defaults set in app.py)
|
|
102
|
+
# Format: "N per period" e.g. "500 per day" or "500 per day;100 per hour"
|
|
103
|
+
# =============================================================================
|
|
104
|
+
# RATELIMIT_DEFAULT=200 per day;50 per hour
|
package/Dockerfile
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
FROM python:3.12-slim
|
|
2
|
+
|
|
3
|
+
WORKDIR /app
|
|
4
|
+
|
|
5
|
+
# System deps for cryptography, audio processing, vision, and canvas features
|
|
6
|
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
7
|
+
build-essential libffi-dev \
|
|
8
|
+
libgl1 libglib2.0-0 \
|
|
9
|
+
ffmpeg \
|
|
10
|
+
libsndfile1 && \
|
|
11
|
+
rm -rf /var/lib/apt/lists/*
|
|
12
|
+
|
|
13
|
+
COPY requirements.txt .
|
|
14
|
+
RUN pip install --no-cache-dir -r requirements.txt
|
|
15
|
+
|
|
16
|
+
COPY . .
|
|
17
|
+
|
|
18
|
+
# Writable dirs for runtime data
|
|
19
|
+
RUN mkdir -p runtime/uploads runtime/canvas-pages runtime/known_faces runtime/music runtime/generated_music runtime/faces runtime/transcripts
|
|
20
|
+
|
|
21
|
+
# Run as non-root user
|
|
22
|
+
RUN useradd -m -u 1001 appuser && chown -R appuser:appuser /app
|
|
23
|
+
USER appuser
|
|
24
|
+
|
|
25
|
+
# Bind to all interfaces inside the container
|
|
26
|
+
ENV HOST=0.0.0.0
|
|
27
|
+
|
|
28
|
+
EXPOSE 5001
|
|
29
|
+
|
|
30
|
+
CMD ["python3", "server.py"]
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 OpenVoiceUI Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|