Skip to main content

FASR: Fast Automatic Speech Recognition Pipeline

Project description

fasr logo

fasr

fasr 是一个面向生产场景的 Python 语音推理框架,专注于将语音处理能力以可组合、可扩展的方式落地到工程系统中。

它围绕 AudioPipeline 构建,支持将 VAD、ASR、标点恢复、语种识别等能力按组件自由编排,适用于离线转写、批处理任务和在线服务等场景。

核心特点:

  • 插件化模型生态:能力按模型插件解耦,安装即注册,按需组合。
  • 工程化流水线:统一数据结构与组件接口,便于维护和扩展。
  • 高性能推理:组件异步执行,充分利用多核 CPU / GPU 资源。
  • 面向生产:支持批量、流式与服务化部署,便于接入业务系统。

组件介绍

  • loader:音频加载组件,负责读取本地或远程音频并构建 Audio 对象。
  • detector:端点检测组件(VAD),将音频切分为语音片段(segments)。
  • recognizer:语音识别组件(ASR),对每个语音片段进行转写。
  • sentencizer:标点恢复与句子切分组件(Punc),将识别结果整理为可读文本。
  • identifier:语言识别组件(LID,可选),用于多语言场景下识别语种。
  • custom:支持通过 add_pipe() 注入自定义组件,扩展前后处理逻辑。

快速开始

fasr 的模型能力通过模型插件提供,需要先安装对应的插件包:

pip install fasr-vad-marblenet fasr-asr-qwen3
import fasr
from fasr import AudioPipeline

# 加载流水线(首次运行会自动下载模型权重)
asr = (
    AudioPipeline()
    .add_pipe("detector", model="marblenet")
    .add_pipe("recognizer", model="qwen3_0_6b")
)

# 单条识别
audio = asr("example.wav")
for channel in audio.channels:
    print(channel.text)

# 批次识别
audios = asr.run(["1.wav", "2.wav", "3.wav"])
for audio in audios:
    for channel in audio.channels:
        print(channel.text)

# 流式返回(大批量场景,逐条 yield)
for audio in asr.stream(["1.wav", "2.wav", "3.wav"]):
    for channel in audio.channels:
        print(channel.text)

模型插件

fasr 通过模型插件机制加载组件能力,按任务安装对应插件后可自由组合流水线:

任务 插件包 典型模型
VAD fasr-vad-marblenet / fasr-vad-fsmn / fasr-vad-firered marblenet / fsmn / firered
ASR fasr-asr-qwen3 / fasr-asr-paraformer / fasr-asr-firered / fasr-asr-fun qwen3_0_6b / paraformer / firered_aed / fun_asr_nano
Punc fasr-punc-ct-transformer ct_transformer
LID fasr-lid-firered firered

如何编写模型插件

fasr 的插件机制基于 catalogue

  • Python entry points,安装即注册,按需惰性导入。一个最小的 VAD 插件骨架如下:
  1. 继承对应任务的基类并用 registry 装饰器注册:
# my_fasr_vad/models/vad.py
from fasr.models.vad_model import VADModel
from fasr.config import registry


@registry.vad_models.register("my_vad")
class MyVADModel(VADModel):
    def load_checkpoint(self, checkpoint_dir=None): ...
    def detect(self, audios): ...
  1. 在插件包的 pyproject.toml 中声明 entry point,group 名必须用下划线 (对应 catalogue 的 namespace ("fasr", "vad_models")fasr_vad_models):
[project.entry-points."fasr_vad_models"]
my_vad = "my_fasr_vad.models.vad:MyVADModel"

每个任务对应一个固定的 group 名:

任务 entry point group
ASR fasr_asr_models
流式 ASR fasr_stream_asr_models
VAD fasr_vad_models
流式 VAD fasr_stream_vad_models
标点 fasr_punc_models
语种识别 fasr_lid_models

注意:不要写成 fasr.vad_models(点号),catalogue 只按下划线 命名查找 entry point,点号写法会导致 registry.resolve(cfg) 找不到模型。 如果注册名本身带点(例如 stream_fsmn.onnx),请用引号包起来: "stream_fsmn.onnx" = "..."

  1. pip install -e .(或 uv pip install -e .)安装插件后,配置文件里 @vad_models = "my_vad" 就会被 fasr.load(cfg) 自动发现,无需手动 import。 其它插件的重型依赖(如 torchvllm)不会被一同拉起,只有真正被配置引用的插件 才会被导入。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fasr-0.5.0.tar.gz (9.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fasr-0.5.0-py3-none-any.whl (4.4 MB view details)

Uploaded Python 3

File details

Details for the file fasr-0.5.0.tar.gz.

File metadata

  • Download URL: fasr-0.5.0.tar.gz
  • Upload date:
  • Size: 9.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for fasr-0.5.0.tar.gz
Algorithm Hash digest
SHA256 4293392e8fca541f556c2ad33dc13c2e4942e6ad18837c00205861145259b97b
MD5 07ad4828e72ade02c9389580eaffc453
BLAKE2b-256 cc4fc7aecb818a126b82d238f40009fbf9c01e275b67f8a441bfda5d1c2a2b1b

See more details on using hashes here.

File details

Details for the file fasr-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: fasr-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 4.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for fasr-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 34ff88b084eef70cd8f6d8e410355789fd03b0b2cf34c44298839a52354823a8
MD5 1ac3db0680a83469dba921832d52ca6a
BLAKE2b-256 f73a1ce838d77c332a0eb1e605bb48e84b7b4620202c45da48d820f4c41b0153

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page