Skip to content

Repository files navigation

DashScope Audio

基于阿里云百炼 DashScope 的语音处理平台,提供语音转文字、文字转语音、声音克隆和字幕生成等功能。

版本 Python FastAPI

功能特性

语音转文字 (ASR)

  • 实时语音识别:边说边识别,支持 WebSocket 实时传输,低延迟响应
  • 录音文件识别:上传音频文件进行异步转写,支持轮询查询结果
  • 多模型支持
    • Qwen3-ASR-Flash:千问3实时/文件识别,支持多语种高精度识别和情感识别
    • Fun-ASR:支持中文普通话、方言及英文识别,含歌唱识别功能
    • Paraformer-V2:支持多语种及多种方言识别

文字转语音 (TTS)

  • 预设音色合成:使用系统内置音色快速合成语音
  • 自定义音色合成:使用克隆的自定义音色进行语音合成
  • 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 配置(字幕生成和声音克隆需要)

安装

  1. 克隆项目
git clone <repository-url>
cd dash-audio
  1. 安装依赖
uv sync
  1. 配置环境变量
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 界面。

API 文档

启动服务后访问:

主要 API 端点

端点 方法 说明
/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

支持的模型

实时语音识别 (WebSocket)

模型 说明 推荐场景
qwen3-asr-flash-realtime 千问3 ASR Flash,支持多语种高精度识别和情感识别 实时会议、直播字幕
fun-asr-realtime Fun-ASR 稳定版,16kHz采样率,支持中文普通话、方言及英文识别 通用实时识别

录音文件识别

模型 说明 推荐场景
qwen3-asr-flash-filetrans 支持最长12小时录音,情感识别,字级别时间戳 长音频、播客、访谈
fun-asr 支持歌唱识别,适合会议/直播场景 会议记录、音乐识别
paraformer-v2 支持多语种及多种方言 多语种内容、方言识别

语音合成 (TTS)

模型 说明
cosyvoice-v1 CosyVoice 基础模型,高质量语音合成
cosyvoice-v2 CosyVoice V2 版本,支持更多音色

使用说明

1. 语音转文字

实时识别

  1. 选择识别模式为"实时识别"
  2. 选择模型(推荐 qwen3-asr-flash-realtime)
  3. 点击"开始"按钮,授权麦克风访问
  4. 开始说话,实时查看识别结果

文件识别

  1. 选择识别模式为"录音后识别"
  2. 上传音频文件(支持 mp3/wav/m4a/ogg/aac/flac/webm)
  3. 提交任务后等待处理完成

2. 文字转语音

  1. 选择音色(预设或自定义)
  2. 输入要合成的文本
  3. 点击"合成语音"
  4. 播放或下载生成的音频

3. 声音克隆

  1. 准备 10 秒左右的清晰人声录音
  2. 上传参考音频并设置音色名称
  3. 等待音色训练完成(通常几分钟)
  4. 在 TTS 中选择该音色进行合成

4. 字幕生成

  1. 上传音频文件(支持 mp3/wav/m4a/ogg/aac/flac/webm)
  2. (可选)上传参考文案文本文件(.txt,每行对应一条字幕)
  3. 可选启用说话人分离并设置说话人名称
  4. 点击"开始生成字幕",Fun-ASR 自动转写并生成 SRT
  5. 预览并下载 SRT 字幕文件

字幕生成功能需要配置 OSS 环境变量,用于上传音频文件。

注意事项

  • DashScope API Key 是必填项,需要在阿里云控制台获取
  • OSS 配置 是字幕生成和声音克隆功能的必备项,用于上传文件
  • 实时语音识别需要浏览器支持 Web Audio API 和 WebSocket
  • 音频文件转写支持的最大文件大小为 100MB
  • 建议使用 Chrome、Edge、Firefox 等现代浏览器

许可证

MIT License

About

集语音识别、语音合成、声音克隆和字幕生成为一体的工具——Voice Studio

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages