feat: 第五轮开发 - 14项未来路线图功能完整实现
W1-W14 全部完成: - W1: 消息搜索 (ILIKE全文检索 + SearchModal) - W2: 对话导出 (JSON/Markdown/TXT三格式) - W3: 记忆时间线 DevTools 可视化 - W4: 通知推送系统 (WebSocket + Browser Notification API) - W5: 定时提醒 (30s轮询 + 重复提醒 + WebSocket推送) - W6: 每日简报 (08:00自动生成: 天气+新闻+提醒+AI摘要) - W7: IoT场景自动化 (规则引擎 10s轮询 + 条件评估 + 场景执行) - W8: 语音输入 (浏览器 Speech Recognition API) - W9: STT服务 (voice-service + whisper.cpp) - W10: TTS服务 (浏览器 Speech Synthesis + edge-tts三档回退) - W11: 文件管理 (上传/下载/缩略图/纯Go bilinear缩放) - W12: 知识库RAG (PostgreSQL tsvector + 文档分块 + 检索) - W13: 多模态 (图片上传+分析: Vision API + 本地Go分析回退) - W14: PWA (Service Worker + 离线页 + install prompt) 总计: 6个Go微服务 + 10+前端组件 + 10+ PostgreSQL表 + 4个后台调度器
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"github.com/yourname/cyrene-ai/voice-service/internal/config"
|
||||
"github.com/yourname/cyrene-ai/voice-service/internal/handler"
|
||||
"github.com/yourname/cyrene-ai/voice-service/internal/service"
|
||||
)
|
||||
|
||||
func main() {
|
||||
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
||||
log.Println("🎤 Voice-Service (STT + TTS) 启动中...")
|
||||
|
||||
// 加载配置
|
||||
cfg := config.Load()
|
||||
|
||||
log.Printf("配置: 端口=%s, WhisperBinary=%s, WhisperModel=%s, Language=%s",
|
||||
cfg.Port, cfg.WhisperBinary, cfg.WhisperModel, cfg.WhisperLanguage)
|
||||
|
||||
// 初始化 STT 服务
|
||||
sttSvc := service.NewSTTService(cfg)
|
||||
|
||||
// 检查 whisper 引擎是否可用
|
||||
if !sttSvc.IsAvailable() {
|
||||
log.Printf("⚠️ Whisper 引擎未安装 (%s),STT 功能不可用", cfg.WhisperBinary)
|
||||
log.Printf(" 请运行: bash scripts/setup-whisper.sh")
|
||||
} else {
|
||||
log.Println("✅ Whisper 引擎已就绪")
|
||||
}
|
||||
|
||||
// 初始化 TTS 服务
|
||||
ttsSvc := service.NewTTSService()
|
||||
|
||||
if !ttsSvc.IsAvailable() {
|
||||
log.Println("⚠️ TTS 引擎不可用 (请安装: pip install edge-tts)")
|
||||
} else {
|
||||
ttsStatus := ttsSvc.GetEngineStatus()
|
||||
log.Printf("✅ TTS 引擎已就绪 (引擎: %s)", ttsStatus["engine"])
|
||||
}
|
||||
|
||||
// 初始化 HTTP 处理器
|
||||
sttHandler := handler.NewSTTHandler(sttSvc, cfg)
|
||||
sttHandler.SetTTSService(ttsSvc)
|
||||
ttsHandler := handler.NewTTSHandler(ttsSvc)
|
||||
|
||||
// 注册路由
|
||||
mux := http.NewServeMux()
|
||||
sttHandler.RegisterRoutes(mux)
|
||||
ttsHandler.RegisterRoutes(mux)
|
||||
|
||||
// 启动 HTTP 服务
|
||||
srv := &http.Server{
|
||||
Addr: ":" + cfg.Port,
|
||||
Handler: mux,
|
||||
}
|
||||
|
||||
go func() {
|
||||
log.Printf("🚀 Voice-Service 已启动在端口 %s", cfg.Port)
|
||||
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
|
||||
log.Fatalf("服务启动失败: %v", err)
|
||||
}
|
||||
}()
|
||||
|
||||
// 优雅关闭
|
||||
quit := make(chan os.Signal, 1)
|
||||
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
|
||||
<-quit
|
||||
log.Println("正在关闭 Voice-Service...")
|
||||
srv.Close()
|
||||
log.Println("Voice-Service 已关闭")
|
||||
}
|
||||
Reference in New Issue
Block a user