heap overflow error

hello, good afternoon
I’m trying to use agent in elixir to be able to solve a heap overflow… but the truth is that I still haven’t been able to understand agents well and how to use it.
My problem is that I send audio data from the client to be transcribed on the server but for some reason the memory is full try using agent to solve this problem as you can see below ( I clarify that the program transcribes until the memory is full )

 def handle_in("file_chunk", {:binary, <<samples :: binary>>}, socket) do
        
            model = GenServer.call(Model, :get_model)
        
            IO.inspect(model, label: "-------MODELO CARGADO DESDE EL GENSERVER --------")
        
            recognizer = GenServer.call(Model, :get_recognizer)
        
            IO.inspect(recognizer, label: "-------RECOGNIZER CARGADO --------")
        
         #this is the agent i tried use 
         {:ok, pid} = Agent.start(fn -> :ok end)
    result = Agent.get(pid, fn %{model: model, recognizer: recognizer} ->
        wave = :vosk.recognizer_accept_waveform(recognizer, samples)
        IO.inspect(wave, label: "-------wave --------")
        :vosk.recognizer_partial_result(recognizer)
      end)

        
        
              IO.inspect(result, label: "resultado: ")

        
        
             {:reply, :ok, socket}

what I really want to know is how to handle partial and wave so that I don’t get this error currently the agent doesn’t work for me and that’s the first problem I have to solve

Hey @Trini can you show the error you are actually getting?

of corse

1469: heap overflow
                   [error] GenServer #PID<0.696.0> terminating
** (ArgumentError) argument error
    (vosk 915e429) :vosk.recognizer_partial_result(#Reference<0.336960946.1277558785.221842>)
    (pba 0.1.0) lib/pba_web/channels/room_channel.ex:74: PbaWeb.RoomChannel.handle_in/3
    (phoenix 1.7.2) lib/phoenix/channel/server.ex:317: Phoenix.Channel.Server.handle_info/2
    (stdlib 4.3) gen_server.erl:1123: :gen_server.try_dispatch/4
    (stdlib 4.3) gen_server.erl:1200: :gen_server.handle_msg/6
    (stdlib 4.3) proc_lib.erl:240: :proc_lib.init_p_do_apply/3
Last message: %Phoenix.Socket.Message{topic: "room:lobby", event: "file_chunk", payload: {:binary, <<14, 0, 11, 0, 9, 0, 9, 0, 9, 0, 8, 0, 10, 0, 13, 0, 9, 0, 6, 0, 4, 0, 1, 0, 0, 0, 3, 0, 5, 0, 3, 0, 4, 0, 3, 0, 6, 0, 5, 0, 5, 0, 6, 0, 3, ...>>}, ref: "738", join_ref: "3"}
State: %Phoenix.Socket{assigns: %{}, channel: PbaWeb.RoomChannel, channel_pid: #PID<0.696.0>, endpoint: PbaWeb.Endpoint, handler: PbaWeb.UserSocket, id: nil, joined: true, join_ref: "3", private: %{log_handle_in: :debug, log_join: :info}, pubsub_server: Pba.PubSub, ref: nil, serializer: Phoenix.Socket.V2.JSONSerializer, topic: "room:lobby", transport: :websocket, transport_pid: #PID<0.689.0>}

This is the error I get when I didn’t have the agent… now what I’m trying to do is create an agent to handle the partial function which fills up the memory, which I’m still not having success with.
possibly there is a better way to handle it but using an agent is what i got to with my little elixir knowledge