Filter with `push` flow_control

Hello, I have a filter that transcribes audio as it receives it by sending it to a transcription service(via a websocket). I also have a VAD filter(applied before the audio data arrives to the Membrane pipeline). I'm seeing that the audio data only gets sent once the buffer is full(when there is enough voice audio). I was trying to change the flow_control to :push for the transcription filter for this. (Is that the right solution?) I also ran into some errors because while my source has its output pad flow_control set to push there are some intermediate filters that have it as :auto:
** (Membrane.LinkError) Cannot connect :auto output :output to push input :input
** (Membrane.LinkError) Cannot connect :auto output :output to push input :input
Here is my pipeline and filter: https://gist.github.com/samrat/17b7423a1dbb1fa939594f263e6e4d6b What would be the best way for the audio buffers to get sent for transcription as soon as it is received?
Gist
membrane_pipeline.ex
GitHub Gist: instantly share code, notes, and snippets.
3 Replies
Feliks
Feliks8mo ago
Hi, LinkError that you provided is caused by linking :auto output with :push input, so having a source with push output cannot be reason of it. I see in your gist, that you commented out # flow_control: :push in filter input pad, so is there a chance, that this error comes from the moment, when this line wasn't commented?
samrat
samratOP8mo ago
Yes, the error is from when the line wasn't commented. I was trying to fix the problem of the audio frames getting buffered by changing the flow_control on the input pad, but ran into the LinkError.
Feliks
Feliks8mo ago
Ok, but changing flow_control from :push to :auto doesn't cause buffering any audio frames
I'm seeing that the audio data only gets sent once the buffer is full(when there is enough voice audio).
Could you describe the problem in a different way, please? I don't know what you mean
Want results from more Discord servers?
Add your server