osborn 0.9.192 → 0.9.194
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/dist/config.js +9 -6
- package/dist/index.js +3 -3
- package/dist/voice-io.js +4 -2
- package/package.json +1 -1
package/dist/config.js
CHANGED
|
@@ -61,7 +61,7 @@ const DEFAULT_CONFIG = {
|
|
|
61
61
|
// Pricing: $0.70/hr of generated speech (preview). Needs SONIOX_API_KEY.
|
|
62
62
|
provider: 'soniox',
|
|
63
63
|
model: 'tts-rt-v1',
|
|
64
|
-
voice: '
|
|
64
|
+
voice: 'Victoria',
|
|
65
65
|
// Previous: OpenAI tts-1-hd, voice fable — high quality, $30/M chars, ~500ms TTFB.
|
|
66
66
|
// Switch back: provider: 'openai', model: 'tts-1-hd', voice: 'fable'
|
|
67
67
|
// Other options already wired in voice-io.ts:
|
|
@@ -210,16 +210,19 @@ export function getVoiceMode(_config) {
|
|
|
210
210
|
export function getDirectConfig(config) {
|
|
211
211
|
const defaults = DEFAULT_CONFIG.direct;
|
|
212
212
|
const userConfig = config.direct || {};
|
|
213
|
+
// Env vars take priority over config.yaml — escape hatch for stale volume configs.
|
|
214
|
+
// Set OSBORN_STT_PROVIDER / OSBORN_TTS_PROVIDER / OSBORN_TTS_VOICE on the machine
|
|
215
|
+
// to override whatever is baked into /workspace/.osborn/config.yaml.
|
|
213
216
|
return {
|
|
214
217
|
stt: {
|
|
215
|
-
provider: userConfig.stt?.provider || defaults.stt.provider,
|
|
216
|
-
model: userConfig.stt?.model || defaults.stt.model,
|
|
218
|
+
provider: (process.env.OSBORN_STT_PROVIDER || userConfig.stt?.provider || defaults.stt.provider),
|
|
219
|
+
model: process.env.OSBORN_STT_MODEL || userConfig.stt?.model || defaults.stt.model,
|
|
217
220
|
language: userConfig.stt?.language || 'en',
|
|
218
221
|
},
|
|
219
222
|
tts: {
|
|
220
|
-
provider: userConfig.tts?.provider || defaults.tts.provider,
|
|
221
|
-
model: userConfig.tts?.model || defaults.tts.model,
|
|
222
|
-
voice: userConfig.tts?.voice || defaults.tts.voice,
|
|
223
|
+
provider: (process.env.OSBORN_TTS_PROVIDER || userConfig.tts?.provider || defaults.tts.provider),
|
|
224
|
+
model: process.env.OSBORN_TTS_MODEL || userConfig.tts?.model || defaults.tts.model,
|
|
225
|
+
voice: process.env.OSBORN_TTS_VOICE || userConfig.tts?.voice || defaults.tts.voice,
|
|
223
226
|
},
|
|
224
227
|
};
|
|
225
228
|
}
|
package/dist/index.js
CHANGED
|
@@ -30,7 +30,7 @@ const __filename = fileURLToPath(import.meta.url);
|
|
|
30
30
|
const __dirname = dirname(__filename);
|
|
31
31
|
import { createPatch } from 'diff';
|
|
32
32
|
import { loadConfig, getMcpServers, getEnabledMcpServerNames, getVoiceMode, getDirectConfig, listSessions, listAllClaudeSessions, invalidateSessionListCache, getMostRecentSessionId, sessionExists, getSessionSummary, getConversationHistory, ensureSessionWorkspace, getMcpServerStatusList, buildMcpServersForKeys, listWorkspaceArtifacts } from './config.js';
|
|
33
|
-
import { createSTT, createTTS,
|
|
33
|
+
import { createSTT, createTTS, DIRECT_MODE_TTS } from './voice-io.js';
|
|
34
34
|
import { createClaudeLLM, NAMED_AGENTS, applyTurbo } from './claude-llm.js';
|
|
35
35
|
import { clearPipelineFastBrainSession, prewarmBM25Index } from './pipeline-fastbrain.js';
|
|
36
36
|
import { getIndexPath, buildSummaryIndex } from './summary-index.js';
|
|
@@ -3173,8 +3173,8 @@ async function main() {
|
|
|
3173
3173
|
// Create DIRECT session (STT + Claude Agent SDK + TTS)
|
|
3174
3174
|
async function createDirectSession(resumeSessionId, llmOverride) {
|
|
3175
3175
|
console.log('🎯 Creating direct session...');
|
|
3176
|
-
const stt = createSTT(
|
|
3177
|
-
const tts = createTTS(
|
|
3176
|
+
const stt = createSTT(directConfig.stt);
|
|
3177
|
+
const tts = createTTS(directConfig.tts);
|
|
3178
3178
|
// Create Claude LLM wrapper — direct mode uses speech-optimized system prompt
|
|
3179
3179
|
// skipTTSQueue: bypass LiveKit's BufferedTokenStream, use session.say() instead
|
|
3180
3180
|
// llmOverride: pipeline mode passes PipelineDirectLLM which wraps its own ClaudeLLM
|
package/dist/voice-io.js
CHANGED
|
@@ -162,13 +162,15 @@ export const DIRECT_MODE_STT = {
|
|
|
162
162
|
// provider: 'groq-whisper', model: 'whisper-large-v3-turbo', // Batch — needs VAD
|
|
163
163
|
// provider: 'openai-whisper', model: 'whisper-1', // Batch — needs VAD
|
|
164
164
|
// provider: 'deepgram-flux', model: 'flux-general-en', language: 'en', // Streaming, ML-based turn detection — Flux V2 has silent keepalive timeout bug (~30s silence kills connection)
|
|
165
|
-
provider: 'deepgram', model: 'nova-3', language: 'en',
|
|
165
|
+
// provider: 'deepgram', model: 'nova-3', language: 'en', // Silence-based endpointing (550ms) — $0.0043/min
|
|
166
|
+
provider: 'soniox', model: 'stt-rt-v4', language: 'en', // Semantic endpointing, ~60% cheaper ($0.0017/min) — needs SONIOX_API_KEY
|
|
166
167
|
};
|
|
167
168
|
export const DIRECT_MODE_TTS = {
|
|
168
169
|
// provider: 'deepgram', model: 'aura-2-asteria-en', // WebSocket-based: handles TTS abort cleanly — but quality rejected (run-on sentences)
|
|
169
170
|
// provider: 'openai', model: 'tts-1', voice: 'fable', // HTTP streaming: throws APIUserAbortError on interrupt → unrecoverable session crash
|
|
170
|
-
provider: 'openai', model: 'tts-1-hd', voice: 'fable',
|
|
171
|
+
// provider: 'openai', model: 'tts-1-hd', voice: 'fable', // $30/M chars, ~500ms TTFB — fallback if Soniox has issues
|
|
171
172
|
// provider: 'groq-orpheus', model: 'canopylabs/orpheus-v1-english', voice: 'autumn', // $22/M chars — voices: autumn, diana, hannah, austin, daniel, troy
|
|
172
173
|
// provider: 'fishaudio', model: 's2-pro', voice: '<voice-id>', // $15/M chars — blind test winner, HTTP streaming (test abort behavior)
|
|
173
174
|
// provider: 'rime', model: 'mistv3', voice: 'cove', // $30/M chars, 37ms TTFB — WebSocket (safe on interruption); voices: aurora, ember, cove
|
|
175
|
+
provider: 'soniox', model: 'tts-rt-v1', voice: 'Victoria', // WebSocket streaming, ~$4–16/M chars, British female — needs SONIOX_API_KEY
|
|
174
176
|
};
|