# AI有声书生成工具 - 开发计划

## 产品概述

开发一个AI有声书生成工具,用户输入长文本自动生成高质量音频,支持下载和分享。定位为内容创作者的音频制作工具,帮助自媒体作者、小说爱好者、学习者低成本制作音频内容。

## 核心功能

### 一、文本转音频(核心功能)

- **长文本支持**:输入任意长度文本(无限制)
- **自动分段处理**:智能分段,并行生成,快速完成
- **多种音色**:标准音色、情感音色共10+种
- **参数调节**:语速(0.5x-2.0x)、音调、音量

### 二、智能辅助

- **自动生成简介**:AI提取核心内容,生成200字简介
- **自动生成标题**:智能提取或生成吸引人的标题
- **标签推荐**:自动分析文本生成标签

### 三、音频播放器（核心功能）

- **在线播放**:无需下载,直接在线收听
- **播放控制**:
  - 播放/暂停
  - 进度条拖动
  - 上一条/下一条切换
  - 倍速播放（0.5x/0.75x/1.0x/1.25x/1.5x/2.0x）
- **播放列表**:历史记录作为播放列表
- **后台播放**:支持后台播放,锁屏状态可继续播放
- **锁屏控制**:锁屏界面显示播放控制

### 四、音频管理

- **下载保存**:支持MP3格式下载
- **历史记录**:保存生成历史,方便管理
- **收藏功能**:收藏喜欢的音频
- **分享功能**:生成分享链接或二维码

### 四、会员体系(简化版)

- **免费版**:每天3次生成,每次最多5000字
- **月度会员**(¥19.9/月):每天20次生成,每次最多50000字
- **年度会员**(¥199/年):每天无限次生成,无字数限制

## 目标用户

### 主要用户群体

1. **自媒体作者**:想把文章转音频发布
2. **小说爱好者**:想听冷门小说或自己写的小说
3. **学习者**:想听论文、技术文档、学习资料
4. **视障人士**:需要听各种文档内容

### 用户场景

| 用户类型 | 典型场景 | 付费意愿 |
| --- | --- | --- |
| 自媒体作者 | 文章转音频发布到平台 | 高(¥20-50/月) |
| 小说爱好者 | 网文转音频自己听 | 中(¥10-20/月) |
| 学习者 | 论文/文档转音频 | 中(¥10-30/月) |
| 视障人士 | 文档识别转音频 | 高(有政策支持) |


## 商业模式

### 收费模式

**按字数收费 + 会员套餐**

| 收费方式 | 价格 | 适用人群 |
| --- | --- | --- |
| 按次付费 | ¥0.01/千字 | 轻度用户 |
| 月度会员 | ¥19.9/月 | 活跃用户 |
| 年度会员 | ¥199/年 | 重度用户 |


### 成本结构

- 讯飞TTS:¥0.2/千字符
- OSS存储:¥0.12/GB/月
- CDN流量:¥0.24/GB
- 服务器:¥500/月

### 盈利预测

| 阶段 | 用户数 | 付费率 | 月收入 | 月成本 | 月利润 |
| --- | --- | --- | --- | --- | --- |
| 3个月 | 1000 | 5% | ¥2,000 | ¥1,500 | ¥500 |
| 6个月 | 5000 | 6% | ¥12,000 | ¥5,000 | ¥7,000 |
| 12个月 | 20000 | 8% | ¥60,000 | ¥15,000 | ¥45,000 |


## 技术栈选择

### 前端技术

| 技术 | 版本 | 用途 |
| --- | --- | --- |
| uniapp | 最新 | 跨平台框架(微信/H5) |
| Vue3 | 3.x | 前端框架 |
| TypeScript | 5.x | 类型安全 |
| Pinia | 2.x | 状态管理 |
| uni-ui | 最新 | UI组件库 |


### 后端技术

| 技术 | 版本 | 用途 |
| --- | --- | --- |
| Node.js | 18 LTS | 运行时环境 |
| Koa | 2.x | Web框架 |
| TypeScript | 5.x | 类型安全 |
| MySQL | 8.x | 数据库 |
| Prisma | 7.x | ORM框架 |
| Redis | 7.x | 缓存/会话 |
| FFmpeg | 最新 | 音频处理 |


