k2-fsa / sherpa-ncnn

Real-time speech recognition using next-gen Kaldi with ncnn without Internet connection. Support iOS, Android, Raspberry Pi, VisionFive2, LicheePi4A etc.
https://k2-fsa.github.io/sherpa/ncnn/index.html
Apache License 2.0
902 stars 138 forks source link

关于 Vulkan GPU 加速 #293

Open KennyHuangChina opened 6 months ago

KennyHuangChina commented 6 months ago

您好,

文档中看到可以用 GPU 来加速 sharpa-ncnn

1

我在 Ubuntu2204 上用 build-android-arm64-v8a-with-vulkan.sh 脚本编译了支持 vulkan 的 so,但是放到 Android APK 中,发现性能非常差,原先的版本(arm64-v8)完成 30s pcm 数据的识别是 6s 左右,而支持 Vulkan 的 so,反而延长到了 25s+

一开始,以为是 useGPU 没有设置,但是检查一遍,确认 useGPUtrue,实际上,我所有的参数,都是按照 Android Demo 中设置的,不知道 CPU 版本,和 GPU 版本,是否有不同的设置参数。

我用的模型是 sherpa-ncnn-streaming-zipformer-bilingual-zh-en-2023-02-13

请问,这个问题,我们要往什么方向调查?

csukuangfj commented 6 months ago

gpu 需要 warmup, 前面几次运算的时间需要忽略。

KennyHuangChina commented 6 months ago

今天按照您的提示,做了做次测试,送了 10块 到 20块 30s 的 PCM buffer,耗时均稳定在 30s 左右,并没有下降的趋势。

每次送 PCM buffer 给 sherpa lib 的时候,分别有如下 3中设置

  1. 调用 model.reset(true)
  2. 调用 model.reset(false)
  3. 不调用 model.reset()

三种测试,结果均一致,没有明显差别。这里的 model 是

model = SherpaNcnn(assetManager = mAssetMgr, config = config)

测试过程中,CPU 130 左右,手机为 Mi 10S(snapdragon 870)