当前位置: 首页 > news >正文

sherpa-ncnn:音频处理跟不上采集速度 -- 语音转文本大模型


目录

  • 1. 问题报错
  • 2. 解决方法


1. 问题报错

报错

An overrun occurred, which means the RTF of the current model on your board is larger than 1. You can use ./bin/sherpa-ncnn to verify that. Please select a smaller model whose RTF is less than 1 for your board.

问题

这个错误表明音频处理速度跟不上音频采集速度,导致缓冲区溢出。

  • 具体是,调用sherpa-ncnn-alsa_Test时,音频是实时采集的,在采集到音频后会对音频数据进行额外处理。

  • 例如:将音频转出来的文字,组成句子,传输给其他API调用。

  • 在其他API处理这个句子时,语音还在实时采集,这是就会导致处理速度跟不上音频采集速度。

解决思路

在音频额外处理期间,停止音频识别采集,在运行结束时恢复音频识别采集,以避免数据溢出。


2. 解决方法

音频处理速度跟不上音频采集速度时。在音频额外处理期间,停止音频识别采集,在运行结束时恢复音频识别采集。

  • 以为调用audio_op()对音频进行处理为例;

(1)修改 sherpa-ncnn/csrc/alsa.h

  • Alsa 类中,添加暂停和恢复音频采集的功能,即Pause()Resume() 方法。

  • 使用 ALSA 的 snd_pcm_pause 函数来正确暂停和恢复音频采集;

class Alsa {public:// ... code ...// 添加暂停和恢复方法// 使用 ALSA 的 snd_pcm_pause 函数来正确暂停和恢复音频采集void Pause() { snd_pcm_pause(capture_handle_, 1); }void Resume() { snd_pcm_pause(capture_handle_, 0); }// ... code ...
};

(2)修改 sherpa-ncnn/csrc/sherpa-ncnn-alsa.cc

  • 使用暂停和恢复音频采集的功能
// ... code ...while (!stop) {// ... code ...if (is_endpoint) {if (!text.empty()) {++segment_index;alsa.Pause();    // 暂停音频采集audio_op();  // 音频处理操作alsa.Resume();   // 恢复音频采集}recognizer.Reset(s.get());}}

.


声明:资源可能存在第三方来源,若有侵权请联系删除!

相关文章:

  • 前缀和——和为K的子数组
  • 【Unity网络编程知识】Unity的 WWW相关类学习
  • 基础深度补全模型DepthLab: From Partial to Complete
  • Python训练第三十天
  • mybtais plus使用拦截器打印完整SQL语句
  • 深入探讨死区生成:原理、实现与应用
  • MIMO 检测(6)--最大似然检测(1)
  • 基于SpringBoot的小型民营加油站管理系统
  • 2025年—ComfyUI_关于ComfyUI的零碎小知识
  • unity UGUI虚线框shader
  • C++--综合应用-演讲比赛项目
  • 10、底层注解-@Conditional条件装配
  • python可视化:公积金与商业贷款利率历年趋势1
  • 客户体验数据使用的三种视角——旅程视角
  • 升级mysql (rpm安装)
  • 【java第14集】java访问修饰符详解
  • HashMap 的特点及应用场景
  • 洛谷B3876—— [信息与未来 2015] 中间值
  • Java知识点-Stream流
  • UE5在Blueprint中判断不同平台
  • 《歌手2025》能否“爆”下去?
  • 申伟强任上海申通地铁集团有限公司副总裁
  • 19世纪的“表征之场”:弗洛伊德的精神分析椅
  • 上海银行副行长汪明履新上海农商银行党委副书记
  • 以军在加沙北部和南部展开大规模地面行动
  • 上海小学生暑(寒)托班会增设开办期数、延长办班时间吗?团市委回应