Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,9 +168,10 @@ We regularly sync our fork with upstream sst/opencode to incorporate new feature
- **Dual Provider Support** - Browser-native Web Speech API + external OpenAI-compatible endpoints
- **Browser-Native TTS** - Built-in Web Speech API for instant playback without API keys
- **Coqui TTS with Multi-Model Support** - 7+ high-quality English voice models with runtime switching:
- VCTK VITS (109 multi-speaker voices, default — **p339**, soft American female)
- LJSpeech VITS (single speaker, female, **default** — low memory ~1-2GB)
- VCTK VITS (109 multi-speaker voices — ~9GB memory)
- Jenny (single-speaker, fast)
- LJSpeech VITS, Tacotron2, Glow-TTS, FastPitch
- LJSpeech Tacotron2, Glow-TTS, FastPitch
- XTTS v2 (multilingual voice cloning)
- **17 American Female Voices** - Curated selection from the VCTK corpus with detailed metadata (region, age, vocal quality)
- **AI Message Playback** - Listen to assistant responses with TTS
Expand Down Expand Up @@ -350,8 +351,8 @@ stt:
tts:
status: running
provider: coqui
model: tts_models/en/vctk/vits
voice: p339
model: tts_models/en/ljspeech/vits
voice: default

tunnel:
status: connected
Expand Down
18 changes: 9 additions & 9 deletions backend/src/services/coqui.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,25 @@ const __dirname = path.dirname(__filename)
const COQUI_PORT = parseInt(process.env.COQUI_PORT || '5554')
const COQUI_HOST = process.env.COQUI_HOST || '127.0.0.1'
const COQUI_DEVICE = process.env.COQUI_DEVICE || 'auto'
const COQUI_MODEL = process.env.COQUI_MODEL || 'tts_models/en/vctk/vits'
const COQUI_MODEL = process.env.COQUI_MODEL || 'tts_models/en/ljspeech/vits'
const DEFAULT_VENV_DIR = path.join(os.homedir(), '.opencode-manager', 'coqui-venv')

const RECOMMENDED_MODELS = [
{
id: "tts_models/en/vctk/vits",
name: "VCTK VITS",
description: "VCTK VITS (109 speakers, recommended)",
id: "tts_models/en/ljspeech/vits",
name: "LJSpeech VITS",
description: "LJSpeech single speaker (recommended, low memory ~1-2GB)",
quality: "high",
speed: "fast",
multi_speaker: true
multi_speaker: false
},
{
id: "tts_models/en/ljspeech/vits",
name: "LJSpeech VITS",
description: "LJSpeech single speaker",
id: "tts_models/en/vctk/vits",
name: "VCTK VITS",
description: "VCTK VITS (109 speakers, ~9GB memory)",
quality: "high",
speed: "fast",
multi_speaker: false
multi_speaker: true
},
{
id: "tts_models/en/jenny/jenny",
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/settings/TTSSettings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -635,7 +635,7 @@ export function TTSSettings() {
<div className="space-y-2">
<Label>TTS Model</Label>
<Combobox
value={coquiModels?.currentModel || 'tts_models/en/vctk/vits'}
value={coquiModels?.currentModel || 'tts_models/en/ljspeech/vits'}
onChange={(modelId) => {
if (modelId !== coquiModels?.currentModel) {
changeCoquiModelMutation.mutate(modelId)
Expand Down
18 changes: 9 additions & 9 deletions scripts/coqui-server.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
COQUI_PORT = int(os.environ.get("COQUI_PORT", "5554"))
COQUI_HOST = os.environ.get("COQUI_HOST", "127.0.0.1")
COQUI_DEVICE = os.environ.get("COQUI_DEVICE", "auto")
COQUI_MODEL = os.environ.get("COQUI_MODEL", "tts_models/en/vctk/vits")
COQUI_MODEL = os.environ.get("COQUI_MODEL", "tts_models/en/ljspeech/vits")

# Global state
model: Optional[TTS] = None
Expand All @@ -67,23 +67,23 @@
# Curated list of high-quality TTS models
RECOMMENDED_MODELS = [
{
"id": "tts_models/en/vctk/vits",
"name": "VCTK VITS",
"description": "VCTK VITS (109 speakers, recommended)",
"id": "tts_models/en/ljspeech/vits",
"name": "LJSpeech VITS",
"description": "LJSpeech single speaker (recommended, low memory ~1-2GB)",
"language": "en",
"quality": "high",
"speed": "fast",
"multi_speaker": True,
"multi_speaker": False,
"recommended": True
},
{
"id": "tts_models/en/ljspeech/vits",
"name": "LJSpeech VITS",
"description": "LJSpeech single speaker",
"id": "tts_models/en/vctk/vits",
"name": "VCTK VITS",
"description": "VCTK VITS (109 speakers, ~9GB memory)",
"language": "en",
"quality": "high",
"speed": "fast",
"multi_speaker": False
"multi_speaker": True
},
{
"id": "tts_models/en/jenny/jenny",
Expand Down
2 changes: 1 addition & 1 deletion shared/src/schemas/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ export const DEFAULT_TTS_CONFIG: TTSConfig = {
provider: 'coqui',
endpoint: "https://api.openai.com",
apiKey: "",
voice: "p339",
voice: "default",
model: "tts-1",
speed: 1.0,
availableVoices: [],
Expand Down