Skip to content

Synapse Live (心流直播) - AI 增强的互动直播平台

Notifications You must be signed in to change notification settings

zhashut/synapse-live

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Synapse Live (心流直播)

Synapse Live 是一个 AI 增强的互动直播平台后端项目。它不仅仅是一个传统的直播推拉流服务,而是深度整合了现代大语言模型 (LLM) 和语音识别 (ASR) 技术,旨在通过 AI 赋能,极大地提升主播与观众之间的互动深度和直播内容的可访问性。

本项目采用 Go 语言构建,并遵循了云原生最佳实践,实现了微服务架构、事件驱动通信以及全面的可观测性。


✨ 功能列表 (Features)

核心功能

  • 直播推拉流: 基于 SRS 实现稳定高效的 RTMP 推流和 HTTP-FLV/HLS/WebRTC 分发。
  • 用户系统: 支持本地用户名密码注册登录,以及 Google/GitHub OAuth2 无缝登录。
  • 实时弹幕: 基于 WebSocket 和 NATS 消息队列,构建了可水平扩展的高性能实时弹幕系统。
  • 录播与回放 (VOD): 支持直播自动录制,并通过 MinIO (S3 兼容) 进行对象存储,提供回放 API。
  • 虚拟货币与礼物系统: 完整的内部虚拟经济系统,支持钱包管理、礼物赠送、平台抽成和实时广播。
  • 社区系统: 支持用户间的关注/取关,构建社区关系基础。

AI 驱动功能

  • 实时字幕 (ASR): 自动将主播的语音实时转换为字幕,并通过 WebSocket 广播给所有观众。
  • 弹幕情绪分析: 后台 AI Worker 实时分析观众弹幕的情绪倾向,并将结果持久化。
  • 热点话题提炼: 周期性地分析弹幕内容,提取观众正在热议的关键词。
  • 智能 Q&A 助手: 主播可预设知识库,AI 助手能通过 LLM 语义理解,自动在聊天室中回答观众的常见问题。
  • 高光时刻自动标记: 通过分析弹幕密度等指标,自动识别并记录直播中的精彩瞬间。
  • AI 内容审核: “AI 房管” 实时审查弹幕内容,自动处理违规信息,维护社区健康。
  • AI 直播摘要: 直播结束后,自动整合字幕、高光、热点等信息,通过 LLM 生成 VOD 的内容摘要和章节目录。

🚀 技术栈 (Technology Stack)

  • 语言: Go
  • 微服务框架:
    • HTTP API / WebSocket: Gin
    • 服务间同步通信: gRPC
  • 数据库:
    • 业务数据: PostgreSQL
    • 缓存/会话管理: Redis
  • 消息队列/事件总线: NATS (JetStream)
  • 流媒体服务: SRS (Simple Realtime Server)
  • 对象存储: MinIO (S3 兼容)
  • AI / 大语言模型:
    • 抽象层: 自定义 LLMClientASRClient 接口
    • 具体实现: 通义千问 (Qwen)
  • 可观测性 (Observability):
    • 指标 (Metrics): Prometheus
    • 日志 (Logging): Loki + Promtail
    • 追踪 (Tracing): Jaeger + OpenTelemetry
    • 可视化 (Visualization): Grafana
  • 容器化与编排: Docker, Docker Compose
  • 核心依赖库: GORM, Zap, Viper, golang.org/x/oauth2, prometheus/client_golang 等。

🏛️ 架构说明 (Architecture)

Synapse Live 采用现代化的微服务架构,通过 Docker Compose 进行编排。服务之间遵循“同步 gRPC,异步 NATS”的通信原则。

  • core-service: 核心业务服务。作为大部分 HTTP API 的入口,处理所有核心业务逻辑,如用户、认证、房间、VOD、礼物、关注等。同时,它也作为 gRPC 服务端,向其他内部服务提供核心数据。
  • im-service: 实时消息服务。职责单一且明确,专门负责处理和管理所有 WebSocket 长连接。它通过 NATS 消息总线与后端的 AI 服务和核心服务解耦。
  • ai-service: AI 服务。包含了所有后台的 AI Worker。它通过订阅 NATS 事件来异步处理任务(如情绪分析、内容审核),并通过 gRPC 暴露一些查询服务(如分析数据查询)。
  • SRS: 独立的流媒体服务器,负责所有视频流的接收、转码和分发,通过 Webhooks 与 core-service 进行状态同步。

📁 目录结构 (Directory Structure)

项目采用清晰的 monorepo 结构,服务代码与共享代码分离。

synapse-live/
├── core-service/             # 核心服务源码
│   ├── cmd/server/main.go    # 启动入口
│   ├── configs/              # 专属配置文件
│   ├── internal/             # 内部实现 (API, gRPC, Service, Repo)
│   └── ...
├── ai-service/               # AI 服务源码
│   ├── cmd/server/main.go
│   ├── configs/
│   ├── internal/             # (Client, gRPC, Service, Repo, API)
│   └── Dockerfile
│   └── go.mod
├── im-service/               # 实时消息服务源码
│   ├── cmd/server/main.go
│   ├── configs/
│   ├── internal/             # (API, Service)
│   └── Dockerfile
│   └── go.mod
├── pkg/                      # 所有服务共享的公共包
│   ├── auth/                 # 认证 (JWT Claims)
│   ├── common/               # 公共常量和事件定义
│   ├── config/               # 共享配置结构体
│   ├── database/             # 数据库初始化
│   ├── domain/entity/        # 核心领域实体 (GORM Models)
│   ├── gutils/               # 泛型工具函数
│   ├── middleware/           # 共享中间件
│   ├── mq/                   # 消息队列抽象层与实现
│   ├── repository/           # 仓储层接口定义
│   ├── realtime/             # 实时消息结构体
│   └── tracing/              # 分布式追踪初始化
├── proto/                    # Protobuf 定义文件
│   ├── analysis/
│   ├── room/
│   └── ...
├── monitoring/               # 监控配置文件 (Prometheus, Grafana, Loki)
├── Dockerfile                # core-service 的 Dockerfile
├── docker-compose.yml        # 项目总编排文件
└── go.mod                    # core-service 及共享库的 Go 模块文件

🚀 快速开始 (Getting Started)

请确保您已安装 Go (1.21+), Docker, Docker Compose, 和 protoc 编译器。

1. 克隆项目

git clone https://github.com/zhashut/synapse-live.git
cd synapse-live

2. 配置环境变量

core-service/configs/config.local.yamlai-service/configs/config.local.yaml 等配置文件中,填入您自己的数据库密码、OAuth2 凭证、AI 服务 API Key 等。

3. 生成 gRPC 代码

# 在项目根目录运行
protoc --go_out=. --go-grpc_out=. proto/**/*.proto

4. 整理 Go 依赖

# 在根目录
go mod tidy

# 在 ai-service 目录
cd ai-service && go mod tidy && cd ..

# 在 im-service 目录
cd im-service && go mod tidy && cd ..

5. 启动所有服务

docker-compose up --build

6. 访问服务

  • Core Service API: http://localhost:8081
  • AI Service API (QnA): http://localhost:8083
  • IM Service WebSocket: ws://localhost:8084
  • Grafana (监控): http://localhost:3000 (admin/admin)
  • Jaeger (追踪): http://localhost:16686
  • Prometheus: http://localhost:9090
  • MinIO Console: http://localhost:9001 (minioadmin/minioadmin)

📄 许可证 (License)

本项目采用 MIT License 授权。

About

Synapse Live (心流直播) - AI 增强的互动直播平台

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published