基于微软神经网络语音的文本转语音工具,支持文生音 (TTS) 和 音生文 (STT) 双功能。
- 输入文字,选择声音、风格、语速、音调,生成自然朗读语音
- 支持 17 种中文声音(晓晓、云希、云扬等),覆盖普通话、台湾国语、粤语
- 多种风格:通用、欢快、愤怒、悲伤、温柔、抒情、新闻播报等
- 语速 0.5x ~ 3.0x,音调 -30Hz ~ +30Hz 可调
- 生成后可直接播放、下载 MP3、复制文本
- 快捷键
Ctrl + Enter快速生成
- 上传音频文件,自动转写为文字
- 支持拖拽或点击上传
- 支持格式:mp3 / wav / m4a / ogg / webm / flac / aac / opus
- 转写结果可复制、清除
确保已安装 Docker Desktop,然后在项目目录下执行:
docker compose up -d浏览器打开 http://localhost:8020
常用命令:
docker compose up -d # 启动(后台运行)
docker compose down # 停止
docker compose logs -f # 查看日志
docker compose build --no-cache # 重新构建镜像音频文件和历史记录通过 Docker volume 持久化,删除容器不会丢失数据。
环境要求
- Python 3.9+
- 依赖见
requirements.txt
pip install -r requirements.txt
python main.py浏览器打开 http://localhost:8020
GET /api/health
响应示例:
{"status":"ok","time":"2026-06-03T15:00:00.000000"}GET /api/voices
返回 17 种声音及其支持风格
POST /api/tts
Content-Type: application/json
请求体:
{
"text": "欢迎使用AI TTS增强版",
"voice": "zh-CN-XiaoxiaoNeural",
"speed": 1.0,
"pitch": "0",
"style": "general"
}| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| text | string | 是 | - | 要合成的文本,1~3000 字符 |
| voice | string | 否 | zh-CN-XiaoxiaoNeural | 声音 ID |
| speed | float | 否 | 1.0 | 语速 0.5~3.0 |
| pitch | string | 否 | "0" | 音调 Hz,如 "-10" / "+5" |
| style | string | 否 | general | 风格,取决于所选声音 |
响应示例:
{
"id": "a9de1e9fc1c4",
"url": "/api/audio/a9de1e9fc1c4_481225.mp3",
"filename": "a9de1e9fc1c4_481225.mp3",
"text": "欢迎使用AI TTS增强版",
"voice": "zh-CN-XiaoxiaoNeural",
"voice_name": "晓晓",
"speed": 1.0,
"pitch": "0",
"style": "general",
"size": 45072,
"created_at": "2026-06-03 15:01:10"
}GET /api/audio/{filename}
返回 MP3 音频文件流,Content-Disposition: attachment 可触发下载。
POST /api/transcribe
Content-Type: multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | file | 是 | 音频文件 |
curl --location 'http://localhost:8020/api/transcribe' \
--form 'file=@"/path/to/audio.mp3"'响应:返回转写结果 JSON(包含 text 字段)
GET /api/history?page=1&limit=20 # 分页获取
GET /api/history/{id} # 获取单条详情
DELETE /api/history/{id} # 删除单条
DELETE /api/history # 清空全部
| ID | 名称 | 性别 | 风格 |
|---|---|---|---|
| zh-CN-XiaoxiaoNeural | 晓晓 | 女 | general, cheerful, angry, sad, fearful, gentle, lyrical |
| zh-CN-YunxiNeural | 云希 | 男 | general, chat, newscast, narration, customerservice |
| zh-CN-YunyangNeural | 云扬 | 男 | general, newscast, customerservice |
| zh-CN-XiaoyiNeural | 晓伊 | 女 | general, cheerful, gentle |
| zh-CN-YunjianNeural | 云健 | 男 | general |
| zh-CN-XiaochenNeural | 晓晨 | 女 | general |
| zh-CN-XiaohanNeural | 晓涵 | 女 | general |
| zh-CN-XiaomengNeural | 晓梦 | 女 | general |
| zh-CN-XiaoxuanNeural | 晓萱 | 女 | general |
| zh-CN-XiaoruiNeural | 晓瑞 | 女 | general |
| zh-CN-YunfengNeural | 云枫 | 男 | general |
| zh-CN-YunyeNeural | 云野 | 男 | general |
| zh-CN-YunhaoNeural | 云皓 | 男 | general |
| zh-TW-HsiaoChenNeural | 晓臻 | 女 | general |
| zh-TW-YunJheNeural | 云哲 | 男 | general |
| zh-HK-HiuGaaiNeural | 晓佳 | 女 | general |
| zh-HK-WanLungNeural | 云龙 | 男 | general |
- 后端:Python FastAPI + aiohttp
- 前端:原生 HTML/CSS/JS,暗色主题
- TTS API:
https://g12.geekaiapp.top/v1/audio/speech - STT API:
https://g12.geekaiapp.top/v1/audio/transcriptions - 存储:音频
static/audio/,历史记录data/history.json
- 🐳 支持 Docker Desktop 部署,添加
Dockerfile、docker-compose.yml、.dockerignore - 📦 历史记录迁移至
data/目录,支持 Docker volume 持久化 - 📝 更新 README 添加 Docker 部署说明
- 🎤 新增音生文 (STT) 功能:上传音频文件自动转写为文字
- 📑 添加文生音 / 音生文选项卡切换
- 🎨 拖拽上传区域,支持多种音频格式
- 🔧 修复下载 MP3 按钮:改用 fetch + Blob 方式确保可靠下载
- 🔧 修复音频接口响应头:添加
Content-Disposition: attachment - 🔧 修复历史记录乱码:清理损坏的 history.json 条目
- 🔧 修复 Cloudflare 缓存导致 JS 旧版本被加载的问题,添加文件版本号
- ✨ 全新 UI:暗色主题,响应式布局
- 🎙️ 支持 17 种中文神经网络语音
- 🎛️ 风格选择、语速/音调滑块调节
- 📝 历史记录分页、点击回放、删除管理
- ⌨️ 快捷键
Ctrl + Enter快速生成 - 🎯 智能内容检测:点歌/音乐请求自动提示
- ✅ 健康状态实时检测