UE5蓝图离线语音转文字插件---如何将sherpa-ncnn整合的UE5

最近很多小伙伴问我这款插件的事情,但是由于公司投入很多精力开发这款插件,所以它不是免费的。
但是对于有动手能力的小伙伴,我可以说下实现这款插件的思路(只在win平台上)。

关于sherpa-ncnn

github地址是:https://github.com/k2-fsa/sherpa-ncnn
是实时的语音识别框架,具体使用方式见:https://k2-fsa.github.io/sherpa/ncnn/index.html

关于语音识别模型

对于麦克风的流式语音识别,选择合适的模型非常关键,尤其是需要在实时性和识别准确性之间取得平衡。以下是几种模型的适用性分析,帮助你选择最适合流式语音识别的模型:

  1. Conv-Emformer-transducer-based Models
    适合度: 非常适合
    原因: Conv-Emformer-transducer 模型专为流式语音识别设计,结合了卷积神经网络(CNN)和 Emformer 架构,可以在低延迟的情况下高效处理语音输入。Emformer 在处理长短期依赖性方面表现出色,能够在实时环境中准确识别语音。
    优点: 它能够快速响应语音输入,适合用于实时语音助手、会议记录等需要立即反馈的场景。并且在处理嘈杂环境中的语音时也有不错的表现。
  2. LSTM-transducer-based Models
    适合度: 适合
    原因: LSTM-transducer 模型在处理序列数据时非常有效,尤其适合处理具有时间依赖性的流式语音输入。LSTM 的架构使其在流式语音识别任务中表现稳定,并且能够较好地捕捉语音中的上下文信息。
    优点: LSTM 模型在稳定性方面表现良好,对于连续的对话和语音输入具有较好的处理能力。
  3. Zipformer-transducer-based Models
    适合度: 适合
    原因: 虽然 Zipformer-transducer 模型的设计更偏向于处理长语音输入,但它的高效性和低计算复杂度使其也适合用于流式语音识别任务,尤其是在需要处理复杂语音信号的场景中。
    优点: 适用于长时间的语音识别任务,如会议记录或演讲转录,同时还能在资源有限的设备上运行。
  4. Small Models
    适合度: 可选
    原因: Small Models 通常用于资源有限的设备或环境中,虽然在流式识别中也可以使用,但它们的识别精度可能不如前面提到的其他模型。
    优点: 如果在移动设备或嵌入式系统上进行流式识别,可以选择小模型,以减少资源占用和提高响应速度。

关于解码方法

SherpaNcnn 中,config.decoder_config.decoding_method 控制语音识别的解码方法,即如何将模型的输出转换为最终的文本结果。不同的解码方法在性能、速度和准确性上有所不同。以下是一些常见的解码方法及其特点:

  1. “greedy_search”
    描述: 贪婪搜索是最简单的解码方法。在每个时间步,模型会选择具有最高概率的输出,直接作为最终的输出结果。
    优点: 速度快,因为它在每个时间步只需要做一次选择。
    缺点: 可能会错过一些全局最优解,因为它只关注当前时间步的最佳选择,而不考虑未来的可能性。
    适用场景: 实时性要求高且语音输入相对简单的应用。
  2. “beam_search”
    描述: 波束搜索通过保留多个候选路径,在每个时间步选择前几个概率最高的路径(即 beam size),直到最终确定最优路径。
    优点: 在某些情况下比贪婪搜索更准确,因为它考虑了多个可能的路径。
    缺点: 比贪婪搜索更慢,因为它需要评估多个路径。
    适用场景: 需要较高准确度且可以容忍较长处理时间的应用。
  3. “modified_beam_search”
    描述: 这是对传统波束搜索的一种改进版本,可能包含一些特定的优化或调整,以适应特定的语音识别需求。
    优点: 结合了速度和准确性,可能会在某些特定场景下表现出色。
    缺点: 具体的优化可能会限制其在某些情况下的表现,需要根据具体应用场景进行测试。
    适用场景: 适用于需要在速度和准确性之间找到平衡的应用。
  4. “fast_beam_search”
    描述: 快速波束搜索是一种在性能和速度上进行了优化的解码方法,可能在传统波束搜索的基础上加入了并行化或其他加速技术。
    优点: 提供了接近波束搜索的准确性,但在速度上有明显优势。
    缺点: 可能会在极端情况下比波束搜索略差。
    适用场景: 需要在较短时间内获得较高准确率的应用,如实时语音转录。
    如何选择解码方法
    实时性要求高: 如果你的应用对实时性要求很高,且输入语音较为简单,选择 “greedy_search” 是一个不错的选择。
    需要高准确率: 如果准确率是首要考虑因素,且可以容忍一定的处理时间,选择 “beam_search” 或 “modified_beam_search” 会更好。
    速度与准确率平衡: 如果你需要在速度和准确率之间找到一个平衡点,可以选择 “fast_beam_search”。

关于如何在ue中集成

1.sherpa-ncnn官方Capi的Demo: https://k2-fsa.github.io/sherpa/ncnn/c-api/index.html#build-decode-file-c-api-c-with-generated-files
2.ue官网网站有插件的编写方式,可以自行查阅

关于ue编译时的依赖

你可以从sherpa-ncnn的github上获取并且编译它,需要产出动态链接库和静态链接库。你需要看懂cmake并且修改一些参数。
我编译的cpu版本的。当然可以联系我,获取依赖和头文件。
在这里插入图片描述在这里插入图片描述
还需要再官网下载需要的模型
在这里插入图片描述

视频资源

语音识别实机测试:https://www.bilibili.com/video/BV1u9HKemEcn
蓝图的使用:https://www.bilibili.com/video/BV1PJWDeiEQs
在这里插入图片描述

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值