openvoiceui 1.0.0 → 2026.3.28

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.
Files changed (117) hide show
  1. package/.env.example +6 -0
  2. package/Dockerfile +11 -1
  3. package/README.md +113 -572
  4. package/app.py +11 -3
  5. package/auto-approve-devices.js +1 -1
  6. package/cli/index.js +24 -15
  7. package/default-pages/bighead-builder.html +1079 -0
  8. package/default-pages/bulk-image-uploader.html +6 -3
  9. package/default-pages/chatgpt-import.html +981 -0
  10. package/default-pages/dapp-builder.html +501 -0
  11. package/default-pages/desktop.html +135 -28
  12. package/default-pages/voice-studio.html +1380 -0
  13. package/default-pages/website-setup.html +41 -4
  14. package/docker-compose.local.yml +12 -0
  15. package/index.html +51 -1
  16. package/inject-device-identity.js +29 -4
  17. package/package.json +2 -2
  18. package/profiles/bryce-bighead.json +91 -0
  19. package/profiles/kyle-valhalla.json +100 -0
  20. package/profiles/manager.py +11 -3
  21. package/prompts/voice-system-prompt.md +3 -3
  22. package/requirements.txt +19 -11
  23. package/routes/bighead.py +217 -0
  24. package/routes/canvas.py +376 -146
  25. package/routes/chatgpt_import.py +172 -0
  26. package/routes/conversation.py +438 -98
  27. package/routes/icons.py +84 -9
  28. package/routes/plugins.py +114 -0
  29. package/routes/registry.py +451 -0
  30. package/routes/report_issue.py +46 -4
  31. package/routes/vision.py +8 -2
  32. package/server.py +254 -3
  33. package/services/chatgpt_parser.py +377 -0
  34. package/services/gateways/openclaw.py +21 -0
  35. package/services/plugins.py +178 -0
  36. package/services/tts.py +77 -15
  37. package/services/update_manager.py +1021 -0
  38. package/setup-config.js +2 -0
  39. package/src/admin.html +53 -8
  40. package/src/app.js +348 -63
  41. package/src/core/VoiceSession.js +1 -1
  42. package/src/face/BigHeadFace.js +620 -0
  43. package/src/face/HaloSmokeFace.js +8 -0
  44. package/src/face/manifest.json +6 -7
  45. package/src/face/previews/bighead.svg +22 -0
  46. package/src/providers/DeepgramStreamingSTT.js +1 -0
  47. package/src/providers/TTSPlayer.js +7 -2
  48. package/src/providers/WebSpeechSTT.js +12 -3
  49. package/src/styles/base.css +387 -276
  50. package/src/styles/face.css +14 -12
  51. package/src/styles/pi-overrides.css +1 -1
  52. package/src/styles/theme-dark.css +79 -14
  53. package/src/ui/AppShell.js +7 -7
  54. package/src/ui/UpdateBanner.js +264 -0
  55. package/src/ui/face/FaceRenderer.js +113 -105
  56. package/src/ui/settings/PlaylistEditor.js +1 -1
  57. package/src/ui/settings/SettingsPanel.css +121 -121
  58. package/src/ui/settings/SettingsPanel.js +2 -2
  59. package/src/ui/themes/ThemeManager.js +73 -5
  60. package/src/ui/visualizers/PartyFXVisualizer.css +9 -9
  61. package/src/ui/visualizers/PartyFXVisualizer.js +2 -2
  62. package/static/voice-samples/generate-samples.py +122 -0
  63. package/static/voice-samples/groq_austin.wav +0 -0
  64. package/static/voice-samples/groq_autumn.wav +0 -0
  65. package/static/voice-samples/groq_daniel.wav +0 -0
  66. package/static/voice-samples/groq_diana.wav +0 -0
  67. package/static/voice-samples/groq_hannah.wav +0 -0
  68. package/static/voice-samples/groq_troy.wav +0 -0
  69. package/static/voice-samples/qwen3_Aiden.mp3 +0 -0
  70. package/static/voice-samples/qwen3_Aiden.wav +0 -0
  71. package/static/voice-samples/qwen3_Dylan.mp3 +0 -0
  72. package/static/voice-samples/qwen3_Eric.mp3 +0 -0
  73. package/static/voice-samples/qwen3_Eric.wav +0 -0
  74. package/static/voice-samples/qwen3_Ryan.mp3 +0 -0
  75. package/static/voice-samples/qwen3_Ryan.wav +0 -0
  76. package/static/voice-samples/qwen3_Serena.mp3 +0 -0
  77. package/static/voice-samples/qwen3_Vivian.mp3 +0 -0
  78. package/static/voice-samples/qwen3_clone_bryce_bighead.mp3 +0 -0
  79. package/static/voice-samples/qwen3_clone_bryce_bighead.wav +0 -0
  80. package/static/voice-samples/qwen3_clone_kyle_valhalla.mp3 +0 -0
  81. package/static/voice-samples/qwen3_clone_kyle_valhalla.wav +0 -0
  82. package/static/voice-samples/resemble_Aaron.wav +0 -0
  83. package/static/voice-samples/resemble_Ahadi.wav +0 -0
  84. package/static/voice-samples/resemble_Archer.wav +0 -0
  85. package/static/voice-samples/resemble_Avigail.wav +0 -0
  86. package/static/voice-samples/resemble_Bakari.wav +0 -0
  87. package/static/voice-samples/resemble_Brian.wav +0 -0
  88. package/static/voice-samples/resemble_Bryce-BigHead.wav +0 -0
  89. package/static/voice-samples/resemble_Connor.wav +0 -0
  90. package/static/voice-samples/resemble_Ember.wav +0 -0
  91. package/static/voice-samples/resemble_Ethan.wav +0 -0
  92. package/static/voice-samples/resemble_Grace.wav +0 -0
  93. package/static/voice-samples/resemble_Jessica.wav +0 -0
  94. package/static/voice-samples/resemble_Josh.wav +0 -0
  95. package/static/voice-samples/resemble_Kyle-Valhalla.wav +0 -0
  96. package/static/voice-samples/resemble_Lisa.wav +0 -0
  97. package/static/voice-samples/resemble_Luna.wav +0 -0
  98. package/static/voice-samples/resemble_Mark.wav +0 -0
  99. package/static/voice-samples/resemble_Mike.wav +0 -0
  100. package/static/voice-samples/resemble_Sam.wav +0 -0
  101. package/static/voice-samples/supertonic_F1.wav +0 -0
  102. package/static/voice-samples/supertonic_F2.wav +0 -0
  103. package/static/voice-samples/supertonic_F3.wav +0 -0
  104. package/static/voice-samples/supertonic_F4.wav +0 -0
  105. package/static/voice-samples/supertonic_F5.wav +0 -0
  106. package/static/voice-samples/supertonic_M1.wav +0 -0
  107. package/static/voice-samples/supertonic_M2.wav +0 -0
  108. package/static/voice-samples/supertonic_M3.wav +0 -0
  109. package/static/voice-samples/supertonic_M4.wav +0 -0
  110. package/static/voice-samples/supertonic_M5.wav +0 -0
  111. package/tts_providers/__init__.py +3 -0
  112. package/tts_providers/elevenlabs_provider.py +332 -0
  113. package/tts_providers/providers_config.json +27 -0
  114. package/tts_providers/qwen3_provider.py +62 -1
  115. package/tts_providers/resemble_provider.py +230 -3
  116. package/tts_providers/resemble_voice_styles.json +10 -0
  117. package/docker-compose.pinokio.yml +0 -11
