@spekoai/mcp 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/README.md +59 -0
- package/dist/data/benchmarks.d.ts +124 -0
- package/dist/data/benchmarks.d.ts.map +1 -0
- package/dist/data/benchmarks.js +176 -0
- package/dist/data/benchmarks.js.map +1 -0
- package/dist/data/templates.d.ts +39 -0
- package/dist/data/templates.d.ts.map +1 -0
- package/dist/data/templates.js +385 -0
- package/dist/data/templates.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-client.d.ts +71 -0
- package/dist/lib/api-client.d.ts.map +1 -0
- package/dist/lib/api-client.js +282 -0
- package/dist/lib/api-client.js.map +1 -0
- package/dist/lib/benchmark-utils.d.ts +45 -0
- package/dist/lib/benchmark-utils.d.ts.map +1 -0
- package/dist/lib/benchmark-utils.js +244 -0
- package/dist/lib/benchmark-utils.js.map +1 -0
- package/dist/lib/project-scanner.d.ts +16 -0
- package/dist/lib/project-scanner.d.ts.map +1 -0
- package/dist/lib/project-scanner.js +154 -0
- package/dist/lib/project-scanner.js.map +1 -0
- package/dist/lib/tier-gate.d.ts +14 -0
- package/dist/lib/tier-gate.d.ts.map +1 -0
- package/dist/lib/tier-gate.js +27 -0
- package/dist/lib/tier-gate.js.map +1 -0
- package/dist/tools/agent-crud.d.ts +3 -0
- package/dist/tools/agent-crud.d.ts.map +1 -0
- package/dist/tools/agent-crud.js +114 -0
- package/dist/tools/agent-crud.js.map +1 -0
- package/dist/tools/legacy.d.ts +3 -0
- package/dist/tools/legacy.d.ts.map +1 -0
- package/dist/tools/legacy.js +354 -0
- package/dist/tools/legacy.js.map +1 -0
- package/dist/tools/migrate.d.ts +3 -0
- package/dist/tools/migrate.d.ts.map +1 -0
- package/dist/tools/migrate.js +145 -0
- package/dist/tools/migrate.js.map +1 -0
- package/dist/tools/recommend.d.ts +3 -0
- package/dist/tools/recommend.d.ts.map +1 -0
- package/dist/tools/recommend.js +163 -0
- package/dist/tools/recommend.js.map +1 -0
- package/dist/tools/setup.d.ts +3 -0
- package/dist/tools/setup.d.ts.map +1 -0
- package/dist/tools/setup.js +104 -0
- package/dist/tools/setup.js.map +1 -0
- package/package.json +54 -0
package/README.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# @speko/mcp
|
|
2
|
+
|
|
3
|
+
MCP server for voice AI development inside AI-assisted coding environments.
|
|
4
|
+
|
|
5
|
+
`@speko/mcp` helps teams and agents recommend optimal STT+LLM+TTS stacks, benchmark combinations, migrate from existing voice providers, and scaffold new voice agent projects.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
claude mcp add speko -- npx -y @speko/mcp
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Tools
|
|
14
|
+
|
|
15
|
+
### Tier 1 — Works immediately, no account needed
|
|
16
|
+
|
|
17
|
+
| Tool | Description |
|
|
18
|
+
|------|-------------|
|
|
19
|
+
| `speko_recommend` | Recommend optimal STT+LLM+TTS combo for your language, use case, and priorities |
|
|
20
|
+
| `speko_benchmark` | Browse benchmark data for tested voice AI combinations |
|
|
21
|
+
| `speko_compare` | Side-by-side comparison of two stacks |
|
|
22
|
+
| `speko_providers` | List supported providers across STT, LLM, TTS, and S2S |
|
|
23
|
+
| `speko_health` | System health and coverage metrics |
|
|
24
|
+
| `speko_migrate` | Scan codebase for existing voice providers and generate migration plan |
|
|
25
|
+
|
|
26
|
+
### Tier 2 — Requires Speko account
|
|
27
|
+
|
|
28
|
+
| Tool | Description |
|
|
29
|
+
|------|-------------|
|
|
30
|
+
| `speko_setup` | Scaffold Speko SDK integration into Next.js/React/vanilla projects |
|
|
31
|
+
| `speko_agent_create` | Create a voice agent via API |
|
|
32
|
+
| `speko_agent_update` | Update voice agent configuration |
|
|
33
|
+
| `speko_agent_status` | Get agent health and metrics |
|
|
34
|
+
|
|
35
|
+
Get your API key at [app.speko.ai](https://app.speko.ai/).
|
|
36
|
+
|
|
37
|
+
## Development
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
bun install
|
|
41
|
+
bun run build
|
|
42
|
+
bun run test
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Environment
|
|
46
|
+
|
|
47
|
+
- `SPEKO_API_KEY` — required for Tier 2 tools
|
|
48
|
+
- `SPEKO_API_URL` — override API endpoint (default: `https://api.speko.ai`)
|
|
49
|
+
|
|
50
|
+
When no API key is set, Tier 1 tools work with built-in benchmark data. Tier 2 tools return a helpful message directing users to get an API key.
|
|
51
|
+
|
|
52
|
+
## Repository
|
|
53
|
+
|
|
54
|
+
- GitHub: [spekoAI/speko-mcp](https://github.com/spekoAI/speko-mcp)
|
|
55
|
+
- Website: [speko.ai](https://speko.ai)
|
|
56
|
+
|
|
57
|
+
## License
|
|
58
|
+
|
|
59
|
+
MIT
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Benchmark data from production voice AI deployments.
|
|
3
|
+
* Covers 8+ languages across enterprise use cases.
|
|
4
|
+
*
|
|
5
|
+
* Each row is a tested STT+LLM+TTS combination with real latency,
|
|
6
|
+
* quality (UTMOS), and cost measurements.
|
|
7
|
+
*/
|
|
8
|
+
export interface BenchmarkEntry {
|
|
9
|
+
stt: string;
|
|
10
|
+
sttModel: string;
|
|
11
|
+
llm: string;
|
|
12
|
+
llmModel: string;
|
|
13
|
+
tts: string;
|
|
14
|
+
ttsModel: string;
|
|
15
|
+
latencyMs: number;
|
|
16
|
+
quality: number;
|
|
17
|
+
costPerMin: number;
|
|
18
|
+
mos?: number;
|
|
19
|
+
languages: string[];
|
|
20
|
+
notes?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface UseCasePriorities {
|
|
23
|
+
latency: number;
|
|
24
|
+
quality: number;
|
|
25
|
+
cost: number;
|
|
26
|
+
}
|
|
27
|
+
export interface ProviderCatalogEntry {
|
|
28
|
+
url: string;
|
|
29
|
+
models: string[];
|
|
30
|
+
strengths: string;
|
|
31
|
+
}
|
|
32
|
+
export interface S2SOption {
|
|
33
|
+
provider: "openai-realtime" | "gemini-live";
|
|
34
|
+
model: string;
|
|
35
|
+
latencyMs: number;
|
|
36
|
+
quality: number;
|
|
37
|
+
costPerHour: number;
|
|
38
|
+
languages: string[];
|
|
39
|
+
notes: string;
|
|
40
|
+
}
|
|
41
|
+
export declare const BENCHMARK_DATA: BenchmarkEntry[];
|
|
42
|
+
export declare const USE_CASE_PRIORITIES: Record<string, UseCasePriorities>;
|
|
43
|
+
export declare const SUPPORTED_LANGUAGES: string[];
|
|
44
|
+
export declare const PROVIDER_INFO: {
|
|
45
|
+
stt: {
|
|
46
|
+
Deepgram: {
|
|
47
|
+
url: string;
|
|
48
|
+
models: string[];
|
|
49
|
+
strengths: string;
|
|
50
|
+
};
|
|
51
|
+
AssemblyAI: {
|
|
52
|
+
url: string;
|
|
53
|
+
models: string[];
|
|
54
|
+
strengths: string;
|
|
55
|
+
};
|
|
56
|
+
OpenAI: {
|
|
57
|
+
url: string;
|
|
58
|
+
models: string[];
|
|
59
|
+
strengths: string;
|
|
60
|
+
};
|
|
61
|
+
Speechmatics: {
|
|
62
|
+
url: string;
|
|
63
|
+
models: string[];
|
|
64
|
+
strengths: string;
|
|
65
|
+
};
|
|
66
|
+
Google: {
|
|
67
|
+
url: string;
|
|
68
|
+
models: string[];
|
|
69
|
+
strengths: string;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
llm: {
|
|
73
|
+
OpenAI: {
|
|
74
|
+
url: string;
|
|
75
|
+
models: string[];
|
|
76
|
+
strengths: string;
|
|
77
|
+
};
|
|
78
|
+
Anthropic: {
|
|
79
|
+
url: string;
|
|
80
|
+
models: string[];
|
|
81
|
+
strengths: string;
|
|
82
|
+
};
|
|
83
|
+
Google: {
|
|
84
|
+
url: string;
|
|
85
|
+
models: string[];
|
|
86
|
+
strengths: string;
|
|
87
|
+
};
|
|
88
|
+
Groq: {
|
|
89
|
+
url: string;
|
|
90
|
+
models: string[];
|
|
91
|
+
strengths: string;
|
|
92
|
+
};
|
|
93
|
+
ElevenLabs: {
|
|
94
|
+
url: string;
|
|
95
|
+
models: string[];
|
|
96
|
+
strengths: string;
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
tts: {
|
|
100
|
+
Cartesia: {
|
|
101
|
+
url: string;
|
|
102
|
+
models: string[];
|
|
103
|
+
strengths: string;
|
|
104
|
+
};
|
|
105
|
+
ElevenLabs: {
|
|
106
|
+
url: string;
|
|
107
|
+
models: string[];
|
|
108
|
+
strengths: string;
|
|
109
|
+
};
|
|
110
|
+
PlayHT: {
|
|
111
|
+
url: string;
|
|
112
|
+
models: string[];
|
|
113
|
+
strengths: string;
|
|
114
|
+
};
|
|
115
|
+
Rime: {
|
|
116
|
+
url: string;
|
|
117
|
+
models: string[];
|
|
118
|
+
strengths: string;
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
export declare const S2S_PROVIDER_INFO: Record<string, ProviderCatalogEntry>;
|
|
123
|
+
export declare const S2S_OPTIONS: S2SOption[];
|
|
124
|
+
//# sourceMappingURL=benchmarks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmarks.d.ts","sourceRoot":"","sources":["../../src/data/benchmarks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,iBAAiB,GAAG,aAAa,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,cAAc,EAAE,cAAc,EAiG1C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAWjE,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAG/B,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqBzB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAWlE,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,SAAS,EAmBlC,CAAC"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Benchmark data from production voice AI deployments.
|
|
3
|
+
* Covers 8+ languages across enterprise use cases.
|
|
4
|
+
*
|
|
5
|
+
* Each row is a tested STT+LLM+TTS combination with real latency,
|
|
6
|
+
* quality (UTMOS), and cost measurements.
|
|
7
|
+
*/
|
|
8
|
+
export const BENCHMARK_DATA = [
|
|
9
|
+
{
|
|
10
|
+
stt: "Deepgram", sttModel: "nova-3",
|
|
11
|
+
llm: "OpenAI", llmModel: "gpt-4.1-mini",
|
|
12
|
+
tts: "Cartesia", ttsModel: "sonic-3",
|
|
13
|
+
latencyMs: 168, quality: 4.5, costPerMin: 0.007, mos: 4.3,
|
|
14
|
+
languages: ["Thai", "English", "Vietnamese", "Indonesian", "Japanese", "Korean"],
|
|
15
|
+
notes: "Best overall for APAC multilingual. Production-proven across enterprise deployments."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
stt: "Deepgram", sttModel: "nova-3",
|
|
19
|
+
llm: "Groq", llmModel: "llama-4-maverick",
|
|
20
|
+
tts: "Cartesia", ttsModel: "sonic-3",
|
|
21
|
+
latencyMs: 156, quality: 4.2, costPerMin: 0.005,
|
|
22
|
+
languages: ["Thai", "English"],
|
|
23
|
+
notes: "Lowest latency option. Groq inference is fast but quality slightly lower."
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
stt: "Deepgram", sttModel: "nova-3",
|
|
27
|
+
llm: "OpenAI", llmModel: "gpt-4.1",
|
|
28
|
+
tts: "ElevenLabs", ttsModel: "turbo_v2.5",
|
|
29
|
+
latencyMs: 215, quality: 4.5, costPerMin: 0.014, mos: 4.5,
|
|
30
|
+
languages: ["Thai", "English", "Japanese"],
|
|
31
|
+
notes: "Highest naturalness. ElevenLabs excels for emotional/expressive voices."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
stt: "AssemblyAI", sttModel: "universal-3-pro",
|
|
35
|
+
llm: "OpenAI", llmModel: "gpt-4.1-mini",
|
|
36
|
+
tts: "Cartesia", ttsModel: "sonic-3",
|
|
37
|
+
latencyMs: 178, quality: 4.4, costPerMin: 0.008, mos: 4.2,
|
|
38
|
+
languages: ["English", "Vietnamese", "Filipino", "Cantonese"],
|
|
39
|
+
notes: "Strong for Southeast Asian languages. AssemblyAI universal model handles accents well."
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
stt: "OpenAI", sttModel: "gpt-4o-transcribe",
|
|
43
|
+
llm: "OpenAI", llmModel: "gpt-4.1",
|
|
44
|
+
tts: "ElevenLabs", ttsModel: "eleven_v3",
|
|
45
|
+
latencyMs: 287, quality: 4.8, costPerMin: 0.022, mos: 4.8,
|
|
46
|
+
languages: ["English", "Japanese", "Korean"],
|
|
47
|
+
notes: "Premium quality, highest cost. Best for high-stakes conversations (insurance, healthcare)."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
stt: "Speechmatics", sttModel: "enhanced",
|
|
51
|
+
llm: "OpenAI", llmModel: "gpt-4.1-mini",
|
|
52
|
+
tts: "Rime", ttsModel: "arcana-v3",
|
|
53
|
+
latencyMs: 205, quality: 4.2, costPerMin: 0.008,
|
|
54
|
+
languages: ["Thai", "English", "Cantonese"],
|
|
55
|
+
notes: "Speechmatics leads for Thai code-switching (94% vs Deepgram 71%)."
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
stt: "Deepgram", sttModel: "nova-3",
|
|
59
|
+
llm: "Google", llmModel: "gemini-2.5-pro",
|
|
60
|
+
tts: "PlayHT", ttsModel: "play-3.0-mini",
|
|
61
|
+
latencyMs: 268, quality: 4.1, costPerMin: 0.008, mos: 4.1,
|
|
62
|
+
languages: ["English", "Indonesian", "Filipino"],
|
|
63
|
+
notes: "Good balance for Indonesian/Filipino markets."
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
stt: "Google", sttModel: "chirp-3",
|
|
67
|
+
llm: "Groq", llmModel: "llama-4-maverick",
|
|
68
|
+
tts: "Cartesia", ttsModel: "sonic-3",
|
|
69
|
+
latencyMs: 195, quality: 4.0, costPerMin: 0.006,
|
|
70
|
+
languages: ["English", "Vietnamese", "Japanese", "Korean"],
|
|
71
|
+
notes: "Budget option with decent quality. Good for high-volume, cost-sensitive deployments."
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
stt: "Deepgram", sttModel: "nova-3",
|
|
75
|
+
llm: "ElevenLabs", llmModel: "eleven-turbo",
|
|
76
|
+
tts: "ElevenLabs", ttsModel: "eleven_v3",
|
|
77
|
+
latencyMs: 142, quality: 4.1, costPerMin: 0.004,
|
|
78
|
+
languages: ["Thai", "English", "Vietnamese", "Indonesian"],
|
|
79
|
+
notes: "ElevenLabs end-to-end. Lowest latency when using their full stack."
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
stt: "Deepgram", sttModel: "nova-3",
|
|
83
|
+
llm: "Google", llmModel: "gemini-2.5-flash",
|
|
84
|
+
tts: "Cartesia", ttsModel: "sonic-3",
|
|
85
|
+
latencyMs: 148, quality: 4.2, costPerMin: 0.004,
|
|
86
|
+
languages: ["English", "Thai", "Vietnamese", "Filipino", "Indonesian"],
|
|
87
|
+
notes: "Best cost-to-performance ratio. Gemini Flash is surprisingly good for voice agents."
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
stt: "Deepgram", sttModel: "nova-3",
|
|
91
|
+
llm: "Anthropic", llmModel: "claude-sonnet-4-5",
|
|
92
|
+
tts: "Cartesia", ttsModel: "sonic-3",
|
|
93
|
+
latencyMs: 198, quality: 4.6, costPerMin: 0.009,
|
|
94
|
+
languages: ["English", "Japanese", "Korean", "Thai"],
|
|
95
|
+
notes: "Claude excels at nuanced conversations. Best for complex reasoning in voice agents."
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
stt: "AssemblyAI", sttModel: "universal-3-pro",
|
|
99
|
+
llm: "ElevenLabs", llmModel: "eleven-turbo",
|
|
100
|
+
tts: "ElevenLabs", ttsModel: "turbo_v2.5",
|
|
101
|
+
latencyMs: 210, quality: 4.0, costPerMin: 0.006,
|
|
102
|
+
languages: ["English", "Cantonese", "Japanese"],
|
|
103
|
+
notes: "Solid mid-range option for East Asian languages."
|
|
104
|
+
},
|
|
105
|
+
];
|
|
106
|
+
export const USE_CASE_PRIORITIES = {
|
|
107
|
+
"debt-collections": { latency: 80, quality: 60, cost: 70 },
|
|
108
|
+
"sales": { latency: 70, quality: 80, cost: 50 },
|
|
109
|
+
"customer-support": { latency: 60, quality: 90, cost: 60 },
|
|
110
|
+
"scheduling": { latency: 90, quality: 40, cost: 80 },
|
|
111
|
+
"insurance-claims": { latency: 50, quality: 95, cost: 40 },
|
|
112
|
+
"lead-qualification": { latency: 75, quality: 75, cost: 55 },
|
|
113
|
+
"appointment-reminders": { latency: 85, quality: 50, cost: 75 },
|
|
114
|
+
"healthcare-triage": { latency: 55, quality: 95, cost: 45 },
|
|
115
|
+
"banking-faq": { latency: 60, quality: 90, cost: 60 },
|
|
116
|
+
"recruitment-screening": { latency: 65, quality: 85, cost: 50 },
|
|
117
|
+
};
|
|
118
|
+
export const SUPPORTED_LANGUAGES = [
|
|
119
|
+
"English", "Thai", "Vietnamese", "Indonesian", "Filipino",
|
|
120
|
+
"Japanese", "Korean", "Cantonese", "Mandarin", "Malay",
|
|
121
|
+
];
|
|
122
|
+
export const PROVIDER_INFO = {
|
|
123
|
+
stt: {
|
|
124
|
+
"Deepgram": { url: "https://deepgram.com", models: ["nova-3", "nova-2"], strengths: "Fast, accurate, good multilingual" },
|
|
125
|
+
"AssemblyAI": { url: "https://assemblyai.com", models: ["universal-3-pro"], strengths: "Best for accented speech, speaker diarization" },
|
|
126
|
+
"OpenAI": { url: "https://openai.com", models: ["gpt-4o-transcribe", "whisper-large-v3"], strengths: "Highest accuracy, slower" },
|
|
127
|
+
"Speechmatics": { url: "https://speechmatics.com", models: ["enhanced"], strengths: "Best for code-switching (Thai/English)" },
|
|
128
|
+
"Google": { url: "https://cloud.google.com/speech-to-text", models: ["chirp-3"], strengths: "Wide language coverage, competitive pricing" },
|
|
129
|
+
},
|
|
130
|
+
llm: {
|
|
131
|
+
"OpenAI": { url: "https://openai.com", models: ["gpt-4.1-mini", "gpt-4.1"], strengths: "Best general-purpose, reliable" },
|
|
132
|
+
"Anthropic": { url: "https://anthropic.com", models: ["claude-sonnet-4-5"], strengths: "Nuanced reasoning, safety, complex conversations" },
|
|
133
|
+
"Google": { url: "https://ai.google.dev", models: ["gemini-2.5-flash", "gemini-2.5-pro"], strengths: "Fast, cost-effective, multilingual" },
|
|
134
|
+
"Groq": { url: "https://groq.com", models: ["llama-4-maverick"], strengths: "Ultra-low latency inference" },
|
|
135
|
+
"ElevenLabs": { url: "https://elevenlabs.io", models: ["eleven-turbo"], strengths: "Lowest latency in ElevenLabs stack" },
|
|
136
|
+
},
|
|
137
|
+
tts: {
|
|
138
|
+
"Cartesia": { url: "https://cartesia.ai", models: ["sonic-3"], strengths: "Lowest TTFB, natural prosody, multilingual" },
|
|
139
|
+
"ElevenLabs": { url: "https://elevenlabs.io", models: ["eleven_v3", "turbo_v2.5"], strengths: "Most natural, expressive, emotional range" },
|
|
140
|
+
"PlayHT": { url: "https://play.ht", models: ["play-3.0-mini"], strengths: "Good quality-to-cost ratio" },
|
|
141
|
+
"Rime": { url: "https://rime.ai", models: ["arcana-v3"], strengths: "Consistent quality, good for Asian languages" },
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
export const S2S_PROVIDER_INFO = {
|
|
145
|
+
"OpenAI Realtime": {
|
|
146
|
+
url: "https://platform.openai.com/docs/guides/realtime",
|
|
147
|
+
models: ["gpt-realtime"],
|
|
148
|
+
strengths: "Lowest S2S latency for English, direct provider WebSocket",
|
|
149
|
+
},
|
|
150
|
+
"Gemini Live": {
|
|
151
|
+
url: "https://ai.google.dev/gemini-api/docs/live",
|
|
152
|
+
models: ["gemini-2.5-flash-live-preview"],
|
|
153
|
+
strengths: "Strong multimodal support and broad language coverage",
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
export const S2S_OPTIONS = [
|
|
157
|
+
{
|
|
158
|
+
provider: "openai-realtime",
|
|
159
|
+
model: "gpt-realtime",
|
|
160
|
+
latencyMs: 120,
|
|
161
|
+
quality: 4.6,
|
|
162
|
+
costPerHour: 1.2,
|
|
163
|
+
languages: ["English"],
|
|
164
|
+
notes: "Best raw latency. Prefer for English speed/quality sessions.",
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
provider: "gemini-live",
|
|
168
|
+
model: "gemini-2.5-flash-live-preview",
|
|
169
|
+
latencyMs: 138,
|
|
170
|
+
quality: 4.4,
|
|
171
|
+
costPerHour: 0.9,
|
|
172
|
+
languages: ["English", "Japanese", "Korean", "Spanish", "German"],
|
|
173
|
+
notes: "Great multilingual S2S option with lower hourly cost.",
|
|
174
|
+
},
|
|
175
|
+
];
|
|
176
|
+
//# sourceMappingURL=benchmarks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmarks.js","sourceRoot":"","sources":["../../src/data/benchmarks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project scaffolding templates for different voice AI frameworks.
|
|
3
|
+
*/
|
|
4
|
+
export interface ProjectFile {
|
|
5
|
+
path: string;
|
|
6
|
+
content: string;
|
|
7
|
+
}
|
|
8
|
+
export type SetupFramework = "nextjs" | "react" | "vanilla";
|
|
9
|
+
export declare function getLiveKitAgentTemplate(config: {
|
|
10
|
+
language: string;
|
|
11
|
+
useCase: string;
|
|
12
|
+
stt: string;
|
|
13
|
+
sttModel: string;
|
|
14
|
+
llm: string;
|
|
15
|
+
llmModel: string;
|
|
16
|
+
tts: string;
|
|
17
|
+
ttsModel: string;
|
|
18
|
+
agentName: string;
|
|
19
|
+
}): ProjectFile[];
|
|
20
|
+
export declare function getNextJSTemplate(config: {
|
|
21
|
+
language: string;
|
|
22
|
+
useCase: string;
|
|
23
|
+
stt: string;
|
|
24
|
+
sttModel: string;
|
|
25
|
+
llm: string;
|
|
26
|
+
llmModel: string;
|
|
27
|
+
tts: string;
|
|
28
|
+
ttsModel: string;
|
|
29
|
+
agentName: string;
|
|
30
|
+
}): ProjectFile[];
|
|
31
|
+
export declare function getSpekoComponentTemplate(config: {
|
|
32
|
+
framework: SetupFramework;
|
|
33
|
+
agentId: string;
|
|
34
|
+
language: string;
|
|
35
|
+
priority: "speed" | "quality" | "cost";
|
|
36
|
+
context: string;
|
|
37
|
+
systemPrompt: string;
|
|
38
|
+
}): string;
|
|
39
|
+
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/data/templates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAoE5D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,WAAW,EAAE,CAwMhB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,WAAW,EAAE,CA+EhB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,SAAS,EAAE,cAAc,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAqDT"}
|