Действия

SBS. Руководство пользователя: различия между версиями

Материал из Флора AI

(параметр мультиспикеров в sbs)
 
(не показано 27 промежуточных версий 3 участников)
Строка 5: Строка 5:


===== '''Термины и определения''' =====
===== '''Термины и определения''' =====
Simple Biometry Server (SBS) - сервис извлечения метаданных.
Simple Biometry Server (SBS) сервис извлечения метаданных.
 
Swagger UI — интерактивная веб-консоль с кратким описанием методов API и возможностью выполнять запросы к сервису SBS.


Swagger UI – интерактивная  веб-консоль с кратким описанием методов АPI и возможностью выполнять запросы к сервису SBS.




Строка 15: Строка 16:
Авторизация запросов не требуется. HTTP-запросы должны содержать заголовок <code>"accept: application/json"</code>
Авторизация запросов не требуется. HTTP-запросы должны содержать заголовок <code>"accept: application/json"</code>


Ответ сервиса представляет собой JSON-документ в кодировке UTF-8 или двоичный файл. Содержимое документа зависит от результата выполнения запроса. При наличии ошибки в качестве ответа вернется переменная error=1 и описание в переменной message. Для удобства проверки методов по ссылке <nowiki>http://АДРЕС:6185</nowiki> будет отображен интерфейс swagger со всеми методами с возможностью их проверки. Модель может содержать постобработчик. Это стандартный файл на языке Python, который выполняет произвольные действия с результатом работы модели. Обязательным условием является наличие функции handler, которая должна возвращать данные такого же вида, как и метод GET /sbs/entities/{id}.
Ответ сервиса представляет собой JSON-документ в кодировке UTF-8 или двоичный файл. Содержимое документа зависит от результата выполнения запроса. При наличии ошибки в качестве ответа вернется переменная error=1 и описание в переменной message. Для удобства проверки методов по ссылке <nowiki>http://АДРЕС:6185</nowiki> будет отображен интерфейс Swagger со всеми методами с возможностью их проверки.  


Пример пустой функции:


