基于阿里云百炼 DashScope 的语音处理平台,提供语音转文字、文字转语音、声音克隆和字幕生成等功能。
- 实时语音识别:边说边识别,支持 WebSocket 实时传输,低延迟响应
- 录音文件识别:上传音频文件进行异步转写,支持轮询查询结果
- 多模型支持:
- Qwen3-ASR-Flash:千问3实时/文件识别,支持多语种高精度识别和情感识别
- Fun-ASR:支持中文普通话、方言及英文识别,含歌唱识别功能
- Paraformer-V2:支持多语种及多种方言识别
- 预设音色合成:使用系统内置音色快速合成语音
- 自定义音色合成:使用克隆的自定义音色进行语音合成
- CosyVoice 模型:基于阿里云 CosyVoice 高质量语音合成
- 音色创建:上传参考音频(10秒左右)克隆自定义音色
- 音色管理:查询、更新、删除自定义音色
- 状态轮询:自动轮询音色训练状态,实时反馈训练进度
- 音色列表:分页查询所有已创建的音色
- Fun-ASR 转写:基于 DashScope Fun-ASR 异步转写,自动生成带时间戳字幕
- 文本匹配分段:可选上传参考文案,通过字符级匹配获得更精准的分段
- 说话人分离:可选启用说话人分离,区分并标记不同说话人
- SRT 格式:生成标准 SRT 字幕文件,兼容主流播放器
- 实时预览:在线预览字幕效果,确认后下载
- 后端: FastAPI + Python 3.12+
- 前端: 原生 JavaScript + Tailwind CSS
- AI 服务: 阿里云 DashScope (Qwen ASR / Fun-ASR / CosyVoice)
- 文件存储: 阿里云 OSS
- Python >= 3.12
- uv 包管理器
- 阿里云账号及 DashScope API Key
- 阿里云 OSS 配置(字幕生成和声音克隆需要)
- 克隆项目
git clone <repository-url>
cd dash-audio- 安装依赖
uv sync- 配置环境变量
cp .env.example .env编辑 .env 文件,填入以下配置:
# DashScope API Key (必填)
DASHSCOPE_API_KEY=your_dashscope_api_key
# 阿里云 OSS 配置 (用于文件上传: 字幕生成、声音克隆)
OSS_ENDPOINT=your_oss_endpoint
OSS_REGION=your_oss_region
OSS_BUCKET=your_oss_bucket
OSS_ACCESS_KEY_ID=your_oss_access_key_id
OSS_ACCESS_KEY_SECRET=your_oss_access_key_secret
# 服务器配置
HOST=127.0.0.1
PORT=8000
ALLOWED_ORIGINS=*# 使用 uv 运行
uv run python -m app.main
# 或使用项目脚本
uv run dash-audio服务启动后,访问 http://127.0.0.1:8000 即可使用 Web 界面。
启动服务后访问:
- Swagger UI: http://127.0.0.1:8000/docs
- ReDoc: http://127.0.0.1:8000/redoc
| 端点 | 方法 | 说明 |
|---|---|---|
/api/health |
GET | 健康检查 |
/api/models |
GET | 获取可用模型列表 |
/api/asr/audio-to-text/ |
POST | 音频URL转文字 |
/api/transcription/submit |
POST | 提交文件转写任务 |
/api/transcription/query/{task_id} |
GET | 查询转写任务状态 |
/api/tts/basic-synthesis/ |
POST | 基础文本转语音 |
/api/tts/custom-voice-synthesis/ |
POST | 自定义音色语音合成 |
/api/voice-enroll/ |
POST | 创建自定义音色 |
/api/voice-enroll/ |
GET | 查询音色列表 |
/api/voice-enroll/{voice_id} |
GET | 查询音色详情 |
/api/voice-enroll/{voice_id}/poll-status |
GET | 轮询音色状态 |
/api/voice-enroll/{voice_id} |
PUT | 更新音色 |
/api/voice-enroll/{voice_id} |
DELETE | 删除音色 |
/api/subtitle/align |
POST | Fun-ASR 异步转写生成字幕 |
/ws/asr |
WebSocket | 实时语音识别 |
dash-audio/
├── app/
│ ├── routers/ # API 路由
│ │ ├── asr.py # 语音识别 REST API
│ │ ├── ws_asr.py # 语音识别 WebSocket
│ │ ├── tts.py # 语音合成
│ │ ├── voice_enroll.py # 声音克隆
│ │ ├── subtitle.py # 字幕生成
│ │ └── upload.py # 文件上传
│ ├── services/ # 业务逻辑
│ │ ├── dashscope_ws.py # DashScope WebSocket 客户端
│ │ ├── file_transcription.py # 文件转写服务
│ │ ├── funasr_service.py # Fun-ASR 异步转写服务
│ │ ├── oss_service.py # OSS 上传服务
│ │ └── srt_generator.py # SRT 字幕生成
│ ├── config.py # 配置管理
│ ├── main.py # 应用入口
│ ├── models.py # 数据模型
│ └── utils.py # 工具函数
├── static/ # 前端静态文件
│ ├── index.html
│ ├── favicon.svg # 网站图标
│ ├── css/
│ │ └── custom.css
│ └── js/ # JavaScript 模块
│ ├── main.js
│ ├── audio.js
│ ├── websocket.js
│ ├── tts.js
│ ├── voice-clone.js
│ ├── subtitle.js
│ └── ...
├── files/ # 生成文件目录 (TTS输出、字幕文件)
├── uploads/ # 上传文件目录
├── pyproject.toml # 项目配置
├── .env.example # 环境变量示例
└── README.md
| 模型 | 说明 | 推荐场景 |
|---|---|---|
qwen3-asr-flash-realtime |
千问3 ASR Flash,支持多语种高精度识别和情感识别 | 实时会议、直播字幕 |
fun-asr-realtime |
Fun-ASR 稳定版,16kHz采样率,支持中文普通话、方言及英文识别 | 通用实时识别 |
| 模型 | 说明 | 推荐场景 |
|---|---|---|
qwen3-asr-flash-filetrans |
支持最长12小时录音,情感识别,字级别时间戳 | 长音频、播客、访谈 |
fun-asr |
支持歌唱识别,适合会议/直播场景 | 会议记录、音乐识别 |
paraformer-v2 |
支持多语种及多种方言 | 多语种内容、方言识别 |
| 模型 | 说明 |
|---|---|
cosyvoice-v1 |
CosyVoice 基础模型,高质量语音合成 |
cosyvoice-v2 |
CosyVoice V2 版本,支持更多音色 |
实时识别:
- 选择识别模式为"实时识别"
- 选择模型(推荐 qwen3-asr-flash-realtime)
- 点击"开始"按钮,授权麦克风访问
- 开始说话,实时查看识别结果
文件识别:
- 选择识别模式为"录音后识别"
- 上传音频文件(支持 mp3/wav/m4a/ogg/aac/flac/webm)
- 提交任务后等待处理完成
- 选择音色(预设或自定义)
- 输入要合成的文本
- 点击"合成语音"
- 播放或下载生成的音频
- 准备 10 秒左右的清晰人声录音
- 上传参考音频并设置音色名称
- 等待音色训练完成(通常几分钟)
- 在 TTS 中选择该音色进行合成
- 上传音频文件(支持 mp3/wav/m4a/ogg/aac/flac/webm)
- (可选)上传参考文案文本文件(.txt,每行对应一条字幕)
- 可选启用说话人分离并设置说话人名称
- 点击"开始生成字幕",Fun-ASR 自动转写并生成 SRT
- 预览并下载 SRT 字幕文件
字幕生成功能需要配置 OSS 环境变量,用于上传音频文件。
- DashScope API Key 是必填项,需要在阿里云控制台获取
- OSS 配置 是字幕生成和声音克隆功能的必备项,用于上传文件
- 实时语音识别需要浏览器支持 Web Audio API 和 WebSocket
- 音频文件转写支持的最大文件大小为 100MB
- 建议使用 Chrome、Edge、Firefox 等现代浏览器
MIT License