Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

yeahhe365/ASR-Studio

Repository files navigation

ASR Studio

中文 | English

一个功能丰富的网页应用,旨在为 Qwen、豆包、Gemini、NVIDIA NIM 以及 OpenAI、Groq、Deepgram、AssemblyAI、ElevenLabs、Mistral、Fireworks 等主流 ASR / 多模态语音模型提供一个强大、高效且用户友好的操作界面。无论您是需要转录会议记录、整理语音内容,还是进行任何形式的语音转文本工作,本工具都能为您提供流畅的体验。

➡️ 访问在线应用(历史部署域名)


📸 应用截图

image image

✨ 主要功能

  • 多种音频输入方式:

    • 文件上传: 支持拖拽或点击选择多种常见音频格式(WAV, MP3, FLAC, M4A 等)。
    • 批量队列: 可一次选择多个音频,逐个识别并显示每个文件的处理状态。
    • 实时录音: 直接从麦克风录制音频,并带有实时音波可视化效果。
    • 远程 URL: 豆包录音文件识别标准版 2.0 支持公网音频 URL;其他 Provider 会提示改用本地文件。
  • 高效的转录核心:

    • 多厂商 ASR 驱动: 支持 Qwen 官方 ASR API、豆包录音文件识别标准版 2.0、Gemini 音频理解接口、NVIDIA NIM,以及主流模型库(OpenAI GPT-4o/Whisper、Groq Whisper、Deepgram Nova-3、AssemblyAI Universal、ElevenLabs Scribe、Mistral Voxtral、Fireworks Whisper)。
    • 上下文提示: 可通过提供特定术语、人名或专业词汇作为上下文,显著提升识别的准确率。
    • 多语言支持: 支持中文、英语、日语等多种语言的识别,并能自动检测语种。
    • 反向文本标准化 (ITN): 可选功能,能将"一月五号"这样的口语化表达转换为"1月5日"等书面形式。
  • 优化的用户体验:

    • 一键录音 (按住说话): 在非输入状态下,按住空格键即可开始录音,松开后自动停止并开始识别,操作如对讲机般便捷。
    • 音频预处理: 在浏览器内支持压缩、首尾静音裁剪、长音频切片与 Provider 兼容格式转换。
    • 音频检查: 内置波形预览、倍速播放、循环、静音、快进快退、剪辑保存与下载。
  • 强大的工作流与生产力工具:

    • Benchmark 模型测试台: 支持导入 CSV / JSONL 题库 manifest,匹配本地音频或远程音频 URL,选择多个模型后一键运行"模型 ×ばつ 样本"矩阵评测。
    • 长期实验管理: Benchmark 每次完成后会保存到 IndexedDB,记录题库版本、模型配置、评分 profile、运行控制、结果矩阵、排行榜、错误热力图与数据集质量检查,并支持历史实验载入、删除和两次实验对比。
    • 公开题库目录与评分档: 内置 LibriSpeech、AISHELL-1、FLEURS、Common Voice、Earnings-22、AMI、CHiME manifest 模板和下载/许可信息;提供 OpenASR-compatible、中文 CER 优先、标点敏感、ITN 敏感、关键词/术语测试等评分 profile。
    • 标准化评测指标: Benchmark 结果包含 WER、CER、S/D/I 错误统计、延迟、RTF、成本估算、关键词召回、人名准确率、领域术语准确率、流式诊断、时间戳质量与说话人分离指标。
    • 排行榜与错误分析: 按模型聚合平均 WER/CER、P50/P95 延迟、失败率与成本,并按语言、domain、噪声、说话人、口音、标签、长短音频等题库维度拆分;提供错误热力图、bootstrap 显著性比较和模型能力雷达。
    • 鲁棒性与回归: 浏览器端可生成加噪、混响、变速、音量、压缩失真、电话带宽、背景音乐扰动样本;支持并发数、速率限制、失败重试、预算上限、暂停/恢复和本地定时回归计划。
    • 报告与人工复核: 支持一键导出 JSON / Markdown / HTML Benchmark 报告,并可在单条 diff 中保存人工修正 reference、错误类型和复核备注。
    • 可复现实验快照: 每条 Benchmark 结果记录 Provider 配置快照、模型版本、上下文、语言、ITN、预处理参数、音频 hash / 来源与缓存 key。
    • 可编辑转写结果: 支持文本/分段视图、搜索匹配、修改后回存历史记录。
    • 多格式导出: 单条结果可导出 TXT、Markdown、JSON、SRT、VTT;历史记录可导出 JSON 或 Markdown。
    • 历史记录: 自动保存每一次的转录结果,支持搜索、Provider/语言筛选、批量删除、批量导出、JSON 导入与恢复。
    • 智能缓存: 所有转录结果、历史记录和设置均存储在用户本地浏览器(IndexedDB)中,保护隐私的同时,也避免了对同一文件的重复识别,节约时间。
    • 自动复制: 可开启"自动复制"功能,在识别完成后立即将结果复制到剪贴板。
  • 个性化设置:

    • 浅色/深色主题: 支持明暗两种主题,适应不同光线环境和个人偏好。
    • Provider 诊断: 设置页可检查当前 Provider 的凭据、输入限制与浏览器调用条件。
    • 本地数据管理: 可查看存储估算、清除识别缓存、清除最近录音、恢复默认设置。
    • 设置持久化: 所有个性化配置(如主题、自动复制、上下文等)都会被自动保存在本地。