### 云服务

| 服务 | 提供商 | 用途 |
| --- | --- | --- |
| ECS | 阿里云 | 服务器部署 |
| OSS | 阿里云 | 音频文件存储 |
| CDN | 阿里云 | 音频加速 |
| 讯飞语音 | 科大讯飞 | TTS服务 |
| 阿里云TTS | 阿里云 | TTS备用 |


## 实现方案

### 系统架构

```mermaid
graph TB
    subgraph 客户端
        A[微信小程序] 
        B[H5网页]
    end
    
    subgraph 服务端
        C[Nginx]
        D[Koa API服务]
        E[TTS处理服务]
        F[音频处理服务]
    end
    
    subgraph 数据层
        G[MongoDB]
        H[Redis缓存]
        I[OSS音频存储]
    end
    
    subgraph 第三方服务
        J[讯飞TTS API]
        K[阿里云TTS API]
        L[微信支付]
    end
    
    A --> C
    B --> C
    C --> D
    D --> E
    D --> F
    E --> J
    E --> K
    D --> G
    D --> H
    F --> I
    D --> L
```

### 核心模块设计

**1. 长文本TTS处理**

```
长文本输入 → 文本分段(500字/段) → 并行TTS生成 → 音频合并 → OSS存储 → 返回音频URL
优化:任务队列 + 异步处理,支持并发
```

**2. 智能辅助生成**

```
文本输入 → AI提取关键词 → 生成简介(200字) → 生成标题 → 推荐标签
使用:讯飞星火或阿里通义千问API
```

**3. 用户权益控制**

```
请求拦截 → 次数校验 → 字数校验 → 通过执行/拒绝提示
免费用户:3次/天,5000字/次
月度会员:20次/天,50000字/次
年度会员:无限次,无限制
```

**4. 音频处理流程**

```
TTS生成 → 格式转换(MP3) → 音频压缩 → 上传OSS → 生成下载链接
优化:CDN加速下载
```

### 数据库设计

**用户表(users)**

```javascript
{
  _id: ObjectId,
  openid: String,           // 微信openid
  unionid: String,          // 跨平台unionid
  nickname: String,
  avatar: String,
  memberLevel: Number,      // 0免费 1月度 2年度
  memberExpireAt: Date,
  dailyUsage: Number,       // 今日使用次数
  lastUsageDate: String,    // 最后使用日期
  createdAt: Date
}
```

**音频记录表(audios)**

```javascript
{
  _id: ObjectId,
  userId: ObjectId,
  title: String,             // 标题
  text: String,              // 原文内容
  summary: String,           // AI生成简介
  tags: [String],            // 标签
  audioUrl: String,          // 音频URL
  audioDuration: Number,     // 时长(秒)
  audioSize: Number,         // 文件大小(字节)
  wordCount: Number,         // 字数
  voiceId: String,           // 音色ID
  voiceParams: {             // 参数
    speed: Number,
    pitch: Number,
    volume: Number
  },
  status: String,            // processing/completed/failed
  createdAt: Date
}
```

**订单表(orders)**

```javascript
{
  _id: ObjectId,
  userId: ObjectId,
  orderNo: String,
  productType: String,      // monthly/yearly
  amount: Number,
  status: String,           // pending/paid/failed
  paymentMethod: String,
  paidAt: Date,
  createdAt: Date
}
```

## 目录结构

