Files
xiaozhi-esp32/main/audio_processing/no_audio_processor.cc

51 lines
1.2 KiB
C++
Raw Normal View History

#include "no_audio_processor.h"
2025-04-29 18:17:08 +08:00
#include <esp_log.h>
#define TAG "NoAudioProcessor"
2025-04-29 18:17:08 +08:00
void NoAudioProcessor::Initialize(AudioCodec* codec) {
2025-04-29 18:17:08 +08:00
codec_ = codec;
}
void NoAudioProcessor::Feed(const std::vector<int16_t>& data) {
2025-04-29 18:17:08 +08:00
if (!is_running_ || !output_callback_) {
return;
}
// 直接将输入数据传递给输出回调
output_callback_(std::vector<int16_t>(data));
}
void NoAudioProcessor::Start() {
2025-04-29 18:17:08 +08:00
is_running_ = true;
}
void NoAudioProcessor::Stop() {
2025-04-29 18:17:08 +08:00
is_running_ = false;
}
bool NoAudioProcessor::IsRunning() {
2025-04-29 18:17:08 +08:00
return is_running_;
}
void NoAudioProcessor::OnOutput(std::function<void(std::vector<int16_t>&& data)> callback) {
2025-04-29 18:17:08 +08:00
output_callback_ = callback;
}
void NoAudioProcessor::OnVadStateChange(std::function<void(bool speaking)> callback) {
2025-04-29 18:17:08 +08:00
vad_state_change_callback_ = callback;
}
size_t NoAudioProcessor::GetFeedSize() {
2025-04-29 18:17:08 +08:00
if (!codec_) {
return 0;
}
// 返回一个固定的帧大小,比如 30ms 的数据
return 30 * codec_->input_sample_rate() / 1000;
}
void NoAudioProcessor::EnableDeviceAec(bool enable) {
if (enable) {
ESP_LOGE(TAG, "Device AEC is not supported");
}
}