wordcab-transcribe

wordcab-transcribe

开源语音识别与说话人分离API

Wordcab Transcribe是一个基于FastAPI的开源语音识别API。它使用faster-whisper进行音频转录,自动调谐谱聚类技术实现说话人分离。该项目具有处理速度快、易于部署、支持批量请求等特点,可通过本地开发或Docker部署。API支持音频文件和YouTube视频的转录,适用于商业用途。

Wordcab Transcribe语音识别API音频转录faster-whisperGithub开源项目
<h1 align="center">Wordcab 转录</h1> <p align="center"><em>💬 语音识别现已成为一种商品</em></p> <div align="center"> <a href="https://github.com/Wordcab/wordcab-transcribe/releases" target="_blank"> <img src="https://img.shields.io/badge/release-v0.5.2-pink" /> </a> <a href="https://github.com/Wordcab/wordcab-transcribe/actions?workflow=Quality Checks" target="_blank"> <img src="https://yellow-cdn.veclightyear.com/87312a0a/1983f14c-5c9a-433a-8348-ba44a3300965.svg" /> </a> <a href="https://github.com/pypa/hatch" target="_blank"> <img src="https://yellow-cdn.veclightyear.com/87312a0a/d4d8e07a-b7fb-46ad-88be-87d93baac760.svg" /> </a> </div>

基于FastAPI的API,使用faster-whisper转录音频文件,并使用自动调谐谱聚类进行说话人分离(基于此GitHub实现)。

[!重要]
如果您想了解Wordcab-Transcribe与市面上所有可用ASR工具相比的出色性能,请查看我们的基准测试项目:Rate that ASR

主要特点

  • ⚡ 快速:faster-whisper库和CTranslate2使音频处理比其他实现快得多。
  • 🐳 易于部署:您可以使用Docker在工作站或云端部署项目。
  • 🔥 批量请求:API中实现了批量请求,您可以一次转录多个音频文件。
  • 💸 成本效益:作为开源解决方案,您无需支付昂贵的ASR平台费用。
  • 🫶 易用的API:只需几行代码,您就可以使用API转录音频文件甚至YouTube视频。
  • 🤗 MIT许可:您可以无限制地将项目用于商业目的。

要求

本地开发

  • Linux(在Ubuntu Server 20.04/22.04上测试过)
  • Python >=3.8, <3.12
  • Hatch
  • FFmpeg

在本地运行API 🚀

hatch run runtime:launch

部署

使用Docker运行API

构建镜像。

docker build -t wordcab-transcribe:latest .

运行容器。

docker run -d --name wordcab-transcribe \ --gpus all \ --shm-size 1g \ --restart unless-stopped \ -p 5001:5001 \ -v ~/.cache:/root/.cache \ wordcab-transcribe:latest

您可以将卷挂载到容器中以加载本地whisper模型。 如果挂载卷,需要更新.env文件中的WHISPER_MODEL环境变量。

docker run -d --name wordcab-transcribe \ --gpus all \ --shm-size 1g \ --restart unless-stopped \ -p 5001:5001 \ -v ~/.cache:/root/.cache \ -v /path/to/whisper/models:/app/whisper/models \ wordcab-transcribe:latest

您可以使用以下命令简单地进入容器:

docker exec -it wordcab-transcribe /bin/bash

这对检查一切是否按预期工作很有用。

在反向代理后运行API

您可以在Nginx等反向代理后运行API。我们已包含nginx.conf文件以帮助您开始。

# 创建docker网络并将api容器连接到该网络 docker network create transcribe docker network connect transcribe wordcab-transcribe # 将/absolute/path/to/nginx.conf替换为您机器上nginx.conf文件的绝对路径 # (例如/home/user/wordcab-transcribe/nginx.conf)。 docker run -d \ --name nginx \ --network transcribe \ -p 80:80 \ -v /absolute/path/to/nginx.conf:/etc/nginx/nginx.conf:ro \ nginx # 检查一切是否按预期工作 docker logs nginx

<details open> <summary>⏱️ 分析API性能</summary>

您可以使用py-spy作为分析器来分析进程执行情况。