```
c:/Users/caoyg/test/audio/
├── client/                          # uniapp前端项目
│   ├── src/
│   │   ├── pages/                   
│   │   │   ├── index/              # 首页(文本输入+生成)
│   │   │   ├── history/            # 历史记录页面
│   │   │   ├── mine/               # 个人中心
│   │   │   └── member/             # 会员页面
│   │   ├── components/             
│   │   │   ├── TextInput.vue       # 文本输入组件
│   │   │   ├── AudioPlayer.vue     # 音频播放器
│   │   │   ├── VoiceSelector.vue   # 音色选择器
│   │   │   └── MemberCard.vue      # 会员卡片
│   │   ├── store/                  
│   │   │   ├── user.ts             
│   │   │   └── audio.ts            # 音频状态
│   │   ├── api/                    
│   │   │   ├── tts.ts              # TTS接口
│   │   │   ├── user.ts             # 用户接口
│   │   │   └── payment.ts          # 支付接口
│   │   └── utils/                  
│   ├── manifest.json               
│   ├── pages.json                  
│   └── package.json
│
├── server/                          # Node.js后端项目
│   ├── src/
│   │   ├── modules/                
│   │   │   ├── tts/                # TTS服务模块
│   │   │   │   ├── tts.controller.ts
│   │   │   │   ├── tts.service.ts
│   │   │   │   ├── xunfei.provider.ts  # 讯飞实现
│   │   │   │   ├── aliyun.provider.ts  # 阿里云实现
│   │   │   │   └── audio-merger.ts     # 音频合并
│   │   │   ├── auth/              # 用户认证模块
│   │   │   │   ├── auth.controller.ts
│   │   │   │   ├── auth.service.ts
│   │   │   │   └── auth.dto.ts
│   │   │   ├── member/            # 会员模块
│   │   │   │   ├── member.controller.ts
│   │   │   │   └── member.service.ts
│   │   │   └── payment/           # 支付模块
│   │   │       ├── payment.controller.ts
│   │   │       └── payment.service.ts
│   │   ├── middleware/            
│   │   │   ├── auth.ts           # 认证中间件
│   │   │   ├── usageLimit.ts     # 使用次数限制
│   │   │   └── errorHandler.ts   
│   │   ├── models/               
│   │   │   ├── User.ts
│   │   │   ├── Audio.ts
│   │   │   └── Order.ts
│   │   └── app.ts                
│   ├── package.json
│   └── tsconfig.json
│
├── docs/                            
│   ├── API.md                      # API文档
│   └── DEPLOY.md                   # 部署文档
│
├── AI语音应用商业计划书.md           
└── README.md                        
```

## 实施要点

### 性能优化

- 长文本并行生成,提升速度
- 任务队列处理,避免阻塞
- Redis缓存用户权益信息
- CDN加速音频下载

### 安全措施

- API签名验证
- 用户敏感数据加密
- 支付回调验签
- 音频链接时效性控制

### 成本控制

- 讯飞TTS:¥0.2/千字符
- OSS存储:¥0.12/GB/月
- CDN流量:¥0.24/GB
- 预估1000用户/月成本:¥1500

## 设计风格

采用现代化简约风格,以渐变色和卡片式设计为主,营造科技感与亲和力并存的视觉体验。主色调使用蓝色系,象征科技与信任,辅以温暖的橙色作为强调色。

## 页面规划

### 首页(核心页面)

- 顶部:Logo + 用户头像 + 剩余次数提示
- 中部:
  - 文本输入区(支持粘贴、字数统计)
  - 音色选择下拉
  - 参数调节滑块(语速、音调、音量)
- 底部:生成按钮(渐变色主按钮)+ 底部导航栏

### 播放器页面（核心页面）

- **迷你播放器**（全局底部悬浮）:
  - 当前播放信息（封面、标题、时长）
  - 播放/暂停按钮
  - 下一首按钮
  - 进度条（可拖动）
  - 点击展开完整播放器

- **完整播放器页面**:
  - 顶部:返回按钮 + 标题
  - 中部:
    - 大封面图
    - 文本预览
    - 简介(AI生成)
    - 播放控制:
      - 进度条（可拖动，显示当前时间/总时长）
      - 播放/暂停按钮
      - 上一首/下一首按钮
      - 倍速选择（0.5x/0.75x/1.0x/1.25x/1.5x/2.0x）
      - 收藏按钮
  - 底部:
    - 下载按钮
    - 分享按钮
    - 添加到播放列表

### 历史记录页面

- 顶部:搜索栏
- 中部:音频列表(卡片式,显示标题、时长、生成时间、操作按钮)
- 底部:导航栏

### 个人中心页面

