本文引用的文件
本项目是一个面向内容创作者的“AI 有声书生成平台”,旨在以低成本、高效率的方式将文字内容转换为高质量音频,支持多种音色、参数调节、在线播放、历史管理与会员体系等功能。项目采用前后端分离架构:前端基于 uniapp + Vue 3 + TypeScript,后端基于 Node.js + Koa.js + MongoDB,并通过 FFmpeg 进行音频处理,集成阿里云 TTS 提供语音合成能力。
项目定位清晰:为自媒体作者、小说爱好者、学习者提供从“文本到音频”的一站式工具链,覆盖从创作、生成、播放到管理的全生命周期。
章节来源
项目采用“双工程”结构:前端在 my-uniapp-vue3 目录,后端在 server 目录;同时提供部署打包产物在 deploy-package 目录。整体目录组织如下:
graph TB
Root["项目根目录"]
Frontend["前端工程<br/>my-uniapp-vue3"]
Backend["后端工程<br/>server"]
Docs["文档<br/>docs"]
Deploy["部署包<br/>deploy-package"]
Root --> Frontend
Root --> Backend
Root --> Docs
Root --> Deploy
Frontend --> F_Pkg["package.json<br/>脚本与依赖"]
Frontend --> F_Main["src/main.ts<br/>应用入口"]
Frontend --> F_Router["pages/*<br/>页面与组件"]
Backend --> B_App["src/app.ts<br/>应用入口"]
Backend --> B_Config["src/config/index.ts<br/>配置中心"]
Backend --> B_Modules["src/modules/*<br/>业务模块"]
Backend --> B_Services["src/services/*<br/>基础设施服务"]
Backend --> B_DB["prisma/schema.prisma<br/>数据模型"]
Docs --> D_API["API.md"]
Docs --> D_DB["database-structure.md"]
图表来源
章节来源
章节来源
系统采用“前端多端 + 后端微服务模块化 + 第三方服务集成”的架构,核心交互流程如下:
graph TB
subgraph "前端"
FE_Login["登录/注册"]
FE_Player["播放器"]
FE_History["历史与收藏"]
FE_Member["会员中心"]
end
subgraph "后端"
BE_Auth["认证模块"]
BE_TTS["TTS 模块"]
BE_Player["播放器模块"]
BE_History["历史模块"]
BE_Sub["会员与订阅模块"]
BE_Share["分享模块"]
BE_Video["视频生成模块"]
end
subgraph "基础设施"
DB["MongoDB"]
OSS["对象存储"]
FFmpeg["FFmpeg"]
AliyunTTS["阿里云 TTS"]
end
FE_Login --> BE_Auth
FE_Player --> BE_Player
FE_History --> BE_History
FE_Member --> BE_Sub
BE_Auth --> DB
BE_TTS --> AliyunTTS
BE_TTS --> FFmpeg
BE_Player --> DB
BE_History --> DB
BE_Sub --> DB
BE_Share --> DB
BE_Video --> FFmpeg
BE_TTS --> OSS
BE_Player --> OSS
图表来源
数据模型
用户信息存储于 MongoDB,Prisma 提供 ORM 能力。
sequenceDiagram
participant U as "用户"
participant FE as "前端"
participant AUTH as "认证控制器"
participant SVC as "认证服务"
participant DB as "数据库"
U->>FE : 输入手机号
FE->>AUTH : POST /api/auth/send-code
AUTH->>SVC : 生成并返回验证码
SVC-->>AUTH : 验证码
AUTH-->>FE : 返回验证码开发环境
U->>FE : 输入验证码/或直接登录
FE->>AUTH : POST /api/auth/login
AUTH->>SVC : 登录处理
SVC->>DB : 查询/创建用户
DB-->>SVC : 用户信息
SVC-->>AUTH : {token, user}
AUTH-->>FE : 返回登录结果
图表来源
章节来源
第三方集成
阿里云 TTS(DashScope)提供高质量语音合成,支持实时与非实时模式。
sequenceDiagram
participant U as "用户"
participant FE as "前端"
participant TTS as "TTS 控制器"
participant SVC as "TTS 服务"
participant SUB as "订阅服务"
participant TTSProv as "阿里云 TTS"
participant FS as "对象存储/文件系统"
U->>FE : 选择音色并输入文本
FE->>TTS : POST /api/tts/generate
TTS->>SUB : 检查配额/消费分钟
TTS->>SVC : 异步生成音频
SVC->>TTSProv : 调用 TTS 接口
TTSProv-->>SVC : 返回音频片段/流
SVC->>FS : 保存并合并音频
SVC-->>TTS : 返回任务信息
TTS-->>FE : 返回任务ID与预估结果
FE->>FE : 轮询状态/下载音频
图表来源
章节来源
数据模型
Audio 表存储音频元数据与状态,Album/AlbumAudio 关联专辑与音频。
flowchart TD
Start(["进入播放页"]) --> LoadList["加载音频列表"]
LoadList --> SelectAudio{"选择音频"}
SelectAudio --> |单个| Play["播放音频"]
SelectAudio --> |批量| Batch["加入播放列表"]
Play --> Progress["进度控制/倍速"]
Progress --> Favorite{"收藏/取消收藏"}
Favorite --> Update["更新收藏状态"]
Update --> History["写入历史记录"]
History --> End(["完成"])
图表来源
章节来源
配额与计费
按字数估算音频分钟并消费配额,支持跨模块复用。
classDiagram
class MemberPlan {
+level : number
+name : string
+price : number
+features : string[]
}
class User {
+id : number
+memberLevel : number
+quota : Quota
}
class Quota {
+dailyLimit : number
+dailyUsed : number
+dailyRemaining : number
+wordLimit : number
}
class SubscriptionService {
+checkAudioQuota(userId, words)
+consumeAudioMinutes(userId, words, desc)
}
User --> MemberPlan : "拥有"
User --> Quota : "持有"
SubscriptionService --> User : "读取/更新"
图表来源
章节来源
状态管理
使用 Pinia 管理用户状态与音频播放状态,保证跨页面一致性。
sequenceDiagram
participant H5 as "H5/小程序"
participant Main as "main.ts"
participant Pinia as "Pinia"
participant UserStore as "User Store"
H5->>Main : 启动应用
Main->>Pinia : 创建并挂载
Main->>UserStore : 初始化用户状态
UserStore-->>Main : 用户信息就绪
Main-->>H5 : 渲染应用
图表来源
章节来源
关键耦合点
播放器与历史模块共享音频元数据,避免重复查询。
graph LR
FE["@dcloudio/uni-app<br/>vue<br/>pinia"] --> APP["应用"]
APP --> ROUTER["页面路由"]
ROUTER --> STORE["Pinia Store"]
BE["Koa + 路由"] --> CTRL["控制器"]
CTRL --> SVC["服务层"]
SVC --> DB["Prisma/MongoDB"]
SVC --> EXT["Redis/OSS/FFmpeg/Aliyun TTS"]
图表来源
章节来源
[本节为通用指导,无需具体文件分析]
章节来源
本项目以“易用、高效、可扩展”为目标,构建了从文本到音频的完整工具链。前端多端适配与后端模块化设计,配合 FFmpeg 与阿里云 TTS 的强大能力,能够满足内容创作者的多样化需求。通过会员体系与配额机制,平台实现了可持续的商业化闭环。未来可在批量生成、音频编辑、多格式导出等方面持续演进,进一步提升用户体验与生产效率。
[本节为总结性内容,无需具体文件分析]
章节来源