reconocimiento elixir desde cero
This commit is contained in:
@ -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
|
@ -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
|
@ -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
|
Reference in New Issue
Block a user