#ctc #beam-search #算法

ctclib

一个与CTC相关的实用工具集合,目标是快速且高度灵活

1个不稳定版本

0.1.0 2022年2月6日

数学 分类中排名 #851

MIT 许可协议

410KB
7K SLoC

C++ 6K SLoC // 0.1% comments Rust 757 SLoC // 0.0% comments Cython 52 SLoC // 0.3% comments Python 18 SLoC // 0.1% comments C 15 SLoC // 0.1% comments Shell 7 SLoC

ctclib

注意:目前正在开发中。

一个与CTC相关的实用工具集合,目标是快速且高度灵活。

特性

  • CTC解码
    • 贪婪解码器
    • 束搜索解码器
    • 带有KenLM的束搜索解码器
    • 带有用户定义LM的束搜索解码器
    • Python绑定

安装

ctclib依赖于kpu/kenlm。您必须安装以下库作为KenLM的依赖项。

  • Boost
  • Eigen3

例如,如果您使用的是Ubuntu(或基于Debian的某些Linux),您可以通过运行以下命令来安装它们

apt install libboost-all-dev libeigen3-dev

使用Rust的ctclib

目前,ctclib不在crates.io上,但您可以使用它作为git依赖项。

[dependencies]
ctclib = { version = "*", git = "https://github.com/agatan/ctclib" }

使用Python的ctclib

ctclib提供了名为pyctclib的Python接口。目前,pyctclib不在PyPI上,但您可以将它作为git依赖项安装。请确保您已安装cargolibclang-dev

pip install 'git+https://github.com/agatan/ctclib.git#egg=pyctclib&subdirectory=bindings/python'

示例

import pyctclib

decoder = pyctclib.BeamSearchDecoderWithKenLM(
    pyctclib.BeamSearchDecoderOptions(
      beam_size=100,
      beam_size_token=1000,
      beam_threshold=1,
      lm_weight=0.5,
    ),
    "/path/to/model.arpa",
    ["a", "b", "c", "_"],
)
decode.decode(log_probs)

# or you can use user-defined LM
# See pyctclib.LMProtocol

依赖项

~1–7.5MB
~50K SLoC