<code>def handler(entities=[],text=""):</code>
{| class="wikitable" style="width: 110%"
|+''Описание методов API''
!style="color:green;width: 15%" |'''POST/sbs/analyze'''
! colspan="3" style="width: 85%" |<small>Получение аналитических метаданных из голосового фрагмента. Вернется массив с метаданными голосового фрагмента.</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''wav''' —  файл для анализа.</small>
| colspan="2" style="width: 50%" |<small>Пример:</small>
<code><small>{</small></code>


<code>  returns entities</code>
  <<age: {
    class: 20-29, # {"00-05", "06-12", "13-19", "20-29", "30-39", "40-49", "50-59", "60+"}
    confidence: 0.99
  },
  emotion: {
    class: SADNESS, # { "ANGER", "BORE", "DISAPPOINTMENT", "DISGUST", "EXCITEMENT", "FEAR",


На вход подается результат работы модели, а также начальный текст.
<<"NEUTRAL", "PAIN", "PLEASURE", "SADNESS", "SUPRISE"}
    confidence: 0.99
  },
  gender: {
    class: FEMALE, # { "MALE", "FEMALE" }
    confidence: 0.99
  },


  multispeaker : {


    class: YES, # { "YES", "NO" }


{| class="wikitable" style="width: 110%"
    confidence: 0.99
|+Описание методов API
 
!style="color:green;width: 15%" |'''POST/sbs/analyze'''
  }
! colspan="3" style="width: 85%" |Получение аналитических метаданных из голосового фрагмента <small>Вернется массив с метаданными голосового фрагмента.</small>
 
<code><small>}</small></code>
|-
! style="color:green;width: 15%" |'''POST/sbs/noiselevel'''
! colspan="3" |<small>Возвращает процент зашумленности аудио</small>
|-
|-
| colspan="2" style="width: 50%" |
| colspan="2" |  
* <small>'''wav''' - файл для анализа</small>
*<small>'''wav''' —  файл для анализа</small>
| colspan="2" style="width: 50%" |<small>Пример:</small>
| colspan="2" |<small>Пример ответа:</small>
<small><code>{</code> <code>age: {</code>    <code>class: 20-29,</code> <code>confidence: 0.99</code>  <code>},</code> <code>emotion: {</code>    <code>class: SADNESS,</code> <code>confidence: 0.99</code>  <code>},</code> <code>gender: {</code>    <code>class: FEMALE,</code> <code>confidence: 0.99</code>  <code>}</code> <code>}</code></small>


* <small>'''age''' - возраст</small>
<small><code>{ error: 0, message: 'success', 'noise': 0.79 }</code></small>
** <small>00-05</small>
** <small>06-12</small>
** <small>13-19</small>
** <small>20-29</small>
** <small>30-39</small>
** <small>40-49</small>
** <small>50-59</small>
** <small>60+</small>
* <small>'''emotion''' - эмоция</small>
** <small>ANGER</small>
** <small>BORE</small>
** <small>DISAPPOINTMENT</small>
** <small>DISGUST</small>
** <small>EXCITEMENT</small>
** <small>FEAR</small>
** <small>NEUTRAL</small>
** <small>PAIN</small>
** <small>PLEASURE</small>
** <small>SADNESS</small>
** <small>SUPRISE</small>
* <small>'''gender''' - пол</small>
** <small>MALE</small>
** <small>FEMALE</small>
|-
|-
!style="color:green;width: 15%" |'''POST/sbs/search'''
! style="color:green;width: 15%" |'''POST/sbs/search'''
! colspan="3" style="width: 85%" |Получение аналитических метаданных из голосового фрагмента
! colspan="3" style="width: 85%" |<small>Поиск говорящего по базе слепков.</small>
|-
|-
| colspan="2" style="width: 50%" |
| colspan="2" style="width: 50%" |
* <small>'''wav''' - файл для анализа</small>
* <small>'''wav''' —  файл для анализа</small>
* <small>'''threshold''' - процент совпадения</small>
*<small>'''threshold''' —  порог совпадения спикера, от 0 до 1</small>
*<small>'''text''' —  текст для сравнения с распознанным текстом из '''wav''', необязательный параметр. Если указан, то поиск не будет осуществлен, если распознанный текст будет сильно отличаться от '''text.'''</small>
*'''<small>textSimilarity</small>''' - <small>порог похожести текста и распознанного аудио</small>
| colspan="2" style="width: 50%" |<small>Пример ответа:</small>
| colspan="2" style="width: 50%" |<small>Пример ответа:</small>


<small>{ error: 0, speaker: Ivan, confidence: 0.79 }</small>  
<small><code>{ error: 0, speaker: Ivan, confidence: 0.79 }</code></small>
|-
|-
!style="color:green;width: 15%" |'''POST/sbs/verify/{id}'''
! style="color:green;width: 15%" |'''POST/sbs/verify/{id}'''
! colspan="3" style="width: 85%" |Поиск говорящего по базе слепков
! colspan="3" style="width: 85%" |<small>Сравнение wav-файла cо слепком в базе. В ответе - вероятность совпадения от 0 до 1.</small>
|-
|-
| colspan="2" style="width: 50%" |
| colspan="2" style="width: 50%" |
* <small>'''wav''' - файл для анализа</small>
*<small>'''wav''' —  файл для поиска</small>
* <small>'''threshold''' - процент совпадения</small>
*<small>'''id''' —  идентификатор говорящего</small>
| colspan="2" style="width: 50%" |<small>Пример ответа:</small>
*<small>'''text''' —  текст для сравнения с распознанным текстом из '''wav''', необязательный параметр. Если указан, но слепок не будет проверен, если распознанный текст будет сильно отличаться от '''text.'''</small>
<small>{ error: 0, speaker: Ivan, confidence: 0.79 }</small>  
*'''<small>textSimilarity</small>''' - <small>порог похожести текста и распознанного аудио</small>
| colspan="2" style="width: 50%" | <code><small>{ "error": 0, "confidence": 0.78 }</small></code>
|-
|-
!style="color:green;width: 15%" |'''POST/sbs/speakers/add{id}'''
! style="color:green;width: 15%" |'''POST/sbs/speakers/add'''
! colspan="3" style="width: 85%" |Добавление слепка в базу.  
! colspan="3" style="width: 85%" |<small>Добавление слепка в базу.</small>
|-
|-
| colspan="2" style="width: 50%" |
| colspan="2" style="width: 50%" |
* <small>'''name''' - имя говорящего</small>
*<small>'''name''' —  имя говорящего</small>
* <small>'''wav''' - файл для создания оцифрованного представления говорящего</small>
*<small>'''wav''' —  файл для создания оцифрованного представления говорящего</small>
| colspan="2" style="width: 50%" |<small>{</small>
*<small>'''text''' —  текст для сравнения с распознанным текстом из '''wav''', необязательный параметр. Если указан, но слепок не будет создан, если распознанный текст будет сильно отличаться от '''text.'''</small>
*'''<small>textSimilarity</small>''' - <small>порог похожести текста и распознанного аудио</small>
| colspan="2" style="width: 50%" |<small><code>{</code></small>


<small>  "error": 0,</small>
<small><code>  "error": 0,</code></small>


<small>  "id": "251f78d7-ee50-4ba1-a669-ee89fdaf5433"</small>
<small><code>  "id": "251f78d7-ee50-4ba1-a669-ee89fdaf5433"</code></small>


<small>}</small>  
<small><code>}</code></small>
|-
|-
!style="color:green;width: 15%" |'''DELETE/sbs/speakers/delete/{id}'''
! style="color:red;width: 15%" |'''DELETE/sbs/speakers/delete/{id}'''
! colspan="3" style="width: 85%" |Удаление слепка из базы  
! colspan="3" style="width: 85%" |<small>Удаление слепка из базы.</small>
|-
|-
| colspan="2" style="width: 50%" |
| colspan="2" style="width: 50%" |  
* <small>'''id''' - идентификатор говорящего</small>
*<small>'''id''' —  идентификатор говорящего</small>
| colspan="2" style="width: 50%" |<small>{ error: INT, message: DESCRIPTION }</small>
| colspan="2" style="width: 50%" |<small><code>{ error: INT, message: DESCRIPTION }</code></small>
|-
|-
!style="color:green;width: 15%" |'''GET/sbs/speakers/list'''
! style="color:blue;width: 15%" |'''GET/sbs/speakers/list'''
! colspan="3" style="width: 85%" |Получение списка всех слепков  
! colspan="3" style="width: 85%" |<small>Получение списка всех слепков.</small>
|-
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| colspan="2" style="width: 50%" |<small>[</small>
| colspan="2" style="width: 50%" |<small><code>[</code></small>
<small>  {</small>
<small><code>  {</code></small>


<small>    "id": "251f78d7-ee50-4ba1-a669-ee89fdaf5433",</small>
<small><code>    "id": "251f78d7-ee50-4ba1-a669-ee89fdaf5433",</code></small>


<small>    "name": "наименование слепка"</small>
<small><code>    "name": "наименование слепка"</code></small>


<small>  }</small>
<small><code>  }</code></small>


<small>]</small>  
<small><code>]</code></small>
|-
|-
!style="color:green;width: 15%" |'''POST/sbs/speakers/modify/{id}'''
! style="color:green;width: 15%" |'''POST/sbs/speakers/modify/{id}'''
! colspan="3" style="width: 85%" |Дообучение слепка  
! colspan="3" style="width: 85%" |<small>Дообучение слепка.</small>
|-
|-
| colspan="2" style="width: 50%" |
| colspan="2" style="width: 50%" |
* <small>'''wav''' - файл для обучения</small>
*<small>'''wav''' —  файл для обучения</small>
 
* <small>'''id''' - идентификатор слепка</small>
| colspan="2" style="width: 50%" |<small>{</small>
<small>  "error": 0,</small>
 
<small>  "message": "Success"</small>
 
<small>}</small>
|}
 
 
 
{| class="wikitable"
|+
!Метод
!Тип
!Описание
!Входные параметры
!Ответ
|-
|/sbs/analyze/{id}
|POST
|Получение аналитических метаданных из голосового фрагмента
|
* '''wav''' - файл для анализа
|Вернется массив с метаданными голосового фрагмента. Пример:
<code>{</code>
<code>age: {</code>   
<code>class: 20-29,</code>
<code>confidence: 0.99</code> 
<code>},</code>
<code>emotion: {</code>   
<code>class: SADNESS,</code>
<code>confidence: 0.99</code> 
<code>},</code>
<code>gender: {</code>   
<code>class: FEMALE,</code>
<code>confidence: 0.99</code> 
<code>}</code>
<code>}</code>
 
* '''age''' - возраст
** 00-05
** 06-12
** 13-19
** 20-29
** 30-39
** 40-49
** 50-59
** 60+
* '''emotion''' - эмоция
** ANGER
** BORE
** DISAPPOINTMENT
** DISGUST
** EXCITEMENT
** FEAR
** NEUTRAL
** PAIN
** PLEASURE
** SADNESS
** SUPRISE
* '''gender''' - пол
** MALE
** FEMALE
|-
|/sbs/search/{id}
|POST
|Поиск говорящего по базе слепков
|
* '''wav''' - файл для анализа
* '''threshold''' - процент совпадения
|Пример ответа:
<code>{</code> 
<code>error: 0,</code>
<code>speaker: Ivan,</code> 
<code>confidence: 0.79</code>
<code>}</code>
|-
|/sbs/verify/{id}
|POST
|Сравнение  wav-файла cо слепком в базе
|
* '''id''' - идентификатор говорящего
* '''wav''' - файл звукового отрезка
|<code>{</code>
 
<code>"error": 0,</code>
 
<code>"confidence": 0.78</code>
 
<code>}</code>
|-
|/sbs/speakers/add
|POST
|Добавление слепка в базу.
|
* '''name''' - имя говорящего
* '''wav''' - файл для создания оцифрованного представления говорящего
|{
 
  "error": 0,
 
  "id": "251f78d7-ee50-4ba1-a669-ee89fdaf5433"
 
}
|-
|/sbs/speakers/delete/{id}
|DELETE
|Удаление слепка из базы
|
* '''id''' - идентификатор говорящего
|<code>{ error: INT, message: DESCRIPTION }</code>
|-
|/sbs/speakers/list
|GET
|Получение списка всех слепков
|'''-'''
|[
 
  {
 
    "id": "251f78d7-ee50-4ba1-a669-ee89fdaf5433",
 
    "name": "наименование слепка"
 
  }
 
]
|-
|/sbs/speakers/modify/{id}
|POST
|Дообучение слепка
|
* '''wav''' - файл для обучения
 
* '''id''' - идентификатор слепка
|{


  "error": 0,
*<small>'''id''' '''—'''  идентификатор слепка</small>
*<small>'''text''' —  текст для сравнения с распознанным текстом из '''wav''', необязательный параметр. Если указан, то слепок не будет дообучен, если распознанный текст будет сильно отличаться от '''text.'''</small>
*'''<small>textSimilarity</small>''' - <small>порог похожести текста и распознанного аудио</small>
| colspan="2" style="width: 50%" |<small><code>{</code></small>
<small><code>  "error": 0,</code></small>


  "message": "Success"
<small><code>  "message": "Success"</code></small>


}
<small><code>}</code></small>
|}
|}

Текущая версия от 11:46, 27 августа 2025

Общее описание

Сервис Simple Biometry Server предназначен для извлечения именованных сущностей из текстовых фрагментов (фраз естественной речи). Принимает на вход текстовую строку и возвращает структурированные данные в формате JSON.


Термины и определения

Simple Biometry Server (SBS) — сервис извлечения метаданных.

Swagger UI — интерактивная веб-консоль с кратким описанием методов API и возможностью выполнять запросы к сервису SBS.


Описание методов API сервиса биометрии (SBS)

Запросы осуществляются по протоколу HTTP 1.1 на адрес сервера с доступным сервисом SBS. По умолчанию используется порт 6185/tcp.

Авторизация запросов не требуется. HTTP-запросы должны содержать заголовок "accept: application/json"

Ответ сервиса представляет собой JSON-документ в кодировке UTF-8 или двоичный файл. Содержимое документа зависит от результата выполнения запроса. При наличии ошибки в качестве ответа вернется переменная error=1 и описание в переменной message. Для удобства проверки методов по ссылке http://АДРЕС:6185 будет отображен интерфейс Swagger со всеми методами с возможностью их проверки.


Описание методов API
POST/sbs/analyze Получение аналитических метаданных из голосового фрагмента. Вернется массив с метаданными голосового фрагмента.
  • wav — файл для анализа.
Пример:
{
 <<age: {
   class: 20-29, # {"00-05", "06-12", "13-19", "20-29", "30-39", "40-49", "50-59", "60+"}
   confidence: 0.99
 },
 emotion: {
   class: SADNESS, # { "ANGER", "BORE", "DISAPPOINTMENT", "DISGUST", "EXCITEMENT", "FEAR", 
<<"NEUTRAL", "PAIN", "PLEASURE", "SADNESS", "SUPRISE"}
   confidence: 0.99
 },
 gender: {
   class: FEMALE, # { "MALE", "FEMALE" }
   confidence: 0.99
 },
 multispeaker : {
   class: YES, # { "YES", "NO" }
   confidence: 0.99
 }
}
POST/sbs/noiselevel Возвращает процент зашумленности аудио
  • wav — файл для анализа
Пример ответа:

{ error: 0, message: 'success', 'noise': 0.79 }

POST/sbs/search Поиск говорящего по базе слепков.
  • wav — файл для анализа
  • threshold — порог совпадения спикера, от 0 до 1
  • text — текст для сравнения с распознанным текстом из wav, необязательный параметр. Если указан, то поиск не будет осуществлен, если распознанный текст будет сильно отличаться от text.
  • textSimilarity - порог похожести текста и распознанного аудио
Пример ответа:

{ error: 0, speaker: Ivan, confidence: 0.79 }

POST/sbs/verify/{id} Сравнение wav-файла cо слепком в базе. В ответе - вероятность совпадения от 0 до 1.
  • wav — файл для поиска
  • id — идентификатор говорящего
  • text — текст для сравнения с распознанным текстом из wav, необязательный параметр. Если указан, но слепок не будет проверен, если распознанный текст будет сильно отличаться от text.
  • textSimilarity - порог похожести текста и распознанного аудио
{ "error": 0, "confidence": 0.78 }
POST/sbs/speakers/add Добавление слепка в базу.
  • name — имя говорящего
  • wav — файл для создания оцифрованного представления говорящего
  • text — текст для сравнения с распознанным текстом из wav, необязательный параметр. Если указан, но слепок не будет создан, если распознанный текст будет сильно отличаться от text.
  • textSimilarity - порог похожести текста и распознанного аудио
{

  "error": 0,

  "id": "251f78d7-ee50-4ba1-a669-ee89fdaf5433"

}

DELETE/sbs/speakers/delete/{id} Удаление слепка из базы.
  • id — идентификатор говорящего
{ error: INT, message: DESCRIPTION }
GET/sbs/speakers/list Получение списка всех слепков.
Входные параметры отсутствуют [

  {

    "id": "251f78d7-ee50-4ba1-a669-ee89fdaf5433",

    "name": "наименование слепка"

  }

]

POST/sbs/speakers/modify/{id} Дообучение слепка.
  • wav — файл для обучения
  • id идентификатор слепка
  • text — текст для сравнения с распознанным текстом из wav, необязательный параметр. Если указан, то слепок не будет дообучен, если распознанный текст будет сильно отличаться от text.
  • textSimilarity - порог похожести текста и распознанного аудио
{

  "error": 0,

  "message": "Success"

}