- 顶部:用户信息卡片(头像、昵称、会员状态)
- 中部:
  - 会员中心入口
  - 使用统计
  - 设置
  - 帮助反馈
- 底部:导航栏

### 会员页面

- 顶部:会员权益说明
- 中部:会员卡片对比(免费/月度/年度)
- 底部:立即开通按钮

## 开发计划

### MVP阶段(2周)

**第1周**:

- 项目初始化
- 用户登录(微信授权)
- TTS核心功能(讯飞API集成)
- 文本输入+音频生成

**第2周**:

- 音频播放器（在线播放、进度控制、倍速播放）
- 后台播放、锁屏控制
- 播放列表功能
- 下载功能
- 历史记录
- 会员系统基础版
- 微信支付集成

### V1.0阶段(1个月)

- 优化TTS生成速度
- 智能简介生成
- 更多音色选择
- 分享功能
- 管理后台

### V1.5阶段(2-3个月)

- H5版本
- 批量生成
- 音频编辑功能
- 导出多种格式

---

## 第二期开发计划（体验增强）

基于用户反馈和产品优化，新增以下功能：

### 一、搜索与发现

| 功能 | 优先级 | 说明 |
|------|--------|------|
| 🔍 全局搜索 | P1 | 搜索有声书标题、历史记录 |
| 🏷️ 内容分类 | P2 | 按类型筛选（故事/小说/新闻/学习） |

### 二、播放体验优化

| 功能 | 优先级 | 说明 |
|------|--------|------|
| ⏰ 定时关闭 | P1 | 睡眠定时、15/30/60分钟自动停止 |
| 🎚️ 播放速度 | P1 | 0.5x-2x速听，记忆用户偏好 |
| 🔊 音质选择 | P2 | 高/标准音质切换 |
| 🎵 AI音色库 | P2 | 多种AI主播声音可选 |

### 三、数据同步

| 功能 | 优先级 | 说明 |
|------|--------|------|
| 📊 播放记录 | P1 | 记录播放进度，支持续播 |
| ⭐ 收藏夹 | P1 | 收藏喜欢的音频 |
| 💾 离线缓存 | P2 | 下载到本地离线听 |

### 四、社交与分享

| 功能 | 优先级 | 说明 |
|------|--------|------|
| 📤 分享功能 | P1 | 分享给微信好友/朋友圈 |
| 💬 评论打分 | P2 | 对内容评论评分 |
| 🔔 消息通知 | P3 | 新内容推送、会员优惠 |


### 六、技术优化

| 功能 | 优先级 | 说明 |
|------|--------|------|
| ⚡ 加载优化 | P1 | 骨架屏、缓存优化 |
| 📡 断点续传 | P2 | 大文件下载断点续传 |
| 🔄 数据同步 | P2 | 多端数据实时同步 |

---

### 第二期页面规划

新增页面：

```
pages/
├── search/          # 搜索页面
│   └── index.vue
├── favorites/        # 收藏页面
│   └── index.vue
└── settings/         # 设置页面
    └── index.vue
```

修改页面：

```
pages/
├── index/           # 首页增加分类、推荐
├── player/          # 播放器增加定时、速度、音质
├── history/        # 增加搜索、收藏入口
└── mine/           # 增加设置、收藏入口
```

### 第二期实施顺序

**第一阶段（P1 - 核心体验）**
1. 播放记录 + 续播
2. 收藏功能
3. 定时关闭
4. 播放速度记忆
5. 分享功能

**第二阶段（P2 - 丰富功能）**
6. 全局搜索
7. 内容分类

9. 音质选择
10. 离线缓存

**第三阶段（P3 - 完善优化）**
11. 评论打分
12. 消息通知
13. 个性化主题

---

## Agent Extensions

### Skill

- **skill-creator**: 用于创建项目开发规范skill,确保代码风格统一
- **self-improvement**: 开发过程中记录错误和改进点,持续优化代码质量

### Integration

- **阿里云ECS**: 部署后端服务
- **阿里云OSS**: 音频文件存储与CDN加速

### SubAgent

- **code-explorer**: 探索生成的代码结构,确保模块划分合理