package/.env.example CHANGED
@@ -55,6 +55,12 @@ USE_GROQ_TTS=true
55
55
  # Get key: https://fal.ai/dashboard
56
56
  # FAL_KEY=your-fal-key
57
57
 
58
+ # ElevenLabs (optional — premium TTS, instant voice cloning, 29 languages)
59
+ # Get key: https://elevenlabs.io/app/settings/api-keys
60
+ # Voice IDs: https://elevenlabs.io/app/voice-library
61
+ # ELEVENLABS_API_KEY=your-elevenlabs-api-key
62
+ # ELEVENLABS_VOICE_ID=your-default-voice-id
63
+
58
64
  # Hume EVI (optional — expressive, emotion-aware TTS)
59
65
  # Get keys: https://platform.hume.ai/settings/keys
60
66
  # HUME_API_KEY=your-hume-api-key
package/Dockerfile CHANGED
@@ -7,7 +7,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
7
7
  build-essential libffi-dev \
8
8
  libgl1 libglib2.0-0 \
9
9
  ffmpeg \
10
- libsndfile1 && \
10
+ libsndfile1 \
11
+ git && \
11
12
  rm -rf /var/lib/apt/lists/*
12
13
 
13
14
  COPY requirements.txt .
@@ -15,6 +16,12 @@ RUN pip install --no-cache-dir -r requirements.txt
15
16
 
16
17
  COPY . .
17
18
 
19
+ # Version stamp — baked at build time by jambot-build-images.sh
20
+ ARG BUILD_COMMIT=unknown
21
+ ARG BUILD_BRANCH=unknown
22
+ ARG BUILD_DATE=unknown
23
+ RUN echo "{\"commit\":\"${BUILD_COMMIT}\",\"branch\":\"${BUILD_BRANCH}\",\"date\":\"${BUILD_DATE}\"}" > /app/version.json
24
+
18
25
  # Writable dirs for runtime data
19
26
  RUN mkdir -p runtime/uploads runtime/canvas-pages runtime/known_faces runtime/music runtime/generated_music runtime/faces runtime/transcripts
20
27
 
@@ -22,6 +29,9 @@ RUN mkdir -p runtime/uploads runtime/canvas-pages runtime/known_faces runtime/mu
22
29
  RUN useradd -m -u 1001 appuser && chown -R appuser:appuser /app
23
30
  USER appuser
24
31
 
32
+ # Allow git operations in /app (owner may differ between build and runtime)
33
+ RUN git config --global --add safe.directory /app
34
+
25
35
  # Bind to all interfaces inside the container
26
36
  ENV HOST=0.0.0.0
27
37