HoGC
HoGC
@78 看着应该还是没有解决吧,SendAudio一旦阻塞,OnAudioOutput还是会一直推tasks,内存还是会消耗完
我觉得有点不妥,因为目前是一直在ReadAudio的,只要一点阻塞就会丢弃,这样会导致音频断续严重, 尽量还是设置一个buffer吧,这样较小的网络波动不会找造成断续
主要你目前不是不读取,是每次都读,应该把繁忙的判断放在ReadAudio上
还有websocket的默认超时时间有10秒,是不是也可以优化下
感觉目前的修复还是不能根本解决问题, 只是简单的判断是不是busy,内存浮动还是很大 在某些时机下,如果每次读的时候刚好不busy,读完就busy,慢慢的tasks还是会堆积的 没有明确的限制,在内存不宽裕的板子的,迟早要出问题的
AI-01的仓库有抽象过Encoder 和 Decoder,改动较大不方便合并,后面又改回来 抽象Encoder 和 Decoder ,也还是要在audio_codec实现read uint8的类型, 目前你看下AI-01的仓库的实现,是没有抽象Encoder 和 Decoder的实现,你觉得可以的话,我整理下提一个pr
https://github.com/SmartArduino/DOIT_AI 以下是其中一处的修改,对AUDIO_CODEC_ENCODE_OPUS单独处理 ``` if (device_state_ == kDeviceStateListening) { #ifdef CONFIG_USE_AUDIO_CODEC_ENCODE_OPUS std::vector opus; ReadAudio(opus, 16000, 30 * 16000 / 1000); Schedule([this, opus = std::move(opus)]() { protocol_->SendAudio(opus); }); #else ReadAudio(data, 16000, 30...
这是之前抽象opus_codecs的 https://github.com/SmartArduino/DOIT_AI/tree/46f36d731146999db3e7e88ccc91919182d1bbe0/main/opus_codecs
抽象opus_codecs的话application改动多点,主要是no_opus_codecs解码后的数据定义为opus也不是pcm也不是,然后终归需要直接输入输出opus的接口,感觉在audio_codec实现也是合适的,那确实好像也不用抽象出来,要不先提一版没有opus_codecs的,你看看