#hmm #machine-learning #hidden-markov-model #vector-quantization #linear-prediction

app ecoz2

线性预测编码向量量化与隐马尔可夫模型在模式识别中的应用

4个版本 (2个破坏性版本)

0.4.4 2020年8月21日
0.3.0 2020年5月3日
0.1.1 2020年3月31日
0.1.0 2020年3月30日

机器学习中排名439

MIT/Apache

1.5MB
9K SLoC

C 5K SLoC // 0.1% comments Rust 3K SLoC // 0.1% comments Python 1K SLoC // 0.1% comments SWIG 177 SLoC // 0.1% comments

ECOZ2在Rust中

该项目主要是C语言中原始ecoz2实现的“前端”,并在Rust中实现了一些功能。

安装和运行

ecoz2可执行文件目前正在为Linux和MacOS构建和发布,您可以在发布中找到。

或者,您也可以使用Rust安装可执行文件。为此,您还需要在您的计算机上安装GNU gcc编译器。在Linux上,您可以运行

$ CC=gcc cargo install ecoz2

而在MacOS上,类似以下操作

$ CC=gcc-9 cargo install ecoz2

这可能需要一些时间才能完成(输出示例在此)。

运行

$ ecoz2
ecoz2 0.3.35
ECOZ2 System

USAGE:
    ecoz2 <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    csv-show    Basic csv selection info
    cversion    Show version of C code
    help        Prints this message or the help of the given subcommand(s)
    hmm         HMM operations
    lpc         Linear prediction coding
    prd         Predictor file operations
    seq         Sequence file operations
    sgn         Signal operations
    vq          VQ operations

从您机器上的一组声学信号(WAV格式)开始,系统的典型使用将涉及以下主要子命令,顺序大致如下

  • ecoz2 lpc:接受*.wav并生成预测文件*.prd
  • ecoz2 vq learn接受*.prd并生成码本*.cb
  • ecoz2 vq quantize接受*.cb*.prd并生成观测序列*.seq
  • ecoz2 hmm learn接受*.seq并生成HMM模型*.hmm
  • ecoz2 hmm classify接受*.hmm*.seq并报告序列的分类

开发

ecoz2 被包含为一个子模块,通过 http://doc.rust-lang.net.cn/cargo/reference/build-scripts.html 暴露了选定的功能。

$ cargo build [--release]

依赖项

约11-24MB
约373K SLoC