reconocimiento elixir desde cero

This commit is contained in:
2025-06-19 09:27:15 -03:00
parent ba9ecfcff4
commit ebf491bc1f
49 changed files with 2682 additions and 0 deletions

View File

@ -0,0 +1,17 @@
defmodule Recognition_VADWeb.ControlChannel do
use Phoenix.Channel
def join("control:lobby", _payload, socket) do
{:ok, socket}
end
def handle_in("set_parameter", %{"parameter" => param, "value" => value}, socket) do
GenServer.cast(Recognition_VAD.Transcriber, {:set_param, param, value})
{:reply, {:ok, %{message: "Parameter updated"}}, socket}
end
def handle_in("call_method", %{"method" => method}, socket) do
GenServer.cast(Recognition_VAD.Transcriber, {:call_method, method})
{:reply, {:ok, %{message: "Method called"}}, socket}
end
end

View File

@ -0,0 +1,35 @@
defmodule Recognition_VADWeb.DataChannel do
use Phoenix.Channel
def join("data:lobby", _params, socket) do
Phoenix.PubSub.subscribe(Recognition_VAD.PubSub, "audio_output")
{:ok, socket}
end
def handle_info({:broadcast_audio, msg}, socket) do
push(socket, "transcription", Jason.decode!(msg))
{:noreply, socket}
end
# Recibe audio codificado en base64 (para transporte seguro)
def handle_in("audio_chunk", %{"data" => base64_chunk, "sample_rate" => sample_rate}, socket) do
case Base.decode64(base64_chunk) do
{:ok, binary_audio} ->
GenServer.cast(Recognition_VAD.AudioProcessor, {:chunk, binary_audio, sample_rate})
{:noreply, socket}
:error ->
IO.puts("⚠️ Error al decodificar base64")
{:reply, {:error, %{reason: "Invalid base64 audio"}}, socket}
end
end
def handle_in("save_audio", _params, socket) do
GenServer.cast(Recognition_VAD.AudioProcessor, :save_wav)
{:noreply, socket}
end
def handle_in(_unknown, _payload, socket) do
{:noreply, socket}
end
end

View File

@ -0,0 +1,9 @@
defmodule Recognition_VADWeb.UserSocket do
use Phoenix.Socket
channel "control:*", Recognition_VADWeb.ControlChanel
channel "data:*", Recognition_VADWeb.DataChannel
def connect(_params, socket, _connect_info), do: {:ok, socket}
def id(_socket), do: nil
end