File size: 1,910 Bytes
d77a9fd
 
 
 
4a375b0
d77a9fd
 
4b67cec
d77a9fd
5aee375
 
d77a9fd
 
 
 
f22b0a2
28c8908
 
d77a9fd
 
 
4b67cec
 
 
4a375b0
d77a9fd
 
 
847217a
d77a9fd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48a456d
59fddbd
4b67cec
 
 
59fddbd
4b67cec
 
 
59fddbd
4b67cec
48a456d
d77a9fd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
defmodule MedicalTranscription.Application do
  # See https://hexdocs.pm/elixir/Application.html
  # for more information on OTP Applications
  @moduledoc false
  alias MedicalTranscription.Audio.RecordingPipeline

  use Application
  alias AudioTagger.{KeywordFinder, Transcriber, Vectors}

  @model_name "openai/whisper-tiny"

  @impl true
  def start(_type, _args) do
    children = [
      MedicalTranscriptionWeb.Telemetry,
      MedicalTranscription.Repo,
      {DNSCluster,
       query: Application.get_env(:medical_transcription, :dns_cluster_query) || :ignore},
      {Phoenix.PubSub, name: MedicalTranscription.PubSub},
      # Start the Finch HTTP client for sending emails
      {Finch, name: MedicalTranscription.Finch},
      transcription_spec(),
      token_classification_spec(),
      text_embedding_spec(),
      RecordingPipeline,
      # Start a worker by calling: MedicalTranscription.Worker.start_link(arg)
      # {MedicalTranscription.Worker, arg},
      # Start to serve requests, typically the last entry
      MedicalTranscriptionWeb.Endpoint
    ]

    # See https://hexdocs.pm/elixir/Supervisor.html
    # for other strategies and supported options
    opts = [strategy: :one_for_one, name: MedicalTranscription.Supervisor]
    Supervisor.start_link(children, opts)
  end

  # Tell Phoenix to update the endpoint configuration
  # whenever the application is updated.
  @impl true
  def config_change(changed, _new, removed) do
    MedicalTranscriptionWeb.Endpoint.config_change(changed, removed)
    :ok
  end

  defp transcription_spec do
    Transcriber.child_spec(MedicalTranscription.TranscriptionServing, @model_name)
  end

  defp token_classification_spec do
    KeywordFinder.token_classification_child_spec(MedicalTranscription.TokenClassificationServing)
  end

  defp text_embedding_spec do
    Vectors.child_spec(MedicalTranscription.TextEmbeddingServing)
  end
end