All checks were successful
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-consent (push) Successful in 27s
CI / test-python-voice (push) Successful in 25s
CI / test-bqas (push) Successful in 25s
CI / Deploy (push) Successful in 4s
- Migrate chat API from Ollama to LiteLLM (OpenAI-compatible SSE) - Add 15-min presenter storyline with bilingual scripts for all 20 slides - Add FAQ system (30 entries) with keyword matching for instant answers - Add IntroPresenterSlide with avatar placeholder and start button - Add PresenterOverlay (progress bar, subtitle text, play/pause/stop) - Add AvatarPlaceholder with pulse animation during speaking - Add usePresenterMode hook (state machine: idle→presenting→paused→answering→resuming) - Add 'P' keyboard shortcut to toggle presenter mode - Support [GOTO:slide-id] markers in chat responses - Dynamic slide count (was hardcoded 13, now from SLIDE_ORDER) - TTS stub prepared for future Piper integration Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
21 lines
769 B
TypeScript
21 lines
769 B
TypeScript
import { Language } from '../types'
|
|
|
|
/**
|
|
* TTS Stub — prepared for future Piper TTS integration via compliance-tts-service (:8095)
|
|
* POST /synthesize { text, voice: 'de_DE-thorsten-high' }
|
|
* Returns audio URL from MinIO
|
|
*/
|
|
export async function synthesizeSpeech(text: string, lang: Language): Promise<string | null> {
|
|
// TODO: Connect to compliance-tts-service
|
|
// const voice = lang === 'de' ? 'de_DE-thorsten-high' : 'en_US-lessac-high'
|
|
// const res = await fetch('http://compliance-tts-service:8095/synthesize', {
|
|
// method: 'POST',
|
|
// headers: { 'Content-Type': 'application/json' },
|
|
// body: JSON.stringify({ text, voice }),
|
|
// })
|
|
// if (!res.ok) return null
|
|
// const data = await res.json()
|
|
// return data.audio_url
|
|
return null
|
|
}
|