- 去掉 books/chapters CRUD、SQLAlchemy、SQLite 依赖 - 核心只剩 /api/tts + 智能分段 + 自动重试 - 新增 API_TOKEN 环境变量,管理接口 Bearer Token 鉴权 - 管理接口精简为 preview + config - 前端重写:TTS 试听 + 配置查看 + 接口文档 - Dockerfile/docker-compose 清理,去掉数据库卷
98 lines
2.6 KiB
Markdown
98 lines
2.6 KiB
Markdown
# 🎙️ TTS Proxy Service
|
||
|
||
小米 MiMo TTS 音频转换代理服务,提供实时 TTS 接口和 Web 管理界面。
|
||
|
||
## 架构
|
||
|
||
```
|
||
听书 App / curl ──HTTP──▶ 本服务 ──API──▶ 小米 MiMo TTS
|
||
│
|
||
├── 智能文本分段(>2000字自动切分拼接)
|
||
├── TTS 自动重试(5xx 错误最多重试 3 次)
|
||
└── MP3 缓存
|
||
```
|
||
|
||
## 快速启动
|
||
|
||
```bash
|
||
# 1. 配置 API Key
|
||
cp .env.example .env
|
||
# 编辑 .env 填入 MIMO_API_KEY
|
||
|
||
# 2. 启动
|
||
docker compose up -d
|
||
|
||
# 3. 访问
|
||
# 管理界面: http://your-server:3333
|
||
# TTS 接口: http://your-server:3333/api/tts
|
||
```
|
||
|
||
## 核心功能
|
||
|
||
### POST `/api/tts` — 实时 TTS
|
||
|
||
文本进 → MP3 出。支持 JSON 和 Form 两种格式,长文本自动分段拼接。
|
||
|
||
```bash
|
||
# JSON 格式
|
||
curl -X POST http://localhost:3333/api/tts \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"text": "你好世界", "style": "开心", "voice": ""}' \
|
||
-o output.mp3
|
||
|
||
# Form 格式(百度兼容)
|
||
curl -X POST http://localhost:3333/api/tts \
|
||
-d "tex=你好世界" \
|
||
-o output.mp3
|
||
```
|
||
|
||
### GET `/health` — 健康检查
|
||
|
||
### 管理接口(需 Bearer Token)
|
||
|
||
| 接口 | 方法 | 说明 |
|
||
|------|------|------|
|
||
| `/admin/api/preview` | POST | TTS 试听,返回音频 URL |
|
||
| `/admin/api/config` | GET | 查看当前配置 |
|
||
|
||
## 接入听书 App
|
||
|
||
在 App 中配置 TTS 音频源:
|
||
|
||
- **URL**: `http://your-server:3333/api/tts`
|
||
- **Method**: POST
|
||
- **Body**: `{"text": "{{speakText}}"}`
|
||
- **Content-Type**: `audio/mpeg`
|
||
|
||
App 模板变量:`{{speakText}}`(文本)、`{{speakSpeed}}`(语速 5-50)
|
||
|
||
> App 只能动态传文本。voice/style 需在 JSON body 中写死,或通过其他客户端调用时传入。
|
||
|
||
## 环境变量
|
||
|
||
| 变量 | 必填 | 默认值 | 说明 |
|
||
|------|------|--------|------|
|
||
| `MIMO_API_KEY` | ✅ | - | MiMo TTS API Key |
|
||
| `MIMO_API_ENDPOINT` | ❌ | `https://api.xiaomimimo.com/v1/chat/completions` | API 地址 |
|
||
| `MIMO_TTS_MODEL` | ❌ | `mimo-v2-audio-tts` | 模型名称 |
|
||
| `MIMO_VOICE` | ❌ | `mimo_default` | 默认音色 |
|
||
| `API_TOKEN` | ❌ | - | 管理接口 Bearer Token(留空则不鉴权) |
|
||
|
||
## MiMo TTS 风格参考
|
||
|
||
| 类别 | 示例 |
|
||
|------|------|
|
||
| 情感 | 开心 / 悲伤 / 生气 / 平静 |
|
||
| 语速 | 语速慢 / 语速快 / 悄悄话 |
|
||
| 角色 | 像个大将军 / 像个小孩 / 孙悟空 |
|
||
| 方言 | 东北话 / 四川话 / 台湾腔 / 粤语 |
|
||
|
||
## 不使用 Docker
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
# 系统需安装 ffmpeg
|
||
export MIMO_API_KEY=your_key
|
||
cd app && python main.py
|
||
```
|