Files
links/static_src/jbot/data/voices.js
T
junvandCopilot a87b4643fd feat: port JBOT AI robot face into links as Django app
- Add jbot Django app (jbot/__init__.py, apps.py, urls.py, api_urls.py)
- Python backend (jbot/views.py): TTS 2.0, ASR 1.0 BigASR, LLM/memory via OpenRouter
- React SPA frontend at /jbot/ (static_src/jbot/): RobotFace, ChatPanel, expressions,
  voices, push-to-talk, history, memory, settings pages
- Vite entry jbot: static_src/jbot/main.jsx → dist/jbot.js + dist/jbot.css
- react-router-dom added; BrowserRouter basename=/jbot for SPA routing
- core/settings.py: added jbot to INSTALLED_APPS
- core/urls.py: /jbot/ + /api/jbot/ URL includes
- pyproject.toml: websocket-client>=1.9.0 for BigASR binary WS protocol
- Dockerfile: ffmpeg added to production apt-get for WebM→PCM audio conversion
- k8s/manifest.yaml: VOLC_APP_ID, VOLC_ACCESS_TOKEN, OPENROUTER_API_KEY env vars
  via jbot-credentials Secret; LLM_MODEL, VOLC_TTS_VOICE, VOLC_ASR_RESOURCE defaults

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-17 14:13:37 +10:00

26 lines
1.9 KiB
JavaScript

// Volcengine seed-tts-2.0 voice catalogue
// Full list: https://www.volcengine.com/docs/6561/1257544
// All IDs must end in _bigtts for the seed-tts-2.0 resource.
export const VOICES = [
// ── Chinese female ─────────────────────────────────────
{ id: 'zh_female_vv_uranus_bigtts', label: '灵儿', lang: '中文', gender: '女', style: '亲切' },
{ id: 'zh_female_tianmei_conversation_bigtts', label: '甜美', lang: '中文', gender: '女', style: '温柔' },
{ id: 'zh_female_linjing_conversation_bigtts', label: '琳静', lang: '中文', gender: '女', style: '知性' },
{ id: 'zh_female_qingxin_conversation_bigtts', label: '清新', lang: '中文', gender: '女', style: '清新' },
// ── Chinese male ───────────────────────────────────────
{ id: 'zh_male_m191_uranus_bigtts', label: '豪远', lang: '中文', gender: '男', style: '标准' },
{ id: 'zh_male_haoran_conversation_bigtts', label: '豪然', lang: '中文', gender: '男', style: '稳重' },
{ id: 'zh_male_m372_conversation_bigtts', label: '温和男声', lang: '中文', gender: '男', style: '温和' },
// ── English ────────────────────────────────────────────
{ id: 'en_female_sarah_jupiter_bigtts', label: 'Sarah', lang: 'EN', gender: '女', style: 'Warm' },
{ id: 'en_male_adam_mars_bigtts', label: 'Adam', lang: 'EN', gender: '男', style: 'Clear' },
];
export const DEFAULT_VOICE = 'zh_female_vv_uranus_bigtts';
export function getVoiceLabel(id) {
const v = VOICES.find(v => v.id === id);
return v ? `${v.label} · ${v.lang} ${v.gender}` : id;
}