package main import ( "git.yeij.top/AskaEth/Cyrene_v2/internal/logger" "git.yeij.top/AskaEth/Cyrene_v2/internal/runtime/multimodal/voice" ) // wireVoice 从配置构建语音 STT/TTS 降级链并挂到 app 上,供 WebSocket 的 // voice_input/voice_output 路径使用。降级链依次为 云 → 本地 → edge-tts/espeak → // 静默,因此端点或 API key 缺失绝不会阻塞启动(设计上接受静默兜底)。 func (a *app) wireVoice() { a.voice = voice.New(a.cfg.Voice) logger.WithSource(a.log, "cmd/cyrene").Info("voice chain ready", "tts_provider", a.cfg.Voice.TTSProvider, "stt_provider", a.cfg.Voice.STTProvider, "dashscope_configured", a.cfg.Voice.DashscopeAPIKey != "") }