🛠️ 技术栈

  • 前端框架: React + TypeScript
  • UI 样式: Tailwind CSS
  • ASR 接口: Qwen 官方 OpenAI 兼容接口(qwen3-asr-flash)、豆包录音文件识别标准版 2.0(bigmodel)、Gemini API(gemini-3.5-flash)、NVIDIA NIM(whisper-large-v3)、主流 ASR 模型库(OpenAI-compatible /audio/transcriptions + Deepgram / AssemblyAI / ElevenLabs 原生 REST API)
  • 客户端技术:
    • Web Audio API: 用于音频录制、处理和可视化。
    • WaveSurfer.js: 用于音频波形预览、播放控制和片段剪辑。
    • IndexedDB: 用于在浏览器端持久化存储历史记录、缓存和用户设置。

🚀 本地开发

如果您希望在本地运行或参与开发,请遵循以下步骤:

环境要求:

  • Node.js (建议使用 v18 或更高版本)
  • npm (随 Node.js 提供),或 pnpm/yarn

步骤:

  1. 克隆仓库

    git clone https://github.com/yeahhe365/ASR-Studio.git
    cd ASR-Studio
  2. 进入前端项目并安装依赖

    cd asr-studio
    npm install
    # 或者使用 pnpm/yarn
    # pnpm install
  3. 启动开发服务器

    npm run dev
    # 或者使用 pnpm/yarn
    # pnpm dev
  4. 在浏览器中打开 https://localhost:5173 (或命令行提示的地址)。

    开发服务器会监听 0.0.0.0:5173 并启用本地 HTTPS 证书。需要在同一局域网内用手机或其他电脑测试录音时,打开 https://本机IP:5173,首次访问按浏览器提示信任开发证书即可使用麦克风录音权限。

🐳 Docker 部署

项目根目录已经提供 Dockerfiledocker-compose.yml,会先构建 Vite 前端产物,再用 Nginx 托管静态文件。

使用 Docker Compose:

docker compose up -d --build

启动后访问:

http://localhost:8081

直接使用 Docker:

docker build -t asr-studio .
docker run -d --name asr-studio -p 8081:80 asr-studio

容器内置健康检查:

GET /healthz

📁 项目结构

.
├── asr-studio/ # Vite + React 前端应用
│ ├── components/ # 可复用 React 组件与图标
│ ├── services/ # ASR、音频处理、IndexedDB 缓存服务
│ ├── App.tsx # 主应用组件
│ └── package.json # 前端依赖与脚本
├── deploy-compat/ # 部署兼容入口,镜像前端构建产物
├── Dockerfile # 多阶段 Docker 构建
├── docker-compose.yml # Docker Compose 部署入口
├── README.md # 中文说明
└── README.en.md # English documentation

应用直接调用已配置的 ASR 厂商 API,无需维护额外的示例后端服务。

🔐 Provider 使用说明

  • Qwen / Gemini: 使用浏览器内联音频请求,文件过大时请先压缩、裁剪或切片。
  • 豆包标准版 2.0: 本地文件和录音会按 audio.data 提交;也可使用公网可访问的音频 URL。
  • NVIDIA NIM: NVIDIA 托管 Whisper Large v3 是 gRPC/Riva 服务,浏览器不能直接调用;请填写自托管 NIM 容器或后端代理的 HTTP Base URL。
  • 主流模型库: 在设置中选择具体模型并填写对应厂商 API Key;Base URL 留空使用官方端点,填写后可走兼容代理或自托管网关。远程 URL 当前支持豆包和 AssemblyAI,其他主流模型使用本地文件上传。

✅ 开发验证

cd asr-studio
npm run typecheck
npm test
npm run build

🤝 如何贡献

我们非常欢迎各种形式的贡献!如果您有任何建议、发现 Bug 或希望添加新功能,请:

  1. Fork 本仓库。
  2. 创建一个新的分支 (git checkout -b feature/YourAmazingFeature)。
  3. 提交您的更改 (git commit -m 'Add some AmazingFeature')。
  4. 将您的分支推送到远程仓库 (git push origin feature/YourAmazingFeature)。
  5. 提交一个 Pull Request

📜 开源许可

本项目采用 MIT License 开源许可。

🙏 致谢

  • 感谢阿里云通义千问团队、火山引擎与 Google Gemini 团队提供了出色的语音与多模态能力。
  • 感谢 React 和所有开源社区的贡献者。

友链

  • Linux.do:也称 L 站,是一个活跃的中文技术社区,围绕 AI、软件开发、资源分享与前沿资讯展开讨论;社区愿景是"新的理想型社区",社区文化是"真诚、友善、团结、专业,共建你我引以为荣之社区"。

About

A modern web UI for the Qwen ASR model, featuring audio recording, PWA support, Picture-in-Picture mode, and local caching for fast, accurate transcriptions.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /