(简体中文|English)
paraformer是阿里funasr开源的中文语音识别模型。 本项目基于ggml推理框架,提供一个c++的runtime
- 定义模型结构
- 初始化模型
- 加载模型参数和词表
- fbank + lfr + cvmn 特征提取
- 构建计算图
- encoder
- predictor
- decoder
- bias encoder
- seaco decoder
- 基于ggml,不依赖其他第三方库, 致力于端侧部署
- 特征提取参考kaldi-native-fbank库,并使用多线程加速特征提取过程。
- 参看whisper.cpp项目,使用flash attention 解码
下载模型并转换模型格式
git clone https://github.com/lovemefan/paraformer.cpp
cd git paraformer.cpp
git submodule sync && git submodule update --init --recursive
mkdir build && cd build
cmake ../src/csrc && make -j 8
# download model weight from modelscope
git clone https://www.modelscope.cn/damo/speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch.git resource/model
# convert weight and vocab into gguf format
python src/python/convert-pt-to-gguf.py \
--model /Users/cenglingfan/Code/cpp-project/paraformer.cpp/resource/model/speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch \
--outfile /Users/cenglingfan/Code/cpp-project/paraformer.cpp/resource/model/seaco-paraformer-ggml-model-fp16.bin
- 本项目借用并模仿来自whisper.cpp 的大部分c++代码
- 参考来自funasr的paraformer模型结构以及前向计算 FunASR
- 本项目参考并借用 kaldi-native-fbank中的fbank特征提取算法。 FunASR 中的lrf + cmvn 算法