资讯详情

subtitle-asr-lib:一行代码,让音频变字幕——纯 Rust 跨云语音识别工具库

📅 2026/9/12 19:51:21 | 华诺云谱 👁 阅读
subtitle-asr-lib:一行代码,让音频变字幕——纯 Rust 跨云语音识别工具库
subtitle-asr-lib一行代码让音频变字幕——纯 Rust 跨云语音识别工具库 项目地址AtomGithttps://atomgit.com/uksri/subtitle-asr-lib crates.iohttps://crates.io/crates/subtitle-asr-libcargo add subtitle-asr-lib API 文档https://docs.rs/subtitle-asr-lib一、项目是做什么的subtitle-asr-lib是一个纯 Rust 编写的跨云字幕识别工具库输入一段音频公网 URL 或本地文件输出带时间戳的字幕文件SRT / WebVTT / ASS。它解决的是一个非常实际的痛点——音频转字幕这件看似简单的事直接对接云厂商 API 会踩一堆坑痛点不用本库用本库厂商锁定深度绑定某家 SDK换厂商等于重写只依赖AsrProvidertrait换 provider 改一行API 差异地狱同一厂商三个模型三套字段差异封在 provider 内部用户无感字幕格式转换SRT/VTT/ASS 三种时间戳规范极易写错三种 Formatter 全实现 单测覆盖可靠性代码429 限流、5xx 重试、轮询、超时…每项目重写 200 行全部内置跨平台部署默认 native-tls 依赖系统 OpenSSL纯 Rust TLSrustls零系统依赖目前支持三家云厂商阿里云百炼DashScope、腾讯云录音文件识别、百度智能云音频文件转写当前版本v0.4.0已发布至 crates.io。一句话理解本项目在技术栈中的位置图 1本项目在技术栈中的位置二、整体架构库内部分层如下——你只需要面对最上层的一套 API下面的厂商差异全部被封装图 2subtitle-asr-lib 内部分层架构对应的目录结构用户代码 → lib.rs公开 API → provider/AsrProvider trait 统一抽象 → aliyun/阿里云提交 → 轮询 → 下载含本地文件上传 → tencent/腾讯云TC3-HMAC-SHA256 签名 轮询 → baidu/百度云OAuth token 缓存 轮询 → subtitle/格式化器SRT / VTT / ASS → types.rs公共类型→ error.rs统一错误设计上的两条铁律厂商差异必须封在provider/vendor/内部——腾讯云的签名算法、百度云的 token 刷新、阿里云的 OSS 直传对用户全部不可见公开 API 只有一套TranscribeRequest/TranscriptionResult。核心库平台无关——全依赖栈纯 Rusttokio reqwest rustls serde无任何 C 库依赖因此HarmonyOS鸿蒙交叉编译天然可行仓库附有docs/harmonyos-quickstart.md指南与适配层骨架。质量保障37 个单元测试全绿、clippy 零警告、强制 rustfmt三家云厂商均通过真实 API 端到端集成测试验证。一次transcribe()调用背后库自动完成了这一切以阿里云为例——你写五行代码库替你跑完整个流程图 3transcribe() 转写全流程时序含自动轮询与重试三、使用教程新手跟做版整体只需 5 步预计 10 分钟跑通图 4新手教程五步路线第 1 步安装 Rust从 rustup.rs 安装Windows 下载 rustup-init.exe 运行要求 1.85。装完在终端验证rustc--version# 应显示 1.85 或更高第 2 步获取云厂商密钥任选一家都有免费额度跑通不花钱阿里云百炼控制台 创建 API Key并记下业务空间 IDWorkspace ID腾讯云API 密钥管理 新建密钥通用引擎16k_zh每月免费 10 小时百度智能云语音技术控制台 创建应用拿 API Key / Secret Key免费 10 小时第 3 步创建你的项目并添加依赖cargonew my-subtitle-democdmy-subtitle-democargoaddsubtitle-asr-libcargoaddtokio--featuresfull第 4 步写五行代码编辑src/main.rs以阿里云为例其他厂商只需换 Provider 和 Modelusesubtitle_asr_lib::{AliyunProvider,AsrProvider,Model,SrtFormatter,TranscribeRequest,};#[tokio::main]asyncfnmain()-Result(),Boxdynstd::error::Error{// 密钥直接用环境变量也可以用 with_config 传入letproviderAliyunProvider::from_env()?;letreqTranscribeRequest::builder().url(https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav).model(Model::AliyunFunAsr).build()?;letresultprovider.transcribe(req).await?;println!({},SrtFormatter::format(result));// 直接得到 SRT 字幕Ok(())}第 5 步配置密钥并运行# Linux/macOSexportDASHSCOPE_API_KEYsk-你的KeyexportWORKSPACE_IDllm-你的空间ID# Windows PowerShell$env:DASHSCOPE_API_KEYsk-你的Key$env:WORKSPACE_IDllm-你的空间IDcargorun几秒后你会看到输出1 00:00:00,760 -- 00:00:03,240 Hello world这里是阿里巴巴语音实验室。换 WebVTT 或 ASS 只需换 formatterVttFormatter::format(result)/AssFormatter::format(result)。本地文件也支持把.url(...)换成.file(D:/audio/test.wav)阿里云 provider 会自动上传后转写。更省事的方式GUI 工具零代码不想写代码仓库自带 Python 图形界面工具python examples/asr_gui.py界面里选音频、选模型、点开始直接导出 SRT / VTT / TXT命令行示例的运行效果cargorun--exampletranscribe_local四、支持的厂商与模型三家厂商在本库中的接入方式与特性一览图 5三家云厂商接入特性对比各厂商模型明细厂商模型免费额度阿里云百炼fun-asr默认/qwen3-asr-flash-filetrans/paraformer-v2有新用户开通即享腾讯云16k_zh_en_2.0大模型/16k_zh等 4 引擎16k_zh每月 10 小时百度智能云音视频字幕模型pid80006免费 10 小时三家均支持重试指数退避、429 限流退避、5xx 重试、300 秒轮询超时保护这些可靠性代码开箱即用。五、社区与贡献项目采用宽松的社区协作策略快速合并、合并后统一收口让每位贡献者尽快拿到正反馈。截至目前已合并14 个社区 PR——包括安全修复日志防 token 泄露、健壮性修复错误不再傻等超时、panic 改为错误返回、字幕多行文本规范化、Python GUI 工具等所有贡献者都在各版本 Release 中公开致谢。想参与贡献仓库根目录有完整的 CONTRIBUTING.md贡献流程 / 检查清单 / 架构铁律也欢迎直接提 Issue。六、加入玄武社区本项目已入驻开放原子开源基金会玄武社区——这里有丰富的开源活动、导师计划与项目孵化资源欢迎开发者加入一起学习与共建https://xuanwu.openatom.org如果你正在做音频处理、字幕工具、跨端 Rust 应用欢迎 Star / Fork / PRAtomGit 仓库https://atomgit.com/uksri/subtitle-asr-libLicenseMIT OR Apache-2.0 双许可证开源。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。