# 使用cap-add=SYS_PTRACE选项启动容器 docker run -d --name wordcab-transcribe \ --gpus all \ --shm-size 1g \ --restart unless-stopped \ --cap-add=SYS_PTRACE \ -p 5001:5001 \ -v ~/.cache:/root/.cache \ wordcab-transcribe:latest # 进入容器 docker exec -it wordcab-transcribe /bin/bash # 安装py-spy pip install py-spy # 找到要分析的进程PID top # 例如28 # 运行分析器 py-spy record --pid 28 --format speedscope -o profile.speedscope.json # 在API上执行任何任务以生成一些分析数据 # 退出容器并将生成的文件复制到本地机器 exit docker cp wordcab-transcribe:/app/profile.speedscope.json profile.speedscope.json # 访问https://www.speedscope.app/并上传文件以可视化分析结果
</details>

测试API

容器运行后,您可以测试API。 API文档可在http://localhost:5001/docs访问。

  • 音频文件:
import json import requests filepath = "/path/to/audio/file.wav" # 或任何其他可由ffmpeg转换的格式 data = { "num_speakers": -1, # 保持为-1以猜测说话人数量 "diarization": True, # 处理时间更长但有说话人段落归属 "multi_channel": False, # 仅用于每个通道一个说话人的立体声音频文件 "source_lang": "en", # 可选,默认为"en" "timestamps": "s", # 可选,默认为"s"。可以是"s"、"ms"或"hms"。 "word_timestamps": False, # 可选,默认为False } with open(filepath, "rb") as f: files = {"file": f} response = requests.post( "http://localhost:5001/api/v1/audio", files=files, data=data, ) r_json = response.json() filename = filepath.split(".")[0] with open(f"{filename}.json", "w", encoding="utf-8") as f: json.dump(r_json, f, indent=4, ensure_ascii=False)
  • YouTube视频:
import json import requests headers = {"accept": "application/json", "Content-Type": "application/json"} params = {"url": "https://youtu.be/JZ696sbfPHs"} data = { "diarization": True, # 处理时间更长但有说话人段落归属 "source_lang": "en", # 可选,默认为"en" "timestamps": "s", # 可选,默认为"s"。可以是"s"、"ms"或"hms"。 "word_timestamps": False, # 可选,默认为False } response = requests.post( "http://localhost:5001/api/v1/youtube", headers=headers, params=params, data=json.dumps(data), ) r_json = response.json() with open("youtube_video_output.json", "w", encoding="utf-8") as f: json.dump(r_json, f, indent=4, ensure_ascii=False)

运行本地模型

您可以链接本地文件夹路径以使用自定义模型。如果这样做,您应该在docker run命令中将文件夹挂载为卷,或将模型目录包含在Dockerfile中以将其烘焙到镜像中。

注意,对于默认的tensorrt-llm whisper引擎,获取转换后模型的最简单方法是使用hatch在本地启动服务器一次。在.env中指定WHISPER_MODELALIGN_MODEL,然后在终端中运行hatch run runtime:launch。这将下载并转换这些模型。

然后,您会在cloned_wordcab_transcribe_repo/src/wordcab_transcribe/whisper_models中找到转换后的模型。 然后在Dockerfile中,将转换后的模型复制到/app/src/wordcab_transcribe/whisper_models目录。

WHISPER_MODEL的Dockerfile示例行:COPY cloned_wordcab_transcribe_repo/src/wordcab_transcribe/whisper_models/large-v3 /app/src/wordcab_transcribe/whisper_models/large-v3 ALIGN_MODEL的Dockerfile示例行:COPY cloned_wordcab_transcribe_repo/src/wordcab_transcribe/whisper_models/tiny /app/src/wordcab_transcribe/whisper_models/tiny

🚀 贡献

入门

  1. 确保您已安装Hatch(例如使用pipx):
  1. 克隆仓库
git clone cd wordcab-transcribe
  1. 安装依赖并开始编码
hatch env create
  1. 运行测试
# 不修改代码的质量检查 hatch run quality:check # 质量检查和自动格式化 hatch run quality:format # 运行带覆盖率的测试 hatch run tests:run

工作流程

  1. 为您要处理的功能或错误创建一个问题。
  2. 使用GitHub左侧面板创建分支。
  3. git fetchgit checkout该分支。
  4. 进行更改并提交。
  5. 将分支推送到GitHub。
  6. 创建拉取请求并请求审核。
  7. 当获得批准且CI通过时合并拉取请求。
  8. 删除分支。
  9. 使用git fetchgit pull更新本地仓库。

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多