active_call/media/
asr_processor.rs1use super::processor::Processor;
2use crate::{media::AudioFrame, media::Samples, transcription::TranscriptionClient};
3use anyhow::Result;
4
5pub struct AsrProcessor {
6 pub asr_client: Box<dyn TranscriptionClient>,
7}
8
9impl AsrProcessor {}
10
11impl Processor for AsrProcessor {
12 fn process_frame(&mut self, frame: &mut AudioFrame) -> Result<()> {
13 match &frame.samples {
14 Samples::PCM { samples } => {
15 if !samples.is_empty() {
16 self.asr_client.send_audio(&samples)?;
17 } else {
18 tracing::debug!(track_id = %frame.track_id, "AsrProcessor: empty PCM samples");
19 }
20 }
21 _ => {
22 tracing::debug!(track_id = %frame.track_id, "AsrProcessor: skipping non-PCM frame");
23 }
24 }
25 Ok(())
26 }
27}