diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1835e8e6071a3d293ff7f09eb52a67266e550fc2..0855240488d39cd46eba980116b6e3293c680225 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -51,3 +51,13 @@ mypy:
     # paths: [gl-code-quality-report.json]
     reports:
       codequality: gl-code-quality-report.json
+
+pages:
+  image: ruby:2.7
+  script:
+    - gem install bundler
+    - bundle install
+    - bundle exec jekyll build -d public
+  artifacts:
+    paths:
+      - public
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000000000000000000000000000000000000..c99d6dd1146f031725734b03b147dcc37043f790
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,3 @@
+source "https://rubygems.org"
+
+gem "jekyll"
diff --git a/public/index.html b/public/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..f247e185c7cb4f2bdcd8c38d0b2b74f32b2a3310
--- /dev/null
+++ b/public/index.html
@@ -0,0 +1,2134 @@
+<!doctype html>
+<html>
+  <head>
+    <title>FastAPI</title>
+    <style type="text/css">
+      body {
+      	font-family: Trebuchet MS, sans-serif;
+      	font-size: 15px;
+      	color: #444;
+      	margin-right: 24px;
+      }
+      
+      h1	{
+      	font-size: 25px;
+      }
+      h2	{
+      	font-size: 20px;
+      }
+      h3	{
+      	font-size: 16px;
+      	font-weight: bold;
+      }
+      hr	{
+      	height: 1px;
+      	border: 0;
+      	color: #ddd;
+      	background-color: #ddd;
+      }
+      
+      .app-desc {
+        clear: both;
+        margin-left: 20px;
+      }
+      .param-name {
+        width: 100%;
+      }
+      .license-info {
+        margin-left: 20px;
+      }
+      
+      .license-url {
+        margin-left: 20px;
+      }
+      
+      .model {
+        margin: 0 0 0px 20px;
+      }
+      
+      .method {
+        margin-left: 20px;
+      }
+      
+      .method-notes	{
+      	margin: 10px 0 20px 0;
+      	font-size: 90%;
+      	color: #555;
+      }
+      
+      pre {
+        padding: 10px;
+        margin-bottom: 2px;
+      }
+      
+      .http-method {
+       text-transform: uppercase;
+      }
+      
+      pre.get {
+        background-color: #0f6ab4;
+      }
+      
+      pre.post {
+        background-color: #10a54a;
+      }
+      
+      pre.put {
+        background-color: #c5862b;
+      }
+      
+      pre.delete {
+        background-color: #a41e22;
+      }
+      
+      .huge	{
+      	color: #fff;
+      }
+      
+      pre.example {
+        background-color: #f3f3f3;
+        padding: 10px;
+        border: 1px solid #ddd;
+      }
+      
+      code {
+        white-space: pre;
+      }
+      
+      .nickname {
+        font-weight: bold;
+      }
+      
+      .method-path {
+        font-size: 1.5em;
+        background-color: #0f6ab4;
+      }
+      
+      .up {
+        float:right;
+      }
+      
+      .parameter {
+        width: 500px;
+      }
+      
+      .param {
+        width: 500px;
+        padding: 10px 0 0 20px;
+        font-weight: bold;
+      }
+      
+      .param-desc {
+        width: 700px;
+        padding: 0 0 0 20px;
+        color: #777;
+      }
+      
+      .param-type {
+        font-style: italic;
+      }
+      
+      .param-enum-header {
+      width: 700px;
+      padding: 0 0 0 60px;
+      color: #777;
+      font-weight: bold;
+      }
+      
+      .param-enum {
+      width: 700px;
+      padding: 0 0 0 80px;
+      color: #777;
+      font-style: italic;
+      }
+      
+      .field-label {
+        padding: 0;
+        margin: 0;
+        clear: both;
+      }
+      
+      .field-items	{
+      	padding: 0 0 15px 0;
+      	margin-bottom: 15px;
+      }
+      
+      .return-type {
+        clear: both;
+        padding-bottom: 10px;
+      }
+      
+      .param-header {
+        font-weight: bold;
+      }
+      
+      .method-tags {
+        text-align: right;
+      }
+      
+      .method-tag {
+        background: none repeat scroll 0% 0% #24A600;
+        border-radius: 3px;
+        padding: 2px 10px;
+        margin: 2px;
+        color: #FFF;
+        display: inline-block;
+        text-decoration: none;
+      }
+    </style>
+  </head>
+  <body>
+  <h1>FastAPI</h1>
+    <div class="app-desc">No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)</div>
+    <div class="app-desc">More information: <a href="https://helloreverb.com">https://helloreverb.com</a></div>
+    <div class="app-desc">Contact Info: <a href="hello@helloreverb.com">hello@helloreverb.com</a></div>
+    <div class="app-desc">Version: 0.1.0</div>
+    
+    <div class="license-info">All rights reserved</div>
+    <div class="license-url">http://apache.org/licenses/LICENSE-2.0.html</div>
+  <h2>Access</h2>
+    <ol>
+      <li>OAuth AuthorizationUrl:TokenUrl:/v1/auth/token</li>
+    </ol>
+
+  <h2><a name="__Methods">Methods</a></h2>
+  [ Jump to <a href="#__Models">Models</a> ]
+
+  <h3>Table of Contents </h3>
+  <div class="method-summary"></div>
+  <h4><a href="#Audio">Audio</a></h4>
+  <ul>
+  <li><a href="#downloadAudioFileV1AudioDownloadGet"><code><span class="http-method">get</span> /v1/audio/download</code></a></li>
+  <li><a href="#extractTextFromAudioV1AudioExtractTaskPost"><code><span class="http-method">post</span> /v1/audio/extract/task</code></a></li>
+  <li><a href="#getAudioProcessingModelsV1AudioModelsGet"><code><span class="http-method">get</span> /v1/audio/models</code></a></li>
+  <li><a href="#getExtractedResultsV1AudioExtractResultGet"><code><span class="http-method">get</span> /v1/audio/extract/result</code></a></li>
+  <li><a href="#getResponseV1AudioProcessResultGet"><code><span class="http-method">get</span> /v1/audio/process/result</code></a></li>
+  <li><a href="#processAudioV1AudioProcessTaskPost"><code><span class="http-method">post</span> /v1/audio/process/task</code></a></li>
+  <li><a href="#uploadAudioFileV1AudioUploadPost"><code><span class="http-method">post</span> /v1/audio/upload</code></a></li>
+  </ul>
+  <h4><a href="#Auth">Auth</a></h4>
+  <ul>
+  <li><a href="#loginForAccessTokenV1AuthTokenPost"><code><span class="http-method">post</span> /v1/auth/token</code></a></li>
+  <li><a href="#readUsersMeV1AuthUsersMeGet"><code><span class="http-method">get</span> /v1/auth/users/me</code></a></li>
+  <li><a href="#registerUserV1AuthRegisterPut"><code><span class="http-method">put</span> /v1/auth/register</code></a></li>
+  </ul>
+  <h4><a href="#Comparison">Comparison</a></h4>
+  <ul>
+  <li><a href="#compareAudioToImageV1ComparisonAudioImageTaskPost"><code><span class="http-method">post</span> /v1/comparison/audio/image/task</code></a></li>
+  <li><a href="#compareAudioToTextV1ComparisonAudioTextTaskPost"><code><span class="http-method">post</span> /v1/comparison/audio/text/task</code></a></li>
+  <li><a href="#getAudioImageComparisonResultV1ComparisonAudioImageResultGet"><code><span class="http-method">get</span> /v1/comparison/audio/image/result</code></a></li>
+  <li><a href="#getAudioTextComparisonResultV1ComparisonAudioTextResultGet"><code><span class="http-method">get</span> /v1/comparison/audio/text/result</code></a></li>
+  </ul>
+  <h4><a href="#Image">Image</a></h4>
+  <ul>
+  <li><a href="#downloadImageFileV1ImageDownloadGet"><code><span class="http-method">get</span> /v1/image/download</code></a></li>
+  <li><a href="#getModelsV1ImageModelsGet"><code><span class="http-method">get</span> /v1/image/models</code></a></li>
+  <li><a href="#getResponseV1ImageProcessResultGet"><code><span class="http-method">get</span> /v1/image/process/result</code></a></li>
+  <li><a href="#processImageV1ImageProcessTaskPost"><code><span class="http-method">post</span> /v1/image/process/task</code></a></li>
+  <li><a href="#uploadImageV1ImageUploadPost"><code><span class="http-method">post</span> /v1/image/upload</code></a></li>
+  </ul>
+  <h4><a href="#Task">Task</a></h4>
+  <ul>
+  <li><a href="#getJobResultV1TaskResultGet"><code><span class="http-method">get</span> /v1/task/result</code></a></li>
+  <li><a href="#getJobStatusV1TaskStatusGet"><code><span class="http-method">get</span> /v1/task/status</code></a></li>
+  </ul>
+
+  <h1><a name="Audio">Audio</a></h1>
+  <div class="method"><a name="downloadAudioFileV1AudioDownloadGet"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="get"><code class="huge"><span class="http-method">get</span> /v1/audio/download</code></pre></div>
+    <div class="method-summary">The endpoint <code>/download</code> allows to download audio file by given uuid. (<span class="nickname">downloadAudioFileV1AudioDownloadGet</span>)</div>
+    <div class="method-notes"><p>The endpoint <code>/download</code> takes a file UUID as input, checks if the file exists in the
+audio directory, and returns the file as bytes (<code>.mp3</code> format). If file does not exist, returns 404 HTTP response code</p>
+<p>Responses:</p>
+<ul>
+<li>200, file bytes (<code>.mp3</code> format)</li>
+</ul>
+</div>
+
+
+
+
+
+    <h3 class="field-label">Query parameters</h3>
+    <div class="field-items">
+      <div class="param">file (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Query Parameter</span> &mdash;  format: uuid</div>    </div>  <!-- field-items -->
+
+
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Successful Response
+        <a href="#"></a>
+    <h4 class="field-label">404</h4>
+    The specified file was not found.
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;File not found&quot;}</code></pre>
+    <h4 class="field-label">422</h4>
+    Validation Error
+        <a href="#HTTPValidationError">HTTPValidationError</a>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="extractTextFromAudioV1AudioExtractTaskPost"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="post"><code class="huge"><span class="http-method">post</span> /v1/audio/extract/task</code></pre></div>
+    <div class="method-summary">The endpoint <code>/split</code> extract specified phrases from given audio
+file using specified given audio model (<span class="nickname">extractTextFromAudioV1AudioExtractTaskPost</span>)</div>
+    <div class="method-notes"><p>Parameters:</p>
+<ul>
+<li><strong>audio_file</strong>: an uuid of file to process</li>
+<li><strong>audio_model</strong>: an audio processing model name (check '<em>/models</em>' for available models)</li>
+</ul>
+<p>Responses:</p>
+<ul>
+<li>404, No such audio file available</li>
+<li>404, No such audio model available</li>
+</ul>
+</div>
+
+
+    <h3 class="field-label">Consumes</h3>
+    This API call consumes the following media types via the <span class="header">Content-Type</span> request header:
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Request body</h3>
+    <div class="field-items">
+      <div class="param">body <a href="#AudioExtractPhrasesRequest">AudioExtractPhrasesRequest</a> (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Body Parameter</span> &mdash;  </div>
+                </div>  <!-- field-items -->
+
+
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#TaskCreateResponse">TaskCreateResponse</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "task_id" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Task was successfully created and scheduled
+        <a href="#TaskCreateResponse">TaskCreateResponse</a>
+    <h4 class="field-label">404</h4>
+    The specified file or model was not found.
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;No such audio file available&quot;}</code></pre>
+    <h4 class="field-label">422</h4>
+    Validation Error
+        <a href="#HTTPValidationError">HTTPValidationError</a>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="getAudioProcessingModelsV1AudioModelsGet"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="get"><code class="huge"><span class="http-method">get</span> /v1/audio/models</code></pre></div>
+    <div class="method-summary">The endpoint /models returns available (loaded) audio models. (<span class="nickname">getAudioProcessingModelsV1AudioModelsGet</span>)</div>
+    <div class="method-notes">Returns list of models, which are loaded into the worker and available for usage.</div>
+
+
+
+
+
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#ModelsDataReponse">ModelsDataReponse</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "models" : [ {
+    "languages" : [ "languages", "languages" ],
+    "name" : "name",
+    "description" : "description"
+  }, {
+    "languages" : [ "languages", "languages" ],
+    "name" : "name",
+    "description" : "description"
+  } ]
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    List of available models
+        <a href="#ModelsDataReponse">ModelsDataReponse</a>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="getExtractedResultsV1AudioExtractResultGet"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="get"><code class="huge"><span class="http-method">get</span> /v1/audio/extract/result</code></pre></div>
+    <div class="method-summary">The endpoint <code>/result</code> retrieves the result of an audio
+extracting task from task system and returns it. (<span class="nickname">getExtractedResultsV1AudioExtractResultGet</span>)</div>
+    <div class="method-notes"></div>
+
+
+
+
+
+    <h3 class="field-label">Query parameters</h3>
+    <div class="field-items">
+      <div class="param">task_id (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Query Parameter</span> &mdash;  format: uuid</div>    </div>  <!-- field-items -->
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#AudioExtractPhrasesResponse">AudioExtractPhrasesResponse</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "data" : [ {
+    "audio_segment" : {
+      "file" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
+      "start" : 0.8008281904610115,
+      "end" : 6.027456183070403,
+      "text" : "text"
+    },
+    "found" : true,
+    "phrase" : "phrase"
+  }, {
+    "audio_segment" : {
+      "file" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
+      "start" : 0.8008281904610115,
+      "end" : 6.027456183070403,
+      "text" : "text"
+    },
+    "found" : true,
+    "phrase" : "phrase"
+  } ]
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Successful Response
+        <a href="#AudioExtractPhrasesResponse">AudioExtractPhrasesResponse</a>
+    <h4 class="field-label">406</h4>
+    It is impossible to get task result (task does not exist or it has not finished yet).
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;The job is non-existent or not done&quot;}</code></pre>
+    <h4 class="field-label">422</h4>
+    The specified task is not audio extraction task.
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;There is no such audio extraction task&quot;}</code></pre>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="getResponseV1AudioProcessResultGet"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="get"><code class="huge"><span class="http-method">get</span> /v1/audio/process/result</code></pre></div>
+    <div class="method-summary">The endpoint <code>/result</code> retrieves the result of an audio
+processing task from task system and returns it. (<span class="nickname">getResponseV1AudioProcessResultGet</span>)</div>
+    <div class="method-notes"><p>Responses:</p>
+<ul>
+<li>200, returns a processing result in the format:</li>
+</ul>
+<pre><code class="language-js">{
+    &quot;text&quot;: &quot;string&quot;, // total extracted text
+    &quot;segments&quot;: [ // list of audio segments
+        {
+        &quot;start&quot;: 0.0, // absolute timecode (in seconds) of the beginning of the segment
+        &quot;end&quot;: 10.0,  // absolute timecode (in seconds) of the beginning of the segment
+        &quot;text&quot;: &quot;string&quot;, // text, which was extracted from the segment
+        &quot;file&quot;: &quot;3fa85f64-5717-4562-b3fc-2c963f66afa6&quot; // file uuid of the audio segment (for downloading)
+        }
+    ]
+}
+</code></pre>
+<ul>
+<li>406, is impossible to get task result (task does not exist or it has not finished yet).</li>
+<li>422, if the task was not created as audio processing task</li>
+</ul>
+</div>
+
+
+
+
+
+    <h3 class="field-label">Query parameters</h3>
+    <div class="field-items">
+      <div class="param">task_id (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Query Parameter</span> &mdash;  format: uuid</div>    </div>  <!-- field-items -->
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#AudioProcessingResponse">AudioProcessingResponse</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "text" : "text",
+  "segments" : [ {
+    "file" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
+    "start" : 0.8008281904610115,
+    "end" : 6.027456183070403,
+    "text" : "text"
+  }, {
+    "file" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
+    "start" : 0.8008281904610115,
+    "end" : 6.027456183070403,
+    "text" : "text"
+  } ]
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Successful Response
+        <a href="#AudioProcessingResponse">AudioProcessingResponse</a>
+    <h4 class="field-label">406</h4>
+    It is impossible to get task result (task does not exist or it has not finished yet).
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;The job is non-existent or not done&quot;}</code></pre>
+    <h4 class="field-label">422</h4>
+    The specified task is not audio processing task.
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;There is no such audio processing task&quot;}</code></pre>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="processAudioV1AudioProcessTaskPost"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="post"><code class="huge"><span class="http-method">post</span> /v1/audio/process/task</code></pre></div>
+    <div class="method-summary">The endpoint <code>/process</code> creates an audio processing task based on the given request parameters. (<span class="nickname">processAudioV1AudioProcessTaskPost</span>)</div>
+    <div class="method-notes"><p>Parameters:</p>
+<ul>
+<li><strong>audio_file</strong>: an uuid of file to process</li>
+<li><strong>audio_model</strong>: an audio processing model name (check '<em>/models</em>' for available models)</li>
+</ul>
+<p>Responses:</p>
+<ul>
+<li>404, No such audio file available</li>
+<li>404, No such audio model available</li>
+</ul>
+</div>
+
+
+    <h3 class="field-label">Consumes</h3>
+    This API call consumes the following media types via the <span class="header">Content-Type</span> request header:
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Request body</h3>
+    <div class="field-items">
+      <div class="param">body <a href="#AudioProcessingRequest">AudioProcessingRequest</a> (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Body Parameter</span> &mdash;  </div>
+                </div>  <!-- field-items -->
+
+
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#TaskCreateResponse">TaskCreateResponse</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "task_id" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Task was successfully created and scheduled
+        <a href="#TaskCreateResponse">TaskCreateResponse</a>
+    <h4 class="field-label">404</h4>
+    The specified file or model was not found.
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;No such audio file available&quot;}</code></pre>
+    <h4 class="field-label">422</h4>
+    Validation Error
+        <a href="#HTTPValidationError">HTTPValidationError</a>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="uploadAudioFileV1AudioUploadPost"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="post"><code class="huge"><span class="http-method">post</span> /v1/audio/upload</code></pre></div>
+    <div class="method-summary">The endpoint /upload allows clients to upload audio files and returns a unique file ID. (<span class="nickname">uploadAudioFileV1AudioUploadPost</span>)</div>
+    <div class="method-notes"><p>The endpoint validates file based on
+<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types">MIME types specification</a>.
+The endpoint converts audio file into <code>.mp3</code> format.</p>
+<p>Parameters:</p>
+<ul>
+<li><strong>upload_file</strong>: The audio file to upload</li>
+</ul>
+<p>List of the most important allowed extensions:</p>
+<ul>
+<li>.acc</li>
+<li>.mp3</li>
+<li>.m4a</li>
+<li>.oga, .ogv</li>
+<li>.ogg</li>
+<li>.opus</li>
+<li>.wav</li>
+</ul>
+</div>
+
+
+    <h3 class="field-label">Consumes</h3>
+    This API call consumes the following media types via the <span class="header">Content-Type</span> request header:
+    <ul>
+      <li><code>multipart/form-data</code></li>
+    </ul>
+
+
+
+
+    <h3 class="field-label">Form parameters</h3>
+    <div class="field-items">
+      <div class="param">upload_file (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Form Parameter</span> &mdash;  format: binary</div>    </div>  <!-- field-items -->
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#UploadFileResponse">UploadFileResponse</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "file_id" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    The file is uploaded successfully
+        <a href="#UploadFileResponse">UploadFileResponse</a>
+    <h4 class="field-label">422</h4>
+    The file was not sent or the file has unallowed extension
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;Only audio files uploads are allowed&quot;}</code></pre>
+  </div> <!-- method -->
+  <hr/>
+  <h1><a name="Auth">Auth</a></h1>
+  <div class="method"><a name="loginForAccessTokenV1AuthTokenPost"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="post"><code class="huge"><span class="http-method">post</span> /v1/auth/token</code></pre></div>
+    <div class="method-summary">The endpoint <code>/token</code> handles the login process and returns an
+access token for the authenticated user. (<span class="nickname">loginForAccessTokenV1AuthTokenPost</span>)</div>
+    <div class="method-notes"><p>Parameters:</p>
+<ul>
+<li><strong>username</strong> - unique username, which the client has provided while registering</li>
+<li><strong>password</strong> - client's password</li>
+</ul>
+<p>Responses:</p>
+<ul>
+<li>401, incorrect username or password</li>
+<li>200, token</li>
+</ul>
+</div>
+
+
+    <h3 class="field-label">Consumes</h3>
+    This API call consumes the following media types via the <span class="header">Content-Type</span> request header:
+    <ul>
+      <li><code>application/x-www-form-urlencoded</code></li>
+    </ul>
+
+
+
+
+    <h3 class="field-label">Form parameters</h3>
+    <div class="field-items">
+      <div class="param">grant_type (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Form Parameter</span> &mdash;  </div>      <div class="param">username (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Form Parameter</span> &mdash;  </div>      <div class="param">password (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Form Parameter</span> &mdash;  </div>      <div class="param">scope (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Form Parameter</span> &mdash;  </div>      <div class="param">client_id (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Form Parameter</span> &mdash;  </div>      <div class="param">client_secret (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Form Parameter</span> &mdash;  </div>    </div>  <!-- field-items -->
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#Token">Token</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "access_token" : "access_token",
+  "token_type" : "token_type"
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Successful Response
+        <a href="#Token">Token</a>
+    <h4 class="field-label">401</h4>
+    Incorrect username or password.
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;Incorrect username or password&quot;}</code></pre>
+    <h4 class="field-label">422</h4>
+    Validation Error
+        <a href="#HTTPValidationError">HTTPValidationError</a>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="readUsersMeV1AuthUsersMeGet"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="get"><code class="huge"><span class="http-method">get</span> /v1/auth/users/me</code></pre></div>
+    <div class="method-summary">The endpoint <code>/users/me</code> returns the current user. (<span class="nickname">readUsersMeV1AuthUsersMeGet</span>)</div>
+    <div class="method-notes"></div>
+
+
+
+
+
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#User">User</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "full_name" : "full_name",
+  "disabled" : true,
+  "email" : "email",
+  "username" : "username"
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Successful Response
+        <a href="#User">User</a>
+    <h4 class="field-label">400</h4>
+    User is inactive
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;Inactive user&quot;}</code></pre>
+    <h4 class="field-label">401</h4>
+    Could not validate credentials
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;Could not validate credentials&quot;}</code></pre>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="registerUserV1AuthRegisterPut"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="put"><code class="huge"><span class="http-method">put</span> /v1/auth/register</code></pre></div>
+    <div class="method-summary">The endpoint <code>/register</code> registers a new user by storing their username, password, email, and
+full name in a Redis database. (<span class="nickname">registerUserV1AuthRegisterPut</span>)</div>
+    <div class="method-notes"><p>Parameters:</p>
+<ul>
+<li><strong>username</strong>: The &quot;username: parameter is a string representing the username of the user being registered</li>
+<li><strong>password</strong>: The &quot;password&quot; parameter is a string that represents the user's password</li>
+<li><strong>email</strong>: The &quot;email&quot; parameter is an optional string that represents the email address of the user</li>
+<li><strong>full_name</strong>: The &quot;full_name&quot; parameter is an optional parameter that represents the full name of the user</li>
+</ul>
+</div>
+
+
+
+
+
+    <h3 class="field-label">Query parameters</h3>
+    <div class="field-items">
+      <div class="param">username (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Query Parameter</span> &mdash;  </div>      <div class="param">password (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Query Parameter</span> &mdash;  </div>      <div class="param">email (optional)</div>
+      
+            <div class="param-desc"><span class="param-type">Query Parameter</span> &mdash;  </div>      <div class="param">full_name (optional)</div>
+      
+            <div class="param-desc"><span class="param-type">Query Parameter</span> &mdash;  </div>    </div>  <!-- field-items -->
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#RegisterResponse">RegisterResponse</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "text" : "text"
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Successful Response
+        <a href="#RegisterResponse">RegisterResponse</a>
+    <h4 class="field-label">422</h4>
+    The specified username is already taken
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;Username is already taken&quot;}</code></pre>
+  </div> <!-- method -->
+  <hr/>
+  <h1><a name="Comparison">Comparison</a></h1>
+  <div class="method"><a name="compareAudioToImageV1ComparisonAudioImageTaskPost"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="post"><code class="huge"><span class="http-method">post</span> /v1/comparison/audio/image/task</code></pre></div>
+    <div class="method-summary">The endpoint <code>/audio/image</code> creates a task to compare an audio against image file using specified
+models and returns the task ID. (<span class="nickname">compareAudioToImageV1ComparisonAudioImageTaskPost</span>)</div>
+    <div class="method-notes"><p>Parameters:</p>
+<ul>
+<li><strong>audio_file</strong>: an uuid of file to process</li>
+<li><strong>audio_model</strong>: an audio processing model name (check '<em>/audio/models</em>' for available models)</li>
+<li><strong>image_file</strong>: an uuid of file to process</li>
+<li><strong>image_model</strong>: an image processing model name (check '<em>/image/models</em>' for available models)</li>
+</ul>
+<p>Responses:</p>
+<ul>
+<li>200, Task created</li>
+<li>404, No such audio file available</li>
+<li>404, No such audio model available</li>
+<li>404, No such image file available</li>
+<li>404, No such image model available</li>
+</ul>
+</div>
+
+
+    <h3 class="field-label">Consumes</h3>
+    This API call consumes the following media types via the <span class="header">Content-Type</span> request header:
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Request body</h3>
+    <div class="field-items">
+      <div class="param">body <a href="#AudioToImageComparisonRequest">AudioToImageComparisonRequest</a> (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Body Parameter</span> &mdash;  </div>
+                </div>  <!-- field-items -->
+
+
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#TaskCreateResponse">TaskCreateResponse</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "task_id" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Task was successfully created and scheduled
+        <a href="#TaskCreateResponse">TaskCreateResponse</a>
+    <h4 class="field-label">404</h4>
+    The specified file or model was not found.
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;No such image model available&quot;}</code></pre>
+    <h4 class="field-label">422</h4>
+    Validation Error
+        <a href="#HTTPValidationError">HTTPValidationError</a>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="compareAudioToTextV1ComparisonAudioTextTaskPost"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="post"><code class="huge"><span class="http-method">post</span> /v1/comparison/audio/text/task</code></pre></div>
+    <div class="method-summary">The endpoint '/audio/text' creates a task to compare audio against text from user input
+using specified models and returns the task ID. (<span class="nickname">compareAudioToTextV1ComparisonAudioTextTaskPost</span>)</div>
+    <div class="method-notes"><p>Parameters:</p>
+<ul>
+<li><strong>audio_file</strong>: an uuid of file to process</li>
+<li><strong>audio_model</strong>: an audio processing model name (check '<em>/audio/models</em>' for available models)</li>
+<li><strong>text</strong>: a list of strings to compare audio against</li>
+</ul>
+<p>Responses:</p>
+<ul>
+<li>200, Task created</li>
+<li>404, No such audio file available</li>
+<li>404, No such audio model available</li>
+</ul>
+</div>
+
+
+    <h3 class="field-label">Consumes</h3>
+    This API call consumes the following media types via the <span class="header">Content-Type</span> request header:
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Request body</h3>
+    <div class="field-items">
+      <div class="param">body <a href="#AudioToTextComparisonRequest">AudioToTextComparisonRequest</a> (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Body Parameter</span> &mdash;  </div>
+                </div>  <!-- field-items -->
+
+
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#TaskCreateResponse">TaskCreateResponse</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "task_id" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Task was successfully created and scheduled
+        <a href="#TaskCreateResponse">TaskCreateResponse</a>
+    <h4 class="field-label">404</h4>
+    The specified file or model was not found.
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;No such audio model available&quot;}</code></pre>
+    <h4 class="field-label">422</h4>
+    Validation Error
+        <a href="#HTTPValidationError">HTTPValidationError</a>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="getAudioImageComparisonResultV1ComparisonAudioImageResultGet"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="get"><code class="huge"><span class="http-method">get</span> /v1/comparison/audio/image/result</code></pre></div>
+    <div class="method-summary">The endpoint <code>/audio/image/result</code> retrieves the results of a task with a given task ID, and returns the
+results. (<span class="nickname">getAudioImageComparisonResultV1ComparisonAudioImageResultGet</span>)</div>
+    <div class="method-notes"><p>Parameters:</p>
+<ul>
+<li><strong>task_id</strong>: The <code>task_id</code> is the uuid of the task to fetch results of</li>
+</ul>
+<p>Responses:</p>
+<ul>
+<li>200, job results in the format</li>
+</ul>
+<pre><code class="language-js">{
+&quot;image&quot;: { // image proccessing result
+    &quot;text&quot;: &quot;string&quot;, // total extracted text
+    &quot;boxes&quot;: [ // list of boxes with text
+    {
+        &quot;text&quot;: &quot;string&quot;, // text extracted from the box
+        &quot;coordinates&quot;: { // coordinates of the box on the image
+        &quot;left_top&quot;: { // four points defining a rectangle
+            &quot;x&quot;: 0,
+            &quot;y&quot;: 0
+        },
+        &quot;right_top&quot;: {
+            &quot;x&quot;: 0,
+            &quot;y&quot;: 0
+        },
+        &quot;left_bottom&quot;: {
+            &quot;x&quot;: 0,
+            &quot;y&quot;: 0
+        },
+        &quot;right_bottom&quot;: {
+            &quot;x&quot;: 0,
+            &quot;y&quot;: 0
+        }
+        }
+    }
+    ]
+},
+&quot;audio&quot;: { // audio processing results
+    &quot;text&quot;: &quot;string&quot;, // total extracted text
+    &quot;segments&quot;: [ // audio segments, that were processed
+    {
+        &quot;start&quot;: 0, // absolute time code of the beginning of the segment
+        &quot;end&quot;: 0, // absolute time code of the ending of the segment
+        &quot;text&quot;: &quot;string&quot;, // text extracted from the segment
+        &quot;file&quot;: &quot;3fa85f64-5717-4562-b3fc-2c963f66afa6&quot; // audio segment
+    }
+    ]
+},
+&quot;errors&quot;: [ // results of comparing
+    {
+    &quot;audio_segment&quot;: { // audio segment where error was made
+        &quot;start&quot;: 0,
+        &quot;end&quot;: 0,
+        &quot;text&quot;: &quot;string&quot;,
+        &quot;file&quot;: &quot;3fa85f64-5717-4562-b3fc-2c963f66afa6&quot;
+    },
+    &quot;at_char&quot;: 0, // chat, at which an error stats
+    &quot;found&quot;: &quot;string&quot;, // found word (based on audio)
+    &quot;expected&quot;: &quot;string&quot; // exptected word (suggetion for improvement based on image)
+    }
+]
+}
+</code></pre>
+<ul>
+<li>406, Results are not ready yet or no task with such id exist</li>
+<li>422, There is no such audio processing task</li>
+</ul>
+</div>
+
+
+
+
+
+    <h3 class="field-label">Query parameters</h3>
+    <div class="field-items">
+      <div class="param">task_id (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Query Parameter</span> &mdash;  format: uuid</div>    </div>  <!-- field-items -->
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#AudioImageComparisonResultsResponse">AudioImageComparisonResultsResponse</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "image" : {
+    "boxes" : [ {
+      "coordinates" : {
+        "left_top" : {
+          "x" : 0,
+          "y" : 6
+        }
+      },
+      "text" : "text"
+    }, {
+      "coordinates" : {
+        "left_top" : {
+          "x" : 0,
+          "y" : 6
+        }
+      },
+      "text" : "text"
+    } ],
+    "text" : "text"
+  },
+  "audio" : {
+    "text" : "text",
+    "segments" : [ {
+      "file" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
+      "start" : 0.8008281904610115,
+      "end" : 6.027456183070403,
+      "text" : "text"
+    }, {
+      "file" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
+      "start" : 0.8008281904610115,
+      "end" : 6.027456183070403,
+      "text" : "text"
+    } ]
+  },
+  "errors" : [ {
+    "audio_segment" : {
+      "file" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
+      "start" : 0.8008281904610115,
+      "end" : 6.027456183070403,
+      "text" : "text"
+    },
+    "found" : "found",
+    "at_char" : 0,
+    "expected" : "expected"
+  }, {
+    "audio_segment" : {
+      "file" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
+      "start" : 0.8008281904610115,
+      "end" : 6.027456183070403,
+      "text" : "text"
+    },
+    "found" : "found",
+    "at_char" : 0,
+    "expected" : "expected"
+  } ]
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Successful Response
+        <a href="#AudioImageComparisonResultsResponse">AudioImageComparisonResultsResponse</a>
+    <h4 class="field-label">406</h4>
+    It is impossible to get task result (task does not exist or it has not finished yet).
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;Results are not ready yet or no task with such id exist&quot;}</code></pre>
+    <h4 class="field-label">422</h4>
+    There is no such task consists of the both image and audio.
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;There is no such task consists of the both image and audio&quot;}</code></pre>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="getAudioTextComparisonResultV1ComparisonAudioTextResultGet"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="get"><code class="huge"><span class="http-method">get</span> /v1/comparison/audio/text/result</code></pre></div>
+    <div class="method-summary">The endpoint <code>/audio/text/result</code> retrieves the results of a task with a given task ID, and returns the
+results. (<span class="nickname">getAudioTextComparisonResultV1ComparisonAudioTextResultGet</span>)</div>
+    <div class="method-notes"><p>Parameters:</p>
+<ul>
+<li><strong>task_id</strong>: The <code>task_id</code> is the uuid of the task to fetch results of</li>
+</ul>
+<p>Responses:</p>
+<ul>
+<li>200, job results in the format</li>
+</ul>
+<pre><code class="language-js">{
+&quot;audio&quot;: { // audio processing results
+    &quot;text&quot;: &quot;string&quot;, // total extracted text
+    &quot;segments&quot;: [ // audio segments, that were processed
+    {
+        &quot;start&quot;: 0, // absolute time code of the beginning of the segment
+        &quot;end&quot;: 0, // absolute time code of the ending of the segment
+        &quot;text&quot;: &quot;string&quot;, // text extracted from the segment
+        &quot;file&quot;: &quot;3fa85f64-5717-4562-b3fc-2c963f66afa6&quot; // audio segment
+    }
+    ]
+},
+&quot;errors&quot;: [ // results of comparing
+    {
+    &quot;audio_segment&quot;: { // audio segment where error was made
+        &quot;start&quot;: 0,
+        &quot;end&quot;: 0,
+        &quot;text&quot;: &quot;string&quot;,
+        &quot;file&quot;: &quot;3fa85f64-5717-4562-b3fc-2c963f66afa6&quot;
+    },
+    &quot;at_char&quot;: 0, // chat, at which an error stats
+    &quot;found&quot;: &quot;string&quot;, // found word (based on audio)
+    &quot;expected&quot;: &quot;string&quot; // exptected word (suggetion for improvement based on text)
+    }
+]
+}
+</code></pre>
+<ul>
+<li>406, Results are not ready yet or no task with such id exist</li>
+<li>422, There is no such audio processing task</li>
+</ul>
+</div>
+
+
+
+
+
+    <h3 class="field-label">Query parameters</h3>
+    <div class="field-items">
+      <div class="param">task_id (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Query Parameter</span> &mdash;  format: uuid</div>    </div>  <!-- field-items -->
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#AudioTextComparisonResultsResponse">AudioTextComparisonResultsResponse</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "audio" : {
+    "text" : "text",
+    "segments" : [ {
+      "file" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
+      "start" : 0.8008281904610115,
+      "end" : 6.027456183070403,
+      "text" : "text"
+    }, {
+      "file" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
+      "start" : 0.8008281904610115,
+      "end" : 6.027456183070403,
+      "text" : "text"
+    } ]
+  },
+  "errors" : [ {
+    "audio_segment" : {
+      "file" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
+      "start" : 0.8008281904610115,
+      "end" : 6.027456183070403,
+      "text" : "text"
+    },
+    "found" : "found",
+    "at_char" : 0,
+    "expected" : "expected"
+  }, {
+    "audio_segment" : {
+      "file" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
+      "start" : 0.8008281904610115,
+      "end" : 6.027456183070403,
+      "text" : "text"
+    },
+    "found" : "found",
+    "at_char" : 0,
+    "expected" : "expected"
+  } ]
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Successful Response
+        <a href="#AudioTextComparisonResultsResponse">AudioTextComparisonResultsResponse</a>
+    <h4 class="field-label">406</h4>
+    It is impossible to get task result (task does not exist or it has not finished yet).
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;Results are not ready yet or no task with such id exist&quot;}</code></pre>
+    <h4 class="field-label">422</h4>
+    There is no such task consists of the both audio and text.
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;There is no such task consists of the both audio and text&quot;}</code></pre>
+  </div> <!-- method -->
+  <hr/>
+  <h1><a name="Image">Image</a></h1>
+  <div class="method"><a name="downloadImageFileV1ImageDownloadGet"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="get"><code class="huge"><span class="http-method">get</span> /v1/image/download</code></pre></div>
+    <div class="method-summary">The endpoint <code>/download</code> allows to download audio file by given uuid. (<span class="nickname">downloadImageFileV1ImageDownloadGet</span>)</div>
+    <div class="method-notes"><p>The endpoint <code>/download</code> takes a file UUID as input, checks if the file exists in the
+image directory, and returns the file as bytes. If file does not exist, returns 404 HTTP response code</p>
+<p>Responses:</p>
+<ul>
+<li>200, file bytes</li>
+</ul>
+</div>
+
+
+
+
+
+    <h3 class="field-label">Query parameters</h3>
+    <div class="field-items">
+      <div class="param">file (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Query Parameter</span> &mdash;  format: uuid</div>    </div>  <!-- field-items -->
+
+
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Successful Response
+        <a href="#"></a>
+    <h4 class="field-label">404</h4>
+    The specified file was not found.
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;File not found&quot;}</code></pre>
+    <h4 class="field-label">422</h4>
+    Validation Error
+        <a href="#HTTPValidationError">HTTPValidationError</a>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="getModelsV1ImageModelsGet"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="get"><code class="huge"><span class="http-method">get</span> /v1/image/models</code></pre></div>
+    <div class="method-summary">The endpoint /models returns available (loaded) image models. (<span class="nickname">getModelsV1ImageModelsGet</span>)</div>
+    <div class="method-notes">Returns list of models, which are loaded into the worker and available for usage.</div>
+
+
+
+
+
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#ModelsDataReponse">ModelsDataReponse</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "models" : [ {
+    "languages" : [ "languages", "languages" ],
+    "name" : "name",
+    "description" : "description"
+  }, {
+    "languages" : [ "languages", "languages" ],
+    "name" : "name",
+    "description" : "description"
+  } ]
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    List of available models
+        <a href="#ModelsDataReponse">ModelsDataReponse</a>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="getResponseV1ImageProcessResultGet"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="get"><code class="huge"><span class="http-method">get</span> /v1/image/process/result</code></pre></div>
+    <div class="method-summary">The endpoint <code>/result</code> retrieves the result of an image
+processing task from task system and returns it. (<span class="nickname">getResponseV1ImageProcessResultGet</span>)</div>
+    <div class="method-notes"><p>Responses:</p>
+<ul>
+<li>200, returns a processing result in the format:</li>
+</ul>
+<pre><code class="language-js">{
+    &quot;text&quot;: &quot;string&quot;, // total extracted text
+    &quot;boxes&quot;: [ // list of boxes with text
+        {
+        &quot;text&quot;: &quot;string&quot;, // text, which was extracted from the box
+        &quot;coordinates&quot;: { // coordinates of the box on image
+            &quot;left_top&quot;: { // four points defining the rectangle
+            &quot;x&quot;: 0,
+            &quot;y&quot;: 0
+            },
+            &quot;right_top&quot;: {
+            &quot;x&quot;: 0,
+            &quot;y&quot;: 0
+            },
+            &quot;left_bottom&quot;: {
+            &quot;x&quot;: 0,
+            &quot;y&quot;: 0
+            },
+            &quot;right_bottom&quot;: {
+            &quot;x&quot;: 0,
+            &quot;y&quot;: 0
+            }
+        }
+        }
+    ]
+}
+</code></pre>
+<ul>
+<li>406, is impossible to get task result (task does not exist or it has not finished yet).</li>
+<li>422, if the task was not created as audio processing task</li>
+</ul>
+</div>
+
+
+
+
+
+    <h3 class="field-label">Query parameters</h3>
+    <div class="field-items">
+      <div class="param">task_id (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Query Parameter</span> &mdash;  format: uuid</div>    </div>  <!-- field-items -->
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#ImageProcessingResponse">ImageProcessingResponse</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "boxes" : [ {
+    "coordinates" : {
+      "left_top" : {
+        "x" : 0,
+        "y" : 6
+      }
+    },
+    "text" : "text"
+  }, {
+    "coordinates" : {
+      "left_top" : {
+        "x" : 0,
+        "y" : 6
+      }
+    },
+    "text" : "text"
+  } ],
+  "text" : "text"
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Successful Response
+        <a href="#ImageProcessingResponse">ImageProcessingResponse</a>
+    <h4 class="field-label">406</h4>
+    It is impossible to get task result (task does not exist or it has not finished yet).
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;The job is non-existent or not done&quot;}</code></pre>
+    <h4 class="field-label">422</h4>
+    The specified task is not image processing task.
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;There is no such image processing task&quot;}</code></pre>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="processImageV1ImageProcessTaskPost"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="post"><code class="huge"><span class="http-method">post</span> /v1/image/process/task</code></pre></div>
+    <div class="method-summary">The endpoint <code>/process</code> creates an image processing task based on the given request parameters. (<span class="nickname">processImageV1ImageProcessTaskPost</span>)</div>
+    <div class="method-notes"><p>Parameters:</p>
+<ul>
+<li><strong>image_file</strong>: an uuid of file to process</li>
+<li><strong>image_model</strong>: an image processing model name (check '<em>/models</em>' for available models)</li>
+</ul>
+<p>Responses:</p>
+<ul>
+<li>404, No such image file available</li>
+<li>404, No such image model available</li>
+</ul>
+</div>
+
+
+    <h3 class="field-label">Consumes</h3>
+    This API call consumes the following media types via the <span class="header">Content-Type</span> request header:
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Request body</h3>
+    <div class="field-items">
+      <div class="param">body <a href="#ImageProcessingRequest">ImageProcessingRequest</a> (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Body Parameter</span> &mdash;  </div>
+                </div>  <!-- field-items -->
+
+
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#TaskCreateResponse">TaskCreateResponse</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "task_id" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Task was successfully created and scheduled
+        <a href="#TaskCreateResponse">TaskCreateResponse</a>
+    <h4 class="field-label">404</h4>
+    The specified file or model was not found.
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;No such image file available&quot;}</code></pre>
+    <h4 class="field-label">422</h4>
+    Validation Error
+        <a href="#HTTPValidationError">HTTPValidationError</a>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="uploadImageV1ImageUploadPost"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="post"><code class="huge"><span class="http-method">post</span> /v1/image/upload</code></pre></div>
+    <div class="method-summary">The endpoint /upload allows clients to upload image files and returns a unique file ID. (<span class="nickname">uploadImageV1ImageUploadPost</span>)</div>
+    <div class="method-notes"><p>The endpoint validates file based on
+<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types">MIME types specification</a>.
+The endpoint converts image file into .png format.</p>
+<p>Parameters:</p>
+<ul>
+<li><strong>upload_file</strong>: The file to upload</li>
+</ul>
+<p>Allowed extension:</p>
+<ul>
+<li>.avif</li>
+<li>.bmp</li>
+<li>.gif</li>
+<li>.ico</li>
+<li>.jpeg, .jpg</li>
+<li>.png</li>
+<li>.svg</li>
+<li>.tif, .tiff</li>
+<li>.webp</li>
+</ul>
+</div>
+
+
+    <h3 class="field-label">Consumes</h3>
+    This API call consumes the following media types via the <span class="header">Content-Type</span> request header:
+    <ul>
+      <li><code>multipart/form-data</code></li>
+    </ul>
+
+
+
+
+    <h3 class="field-label">Form parameters</h3>
+    <div class="field-items">
+      <div class="param">upload_file (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Form Parameter</span> &mdash;  format: binary</div>    </div>  <!-- field-items -->
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#UploadFileResponse">UploadFileResponse</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "file_id" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    The file is uploaded successfully
+        <a href="#UploadFileResponse">UploadFileResponse</a>
+    <h4 class="field-label">422</h4>
+    The file was not sent or the file has unallowed extension
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;Only image files uploads are allowed&quot;}</code></pre>
+  </div> <!-- method -->
+  <hr/>
+  <h1><a name="Task">Task</a></h1>
+  <div class="method"><a name="getJobResultV1TaskResultGet"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="get"><code class="huge"><span class="http-method">get</span> /v1/task/result</code></pre></div>
+    <div class="method-summary">The endpoint <code>/result</code> retrieves the results of a task with a given task ID, and returns the
+results. (<span class="nickname">getJobResultV1TaskResultGet</span>)</div>
+    <div class="method-notes"><p>Parameters:</p>
+<ul>
+<li><strong>task_id</strong>: The <code>task_id</code> is the uuid of the task to fetch results of</li>
+</ul>
+<p>Responses:</p>
+<ul>
+<li>200, job results</li>
+<li>406, Results are not ready yet or no task with such id exist</li>
+</ul>
+</div>
+
+
+
+
+
+    <h3 class="field-label">Query parameters</h3>
+    <div class="field-items">
+      <div class="param">task_id (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Query Parameter</span> &mdash;  format: uuid</div>    </div>  <!-- field-items -->
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      
+      Object
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{ }</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Successful Response
+        <a href="#Object">Object</a>
+    <h4 class="field-label">406</h4>
+    It is impossible to get task result (task does not exist or it has not finished yet).
+        <a href="#"></a>
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{&quot;detail&quot;:&quot;Results are not ready yet or no task with such id exist&quot;}</code></pre>
+    <h4 class="field-label">422</h4>
+    Validation Error
+        <a href="#HTTPValidationError">HTTPValidationError</a>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="getJobStatusV1TaskStatusGet"></a>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="get"><code class="huge"><span class="http-method">get</span> /v1/task/status</code></pre></div>
+    <div class="method-summary">The endpoint <code>status</code> returns the status of a task identified by its <code>task_id</code>. (<span class="nickname">getJobStatusV1TaskStatusGet</span>)</div>
+    <div class="method-notes"><p>Parameters:</p>
+<ul>
+<li><strong>task_id</strong>: The <code>task_id</code> is the uuid of the task to fetch status of</li>
+</ul>
+<p>Responses:</p>
+<ul>
+<li>200, Job status</li>
+</ul>
+</div>
+
+
+
+
+
+    <h3 class="field-label">Query parameters</h3>
+    <div class="field-items">
+      <div class="param">task_id (required)</div>
+      
+            <div class="param-desc"><span class="param-type">Query Parameter</span> &mdash;  format: uuid</div>    </div>  <!-- field-items -->
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#TaskStatusResponse">TaskStatusResponse</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "ready" : true,
+  "task_id" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
+  "status" : "status"
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="header">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Successful Response
+        <a href="#TaskStatusResponse">TaskStatusResponse</a>
+    <h4 class="field-label">422</h4>
+    Validation Error
+        <a href="#HTTPValidationError">HTTPValidationError</a>
+  </div> <!-- method -->
+  <hr/>
+
+  <h2><a name="__Models">Models</a></h2>
+  [ Jump to <a href="#__Methods">Methods</a> ]
+
+  <h3>Table of Contents</h3>
+  <ol>
+    <li><a href="#AudioChunk"><code>AudioChunk</code> - AudioChunk</a></li>
+    <li><a href="#AudioExtractPhrasesRequest"><code>AudioExtractPhrasesRequest</code> - AudioExtractPhrasesRequest</a></li>
+    <li><a href="#AudioExtractPhrasesResponse"><code>AudioExtractPhrasesResponse</code> - AudioExtractPhrasesResponse</a></li>
+    <li><a href="#AudioImageComparisonResultsResponse"><code>AudioImageComparisonResultsResponse</code> - AudioImageComparisonResultsResponse</a></li>
+    <li><a href="#AudioPhrase"><code>AudioPhrase</code> - AudioPhrase</a></li>
+    <li><a href="#AudioProcessingRequest"><code>AudioProcessingRequest</code> - AudioProcessingRequest</a></li>
+    <li><a href="#AudioProcessingResponse"><code>AudioProcessingResponse</code> - AudioProcessingResponse</a></li>
+    <li><a href="#AudioTextComparisonResultsResponse"><code>AudioTextComparisonResultsResponse</code> - AudioTextComparisonResultsResponse</a></li>
+    <li><a href="#AudioToImageComparisonRequest"><code>AudioToImageComparisonRequest</code> - AudioToImageComparisonRequest</a></li>
+    <li><a href="#AudioToTextComparisonRequest"><code>AudioToTextComparisonRequest</code> - AudioToTextComparisonRequest</a></li>
+    <li><a href="#Body_login_for_access_token_v1_auth_token_post"><code>Body_login_for_access_token_v1_auth_token_post</code> - Body_login_for_access_token_v1_auth_token_post</a></li>
+    <li><a href="#Body_upload_audio_file_v1_audio_upload_post"><code>Body_upload_audio_file_v1_audio_upload_post</code> - Body_upload_audio_file_v1_audio_upload_post</a></li>
+    <li><a href="#Body_upload_image_v1_image_upload_post"><code>Body_upload_image_v1_image_upload_post</code> - Body_upload_image_v1_image_upload_post</a></li>
+    <li><a href="#HTTPValidationError"><code>HTTPValidationError</code> - HTTPValidationError</a></li>
+    <li><a href="#IPRPoint"><code>IPRPoint</code> - IPRPoint</a></li>
+    <li><a href="#IPRRectangle"><code>IPRRectangle</code> - IPRRectangle</a></li>
+    <li><a href="#IPRTextBox"><code>IPRTextBox</code> - IPRTextBox</a></li>
+    <li><a href="#ImageProcessingRequest"><code>ImageProcessingRequest</code> - ImageProcessingRequest</a></li>
+    <li><a href="#ImageProcessingResponse"><code>ImageProcessingResponse</code> - ImageProcessingResponse</a></li>
+    <li><a href="#ModelData"><code>ModelData</code> - ModelData</a></li>
+    <li><a href="#ModelsDataReponse"><code>ModelsDataReponse</code> - ModelsDataReponse</a></li>
+    <li><a href="#RegisterResponse"><code>RegisterResponse</code> - RegisterResponse</a></li>
+    <li><a href="#TaskCreateResponse"><code>TaskCreateResponse</code> - TaskCreateResponse</a></li>
+    <li><a href="#TaskStatusResponse"><code>TaskStatusResponse</code> - TaskStatusResponse</a></li>
+    <li><a href="#TextDiff"><code>TextDiff</code> - TextDiff</a></li>
+    <li><a href="#Token"><code>Token</code> - Token</a></li>
+    <li><a href="#UploadFileResponse"><code>UploadFileResponse</code> - UploadFileResponse</a></li>
+    <li><a href="#User"><code>User</code> - User</a></li>
+    <li><a href="#ValidationError"><code>ValidationError</code> - ValidationError</a></li>
+  </ol>
+
+  <div class="model">
+    <h3><a name="AudioChunk"><code>AudioChunk</code> - AudioChunk</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">start </div><div class="param-desc"><span class="param-type"><a href="#BigDecimal">BigDecimal</a></span>  </div>
+<div class="param">end </div><div class="param-desc"><span class="param-type"><a href="#BigDecimal">BigDecimal</a></span>  </div>
+<div class="param">text </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">file </div><div class="param-desc"><span class="param-type"><a href="#UUID">UUID</a></span>  format: uuid</div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="AudioExtractPhrasesRequest"><code>AudioExtractPhrasesRequest</code> - AudioExtractPhrasesRequest</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">audio_file </div><div class="param-desc"><span class="param-type"><a href="#UUID">UUID</a></span>  format: uuid</div>
+<div class="param">audio_model </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">phrases </div><div class="param-desc"><span class="param-type"><a href="#string">array[String]</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="AudioExtractPhrasesResponse"><code>AudioExtractPhrasesResponse</code> - AudioExtractPhrasesResponse</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">data </div><div class="param-desc"><span class="param-type"><a href="#AudioPhrase">array[AudioPhrase]</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="AudioImageComparisonResultsResponse"><code>AudioImageComparisonResultsResponse</code> - AudioImageComparisonResultsResponse</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">image </div><div class="param-desc"><span class="param-type"><a href="#ImageProcessingResponse">ImageProcessingResponse</a></span>  </div>
+<div class="param">audio </div><div class="param-desc"><span class="param-type"><a href="#AudioProcessingResponse">AudioProcessingResponse</a></span>  </div>
+<div class="param">errors </div><div class="param-desc"><span class="param-type"><a href="#TextDiff">array[TextDiff]</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="AudioPhrase"><code>AudioPhrase</code> - AudioPhrase</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">audio_segment (optional)</div><div class="param-desc"><span class="param-type"><a href="#AudioChunk">AudioChunk</a></span>  </div>
+<div class="param">found </div><div class="param-desc"><span class="param-type"><a href="#boolean">Boolean</a></span>  </div>
+<div class="param">phrase </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="AudioProcessingRequest"><code>AudioProcessingRequest</code> - AudioProcessingRequest</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">audio_file </div><div class="param-desc"><span class="param-type"><a href="#UUID">UUID</a></span>  format: uuid</div>
+<div class="param">audio_model </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="AudioProcessingResponse"><code>AudioProcessingResponse</code> - AudioProcessingResponse</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">text </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">segments </div><div class="param-desc"><span class="param-type"><a href="#AudioChunk">array[AudioChunk]</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="AudioTextComparisonResultsResponse"><code>AudioTextComparisonResultsResponse</code> - AudioTextComparisonResultsResponse</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">audio </div><div class="param-desc"><span class="param-type"><a href="#AudioProcessingResponse">AudioProcessingResponse</a></span>  </div>
+<div class="param">errors </div><div class="param-desc"><span class="param-type"><a href="#TextDiff">array[TextDiff]</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="AudioToImageComparisonRequest"><code>AudioToImageComparisonRequest</code> - AudioToImageComparisonRequest</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">audio_file </div><div class="param-desc"><span class="param-type"><a href="#UUID">UUID</a></span>  format: uuid</div>
+<div class="param">image_file </div><div class="param-desc"><span class="param-type"><a href="#UUID">UUID</a></span>  format: uuid</div>
+<div class="param">audio_model </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">image_model </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="AudioToTextComparisonRequest"><code>AudioToTextComparisonRequest</code> - AudioToTextComparisonRequest</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">audio_file </div><div class="param-desc"><span class="param-type"><a href="#UUID">UUID</a></span>  format: uuid</div>
+<div class="param">text </div><div class="param-desc"><span class="param-type"><a href="#string">array[String]</a></span>  </div>
+<div class="param">audio_model </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="Body_login_for_access_token_v1_auth_token_post"><code>Body_login_for_access_token_v1_auth_token_post</code> - Body_login_for_access_token_v1_auth_token_post</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">grant_type (optional)</div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">username </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">password </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">scope (optional)</div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">client_id (optional)</div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">client_secret (optional)</div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="Body_upload_audio_file_v1_audio_upload_post"><code>Body_upload_audio_file_v1_audio_upload_post</code> - Body_upload_audio_file_v1_audio_upload_post</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">upload_file </div><div class="param-desc"><span class="param-type"><a href="#binary">byte[]</a></span>  format: binary</div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="Body_upload_image_v1_image_upload_post"><code>Body_upload_image_v1_image_upload_post</code> - Body_upload_image_v1_image_upload_post</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">upload_file </div><div class="param-desc"><span class="param-type"><a href="#binary">byte[]</a></span>  format: binary</div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="HTTPValidationError"><code>HTTPValidationError</code> - HTTPValidationError</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">detail (optional)</div><div class="param-desc"><span class="param-type"><a href="#ValidationError">array[ValidationError]</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="IPRPoint"><code>IPRPoint</code> - IPRPoint</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">x </div><div class="param-desc"><span class="param-type"><a href="#integer">Integer</a></span>  </div>
+<div class="param">y </div><div class="param-desc"><span class="param-type"><a href="#integer">Integer</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="IPRRectangle"><code>IPRRectangle</code> - IPRRectangle</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">left_top </div><div class="param-desc"><span class="param-type"><a href="#IPRPoint">IPRPoint</a></span>  </div>
+<div class="param">right_top </div><div class="param-desc"><span class="param-type"><a href="#IPRPoint">IPRPoint</a></span>  </div>
+<div class="param">left_bottom </div><div class="param-desc"><span class="param-type"><a href="#IPRPoint">IPRPoint</a></span>  </div>
+<div class="param">right_bottom </div><div class="param-desc"><span class="param-type"><a href="#IPRPoint">IPRPoint</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="IPRTextBox"><code>IPRTextBox</code> - IPRTextBox</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">text </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">coordinates </div><div class="param-desc"><span class="param-type"><a href="#IPRRectangle">IPRRectangle</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="ImageProcessingRequest"><code>ImageProcessingRequest</code> - ImageProcessingRequest</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">image_file </div><div class="param-desc"><span class="param-type"><a href="#UUID">UUID</a></span>  format: uuid</div>
+<div class="param">image_model </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="ImageProcessingResponse"><code>ImageProcessingResponse</code> - ImageProcessingResponse</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">text </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">boxes </div><div class="param-desc"><span class="param-type"><a href="#IPRTextBox">array[IPRTextBox]</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="ModelData"><code>ModelData</code> - ModelData</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">name </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">languages </div><div class="param-desc"><span class="param-type"><a href="#string">array[String]</a></span>  </div>
+<div class="param">description </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="ModelsDataReponse"><code>ModelsDataReponse</code> - ModelsDataReponse</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">models </div><div class="param-desc"><span class="param-type"><a href="#ModelData">array[ModelData]</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="RegisterResponse"><code>RegisterResponse</code> - RegisterResponse</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">text </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="TaskCreateResponse"><code>TaskCreateResponse</code> - TaskCreateResponse</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">task_id </div><div class="param-desc"><span class="param-type"><a href="#UUID">UUID</a></span>  format: uuid</div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="TaskStatusResponse"><code>TaskStatusResponse</code> - TaskStatusResponse</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">task_id </div><div class="param-desc"><span class="param-type"><a href="#UUID">UUID</a></span>  format: uuid</div>
+<div class="param">status </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">ready </div><div class="param-desc"><span class="param-type"><a href="#boolean">Boolean</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="TextDiff"><code>TextDiff</code> - TextDiff</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">audio_segment </div><div class="param-desc"><span class="param-type"><a href="#AudioChunk">AudioChunk</a></span>  </div>
+<div class="param">at_char </div><div class="param-desc"><span class="param-type"><a href="#integer">Integer</a></span>  </div>
+<div class="param">found </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">expected </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="Token"><code>Token</code> - Token</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">access_token </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">token_type </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="UploadFileResponse"><code>UploadFileResponse</code> - UploadFileResponse</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">file_id </div><div class="param-desc"><span class="param-type"><a href="#UUID">UUID</a></span>  format: uuid</div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="User"><code>User</code> - User</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">username </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">email (optional)</div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">full_name (optional)</div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">disabled (optional)</div><div class="param-desc"><span class="param-type"><a href="#boolean">Boolean</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="ValidationError"><code>ValidationError</code> - ValidationError</a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">loc </div><div class="param-desc"><span class="param-type"><a href="#">array[null]</a></span>  </div>
+              <div class="param-desc"><span class="param-type">items anyOf:</span>
+              </div>
+<div class="param">msg </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">type </div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  </body>
+</html>