TechFoco Logo
Focus on Technology
© 2025 TechFoco. All rights reserved.
GitHub
返回首页

构建高性能异步 Whisper API:支持分布式处理与多平台爬虫

2025年01月14日•来源: TechFoco
构建高性能异步 Whisper API:支持分布式处理与多平台爬虫

本项目旨在构建一个强大、高性能的异步 Whisper 服务 API,支持高扩展性和分布式处理需求,适用于大规模自动语音识别场景,并集成了多平台爬虫,如抖音和 TikTok。

项目特色

异步设计:基于 Python 3.11 的 asyncio 异步特性,所有模块都使用异步特性进行编写,实现请求的高效处理,提升整体系统的稳定性和高并发能力。

自带文档 UI:得益于 FastAPI 自动生成的 OpenAPI JSON,本项目自带一个可交互的 Swagger UI 用于在浏览器中可视化的测试接口,并且接口 Swagger UI 中带有详细的中文和英文双语说明和默认参数设置,用户可以快速上手测试。

高准确率:使用最新的 large-v3 模型确保输出的准确率,并且得益于 Faster Whisper 的加持,在保证准确率的情况下可以极大地缩短推理所需的时间。

分布式部署:本项目可以从同一个数据库中获取任务以及存储任务结果,未来计划与 Kafka 无缝对接,实现 FastAPI 与 Kafka 的完美交响:构建实时更新的智能 Web API。

异步模型池:本项目实现了一个高效的异步 AI 模型池,在线程安全的情况下支持 OpenAI Whisper 和 Faster Whisper 模型的多实例并发处理场景。在支持 CUDA 加速且拥有多个 GPU 的场景中,通过智能加载机制可以将多个模型智能地加载在多个 GPU 上,然后模型实例间自动分配任务,确保任务处理速度和系统负载均衡。但是在单一 GPU 场景下无法提供并发功能。

异步数据库:本项目支持使用 MySQL 和 SQLite 作为数据库,在本机运行时无需安装和配置 MySQL,使用 SQLite 即可快速运行项目。如果使用 MySQL 则可以更好地配合分布式计算,多个节点使用同一个数据库作为任务源。

异步网络爬虫:本项目内置了多个平台的数据爬虫模块,当前支持抖音、TikTok,用户只需要输入对应的视频链接即可快速地对媒体进行语音识别,并且未来计划支持更多社交媒体平台。

ChatGPT 集成:本项目已经集成了 ChatGPT 作为 LLM 部分的支持,可以使用数据库中的数据与 ChatGPT 进行交互。

工作流与组件化设计(待实现):围绕 Whisper 转录任务,项目支持高度自定义的工作流系统。用户可以通过 JSON 文件定义组件、任务依赖和执行顺序,甚至可以使用 Python 编写自定义组件,灵活扩展系统功能,轻松实现复杂的多步骤处理流程。

事件驱动的智能工作流(待实现):工作流系统支持事件触发,可以基于时间、手动触发,或由爬虫模块自动触发。相比单一任务,工作流更加智能,支持条件分支、任务依赖、动态参数传递和重试策略,为用户提供更高的自动化和可控性。

适用场景

媒体数据处理:适用于需要大规模语音转文本处理的场景,比如网络或本地的媒体文件转录、分析、翻译、生成字幕等应用。

自动化工作流:虽然目前项目本身没有实现工作流,但是可以通过 API 与其他平台的任务流系统进行接入,通过事件驱动的工作流,轻松实现复杂任务的自动化执行,适合需要多步骤处理和条件控制的业务逻辑。

动态数据采集:结合异步爬虫模块,系统可自动采集和处理来自网络的数据,并且存储处理完成后的数据。

利用分布算力:在多个分布的零散算力下,可以使用网关的形式将分散的算力进行有效利用。

已实现的功能

创建任务:支持上传媒体文件(file_upload)或指定媒体文件链接(file_url)作为任务的数据源,并且设置一系列参数更加细粒地处理任务。

设置任务类型:用户可以通过修改(task_type)参数设置任务类型,当前支持媒体文件转文本(transcribe)或自动翻译(translate)。

设置任务处理优先级:用户可以通过 priority 参数指定任务优先级,目前支持三种优先级(high, normal, low)。

任务回调通知:用户在创建任务时可以指定 callback_url 作为任务完成后的数据接收地址,任务处理完成后会向目标地址发送一个 HTTP POST 请求将任务的结果数据传递到指定服务器,并且回调状态会被记录在数据库中方便审查。

多平台支持:用户可以在对应接口中创建抖音任务、TikTok 任务,也可以手动使用视频链接并且手动使用 platform 参数标记平台名称。

设置 Whisper 参数:用户可以手动设置解码参数来修改模型的推理过程,当前支持多种参数(language,temperature, compression_ratio_threshold, no_speech_threshold, condition_on_previous_text, initial_prompt, word_timestamps, prepend_punctuations, append_punctuations, clip_timestamps, hallucination_silence_threshold)。

查询任务:用户可以根据多种筛选条件查询任务列表,包括任务状态、优先级、创建时间、语言、引擎名称等信息,该接口适用于分页查询,并且通过 limit 和 offset 参数控制每页显示的记录数,支持客户端逐页加载数据。

删除任务:用户可以根据任务 ID 删除任务,删除后任务数据将被永久删除。

获取任务结果:用户可以根据任务 ID 获取指定任务的结果信息。

提取视频的音频:运行用户上传文件来从视频文件中提取音频,支持设置采样率(sample_rate),位深度(bit_depth),输出格式(output_format)。

生成字幕文件:用户可以通过指定的任务 ID 来生成指定任务的字幕,并且支持指定输出格式(output_format),当前支持(srt)以及(vtt)作为字幕文件格式。

创建 TikTok 任务:用户可以通过 TikTok 视频链接爬取视频并创建任务。

创建抖音任务:用户可以通过抖音视频链接爬取视频并创建任务。

使用 ChatGPT 总结任务:用户可以使用任务 ID 将已经转义好的自然语言交给 ChatGPT 进行内容总结和其他交互,并且支持在接口选择模型和自定义提示词。

Fast-Powerful-Whisper-AI-Services-API

相关标签

asyncioFastAPIWhisper