Действия

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

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

Нет описания правки
Нет описания правки
Строка 55: Строка 55:
! colspan="4" |<small>Удаление модели</small>  
! colspan="4" |<small>Удаление модели</small>  
|-
|-
|<small>/spr/data/{id}</small>
| colspan="3" |<small>id - идентификатор модели</small>
|<small>DELETE</small>
| colspan="2" |<small>{ error: INT, message: DESCRIPTION }</small>
|<small>Удаление модели</small>
|<small>id - идентификатор модели</small>
|<code><small>{ error: INT, message: DESCRIPTION }</small></code>
|-
|-
|<small>/spr/queue</small>
!'''GET:/spr/queue'''
|<small>GET</small>
! colspan="4" |<small>Получение очереди отложенных заданий на распознавание</small>
|<small>Получение очереди отложенных заданий на распознавание</small>
|-
| <small>-</small>
| colspan="3" |<small>Без входных параметров</small>
|<code><small>{
| colspan="2" |{
  "id задания": {
 
    "created": "ХХХХ-ХХ-ХХ ХХ:ХХ:ХХ",
  "id задания": {
    "status": "waiting",
 
    "filename": "wav"
   "created": "ХХХХ-ХХ-ХХ ХХ:ХХ:ХХ",
  }


   "status": "waiting",


   "filename": "wav"


</small>
}


<small>}</code> 
} Статусы
Статусы</small>


<small>'''ready''' - готово</small>
ready - готово


<small>'''waiting''' - ожидание</small>
waiting - ожидание


<small>'''failed''' - сбой</small>
failed - сбой
|-
|-
|<small>/spr/queue/{taskID}</small>
!'''DELETE:/spr/queue/{taskID}'''
|<small>DELETE</small>
! colspan="4" |<small>Удаление отложенных заданий на распознавание</small>
|<small>Удаление отложенных заданий на распознавание</small>
|-
|<small>taskID - идентификатор задания в очереди</small>
| colspan="3" |<small>taskID - идентификатор задания в очереди</small>
|<small>{
| colspan="2" |{


"error": 0,
"error": 0,
Строка 95: Строка 92:
"message": "success"
"message": "success"


}</small>
}
|-
|-
|<small>/spr/stt/{id}</small>
!'''POST:/spr/stt/{id}'''
|<small>POST</small>
! colspan="4" |<small>Отправка файла на распознавание речи. Моно-файлы до 30 секунд распознаются без разбивки на фрагменты. Многоканальные файлы и файлы длиннее 30 секунд предварительно разбиваются на фрагменты по отсутствию речи. Настройка данных параметров описана в [[SPR. Руководство администратора.|руководстве администратора]].</small>  
|<small>Отправка файла на распознавание речи. Моно-файлы до 30 секунд распознаются без разбивки на фрагменты. Многоканальные файлы и файлы длиннее 30 секунд предварительно разбиваются на фрагменты по отсутствию речи. Настройка данных параметров описана в [[SPR. Руководство администратора.|руководстве администратора]]. В случае отправки переменной speakers=1, дополнительно производится поиск говорящих и получение метаданных по каждому говорящему. (используется сервис sbs с предварительно обученными слепками метаданных говорящих) В случае отправки переменной punctuation=1, дополнительно вызывает метод punctuate в SMC, и расставляет знаки препинания в распознанном тексте (значение по умолчанию берётся из файлы конфигурации). normalization=1 для обратной нормализации текста.</small> <small>В случае использования модели big параметры punctuation и normalization игнорируются - модель всегда расставляет знаки препинания и нормализует текст.</small>
|-
| colspan="3" |
* <small>'''id''' - идентификатор модели</small>


* <small>'''denoise''' - уровень шумоподавления</small>


* <small>'''wav''' - файл для распознавания</small>


<small>При установке параметра toxicity запрашивается в smc метод GET/smc/toxicity</small>
* <small>'''speakers''' - опция разделения по говорящим</small>


<small>Высказывание анализируется по 4 параметрам, по каждому выдается вероятность от 0 до 1:</small>
* <small>'''punctuation''' - опция для расставления знаков препинания</small>
 
* <small>'''normalization''' - опция обратной нормализации текста</small>
 
* <small>'''vad''' - используемый VAD, по умолчанию webrtc</small>
 
* <small>'''preset''' - используемая модель для vad = neuro</small>


<small>"оскорбление": 0.13,</small>
* <small>'''toxicity''' - анализировать распознанный текст на токсичность</small>


<small>"непристойность": 0,</small>
* <small>'''emotion''' - выявить эмоции из распознанного текста</small>


<small>"угроза": 0,</small>
* <small>'''voice_analyzer''' - анализировать аудиофрагменты каждого из говорящих на эмоции, возраст и пол</small>


<small>"вежливость": 0.53</small>
* <small>'''speaker_counter''' - количество докладчиков, по умолчанию - 0, автоматическое определение количества</small>


* <small>'''async''' - отложенный_запуск_распознавания</small>


<small>При установке параметра emotion запрашивается в smc метод GET/smc/emotion</small>


<small>Высказывание анализируется на эмоциональность (negative, neutral, positive)</small>


<small>В случае отправки переменной '''speakers=1''', дополнительно производится поиск говорящих и получение метаданных по каждому говорящему. (используется сервис sbs с предварительно обученными слепками метаданных говорящих) В случае отправки переменной punctuation=1, дополнительно вызывает метод punctuate в SMC, и расставляет знаки препинания в распознанном тексте (значение по умолчанию берётся из файлы конфигурации). normalization=1 для обратной нормализации текста.</small> <small>В случае использования модели big параметры punctuation и normalization игнорируются - модель всегда расставляет знаки препинания и нормализует текст.</small>


<small>При установке параметра voice_analyzer запрашивается в sbs метод POST/sbs/analyze.</small>


<small>Аудио говорящего анализируется на возраст (child adult old)</small>


<small>эмоции (ANGER BORE DISAPPOINTMENT DISGUST EXCITEMENT FEAR NEUTRAL PAIN PLEASURE SADNESS SUPRISE)</small>
<small>При установке параметра '''toxicity''' запрашивается в smc метод GET/smc/toxicity</small>


<small>пол (male female)</small>
<small>Высказывание анализируется по 4 параметрам, по каждому выдается вероятность от 0 до 1:</small>


|<small>'''id''' - идентификатор модели</small>
<small>"оскорбление": 0.13,</small>


<small>'''denoise''' - уровень шумоподавления</small>
<small>"непристойность": 0,</small>


<small>'''wav''' - файл для распознавания</small>
<small>"угроза": 0,</small>


<small>'''speakers''' - опция разделения по говорящим</small>
<small>"вежливость": 0.53</small>


<small>'''punctuation''' - опция для расставления знаков препинания</small>


<small>'''normalization''' - опция обратной нормализации текста</small>
<small>При установке параметра '''emotion''' запрашивается в smc метод GET/smc/emotion</small>


<small>'''vad''' - используемый VAD, по умолчанию webrtc</small>
<small>Высказывание анализируется на эмоциональность (negative, neutral, positive)</small>


<small>'''preset''' - используемая модель для vad = neuro</small>


<small>'''toxicity''' - анализировать распознанный текст на токсичность</small>  
<small>При установке параметра '''voice_analyzer''' запрашивается в sbs метод POST/sbs/analyze.</small>


<small>'''emotion''' - выявить эмоции из распознанного текста</small>
<small>Аудио говорящего анализируется на возраст (child adult old)</small>  


<small>'''voice_analyzer''' - анализировать аудиофрагменты каждого из говорящих на эмоции, возраст и пол</small>
<small>эмоции (ANGER BORE DISAPPOINTMENT DISGUST EXCITEMENT FEAR NEUTRAL PAIN PLEASURE SADNESS SUPRISE)</small>


<small>'''speaker_counter''' - количество докладчиков, по умолчанию - 0, автоматическое определение количества</small>
<small>пол (male female)</small>
| colspan="2" |в случае async=1 возвращается только taskID, результат по taskID смотреть в методе /spr/result.для коротких файлов:{


<small>'''async''' - отложенный_запуск_распознавания</small>
  "model": "call",
|<small>в случае '''async'''=1 возвращается только taskID, результат по taskID смотреть в методе /spr/result.</small><small>для коротких файлов:</small><small>{</small>
<small>  "model": "call",</small>


<small>  "text": "текст фрагментв",</small>
  "text": "текст фрагментв",


<small>  "words": [</small>
  "words": [


<small>    {</small>
    {


<small>      "word": "текст",</small>
      "word": "текст",


<small>      "start": 520,</small>
      "start": 520,


<small>      "stop": 1240</small>
      "stop": 1240


<small>    },</small>
    },


<small>    {</small>
    {


<small>      "word": "фрагмента",</small>
      "word": "фрагмента",


<small>      "start": 1240,</small>
      "start": 1240,


<small>      "stop": 1920</small>
      "stop": 1920


<small>    } ]</small>
    } ]


<small>}</small>
}


для транскрибации больших файлов ответ состоит из нескольких списков
для транскрибации больших файлов ответ состоит из нескольких списков


<small>1) "speakers": [</small>
1) "speakers": [


<small>    {</small>
    {


<small>      "id": null,</small>
      "id": null,


<small>      "duration": 18980,</small>
      "duration": 18980,


<small>      "fragments": 3,</small>
      "fragments": 3,


<small>      "age": "old",</small>
      "age": "old",


<small>      "gender": "female"</small>
      "gender": "female"


<small>    }] - параметры каждого говорящего, если voice_analyzer = 1, то будут отображены предположительные возраст и пол говорящего</small>
    }] - параметры каждого говорящего, если voice_analyzer = 1, то будут отображены предположительные возраст и пол говорящего


<small>2)  "splitted": [</small>
2)  "splitted": [


<small>    {</small>
    {


<small>      "start": "00:00:01.870",</small>
      "start": "00:00:01.870",


<small>      "text": "текст фрагмента",</small>
      "text": "текст фрагмента",


<small>      "words": [</small>
      "words": [


<small>        {</small>
        {


<small>          "word": "текст.",</small>
          "word": "текст.",


<small>          "start": 1870,</small>
          "start": 1870,


<small>          "stop": 2710,</small>
          "stop": 2710,


<small>          "confidence": 0.95263671875</small>
          "confidence": 0.95263671875


<small>        },</small>
        },


<small>        {</small>
        {


<small>          "word": "фрагмента,",</small>
          "word": "фрагмента,",


<small>          "start": 2730,</small>
          "start": 2730,


<small>          "stop": 3330,</small>
          "stop": 3330,


<small>          "confidence": 0.9986572265625</small>
          "confidence": 0.9986572265625


<small>        }</small>
        }


<small>      ],</small>
      ],


<small>      "stop": "00:00:05.510",</small>
      "stop": "00:00:05.510",


<small>      "channel": 0,</small>
      "channel": 0,


<small>      "duration": "00:00:03.640",</small>
      "duration": "00:00:03.640",


<small>      "start_ms": 1870,</small>
      "start_ms": 1870,


<small>      "stop_ms": 5510,</small>
      "stop_ms": 5510,


<small>      "duration_ms": 3640,</small>
      "duration_ms": 3640,


<small>      "speaker": 4,</small>
      "speaker": 4,


<small>      "speakerConfidence": 0.8699063646965216,</small>
      "speakerConfidence": 0.8699063646965216,


<small>      "toxicity": {</small>
      "toxicity": {


<small>        "insult": 0,</small>
        "insult": 0,


<small>        "obscenity": 0,</small>
        "obscenity": 0,


<small>        "threat": 0,</small>
        "threat": 0,


<small>        "politeness": 0.99</small>
        "politeness": 0.99


<small>      },</small>
      },


<small>      "emotion": {</small>
      "emotion": {


<small>        "neutral": -0.3315</small>
        "neutral": -0.3315


<small>      },</small>
      },


<small>      "voice_analysis": {</small>
      "voice_analysis": {


<small>        "emotion": {</small>
        "emotion": {


<small>          "class": "NEUTRAL",</small>
          "class": "NEUTRAL",


<small>          "confidence": 0.7554781436920166</small>
          "confidence": 0.7554781436920166


<small>        }</small>
        }


<small>      }</small>
      }


<small>    } ] - для каждой фразы отдельно целиком фраза, затем по словам, для каждого слова временные параметры и вероятность. Также при установке соответствующих параметров в 1 будут для каждой фразы выведены toxicity emotion voice_analysis.</small>
    } ] - для каждой фразы отдельно целиком фраза, затем по словам, для каждого слова временные параметры и вероятность. Также при установке соответствующих параметров в 1 будут для каждой фразы выведены toxicity emotion voice_analysis.
|-
|-
|<small>/spr/result/{taskID}</small>
|<small>/spr/result/{taskID}</small>

Версия от 15:50, 17 октября 2024

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

Сервис Short phrase recognizer предназначен для преобразования речи в текст. Принимает на вход аудиофайл в формате wav и возвращает структурированные данные в формате JSON.


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

Short Phrase Recognizer (SPR) - сервис распознавания речи.

Модель — предварительно обученная специализированная нейронная сеть для распознавания естественной речи в аудиозаписях.

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

 

Описание методов API SPR

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

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

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

GET:/spr/ Вывод списка моделей
нет входных параметров { models: [model1,...,modelN] }
GET:/spr/audio/{taskID} Получение файла аудиозаписи отложенного задания
taskID - идентификатор задания Файл аудиозаписи или { error: INT , message: DESCRIPTION }
GET:/spr/data/{id} Получение архива модели
id - идентификатор модели ZIP-файл с моделью, либо { error: INT , message: DESCRIPTION }
POST:/spr/data/{id} Добавление модели. Может быть добавлена как из файла архива, так и переименованием существующей модели.
id - идентификатор модели, обязательный параметр.

zip-model - zip-архив с файлами модели

или

from-existing-model - название модели, которая должна перемещена на место id

{ error: INT, message: DESCRIPTION }
DELETE:/spr/data/{id} Удаление модели
id - идентификатор модели { error: INT, message: DESCRIPTION }
GET:/spr/queue Получение очереди отложенных заданий на распознавание
Без входных параметров {

  "id задания": {

   "created": "ХХХХ-ХХ-ХХ ХХ:ХХ:ХХ",

   "status": "waiting",

   "filename": "wav"

}

} Статусы

ready - готово

waiting - ожидание

failed - сбой

DELETE:/spr/queue/{taskID} Удаление отложенных заданий на распознавание
taskID - идентификатор задания в очереди {

"error": 0,

"message": "success"

}

POST:/spr/stt/{id} Отправка файла на распознавание речи. Моно-файлы до 30 секунд распознаются без разбивки на фрагменты. Многоканальные файлы и файлы длиннее 30 секунд предварительно разбиваются на фрагменты по отсутствию речи. Настройка данных параметров описана в руководстве администратора.
  • id - идентификатор модели
  • denoise - уровень шумоподавления
  • wav - файл для распознавания
  • speakers - опция разделения по говорящим
  • punctuation - опция для расставления знаков препинания
  • normalization - опция обратной нормализации текста
  • vad - используемый VAD, по умолчанию webrtc
  • preset - используемая модель для vad = neuro
  • toxicity - анализировать распознанный текст на токсичность
  • emotion - выявить эмоции из распознанного текста
  • voice_analyzer - анализировать аудиофрагменты каждого из говорящих на эмоции, возраст и пол
  • speaker_counter - количество докладчиков, по умолчанию - 0, автоматическое определение количества
  • async - отложенный_запуск_распознавания


В случае отправки переменной speakers=1, дополнительно производится поиск говорящих и получение метаданных по каждому говорящему. (используется сервис sbs с предварительно обученными слепками метаданных говорящих) В случае отправки переменной punctuation=1, дополнительно вызывает метод punctuate в SMC, и расставляет знаки препинания в распознанном тексте (значение по умолчанию берётся из файлы конфигурации). normalization=1 для обратной нормализации текста. В случае использования модели big параметры punctuation и normalization игнорируются - модель всегда расставляет знаки препинания и нормализует текст.


При установке параметра toxicity запрашивается в smc метод GET/smc/toxicity

Высказывание анализируется по 4 параметрам, по каждому выдается вероятность от 0 до 1:

"оскорбление": 0.13,

"непристойность": 0,

"угроза": 0,

"вежливость": 0.53


При установке параметра emotion запрашивается в smc метод GET/smc/emotion

Высказывание анализируется на эмоциональность (negative, neutral, positive)


При установке параметра voice_analyzer запрашивается в sbs метод POST/sbs/analyze.

Аудио говорящего анализируется на возраст (child adult old)

эмоции (ANGER BORE DISAPPOINTMENT DISGUST EXCITEMENT FEAR NEUTRAL PAIN PLEASURE SADNESS SUPRISE)

пол (male female)

в случае async=1 возвращается только taskID, результат по taskID смотреть в методе /spr/result.для коротких файлов:{

  "model": "call",

  "text": "текст фрагментв",

  "words": [

    {

      "word": "текст",

      "start": 520,

      "stop": 1240

    },

    {

      "word": "фрагмента",

      "start": 1240,

      "stop": 1920

    } ]

}

для транскрибации больших файлов ответ состоит из нескольких списков

1) "speakers": [

    {

      "id": null,

      "duration": 18980,

      "fragments": 3,

      "age": "old",

      "gender": "female"

    }] - параметры каждого говорящего, если voice_analyzer = 1, то будут отображены предположительные возраст и пол говорящего

2)  "splitted": [

    {

      "start": "00:00:01.870",

      "text": "текст фрагмента",

      "words": [

        {

          "word": "текст.",

          "start": 1870,

          "stop": 2710,

          "confidence": 0.95263671875

        },

        {

          "word": "фрагмента,",

          "start": 2730,

          "stop": 3330,

          "confidence": 0.9986572265625

        }

      ],

      "stop": "00:00:05.510",

      "channel": 0,

      "duration": "00:00:03.640",

      "start_ms": 1870,

      "stop_ms": 5510,

      "duration_ms": 3640,

      "speaker": 4,

      "speakerConfidence": 0.8699063646965216,

      "toxicity": {

        "insult": 0,

        "obscenity": 0,

        "threat": 0,

        "politeness": 0.99

      },

      "emotion": {

        "neutral": -0.3315

      },

      "voice_analysis": {

        "emotion": {

          "class": "NEUTRAL",

          "confidence": 0.7554781436920166

        }

      }

    } ] - для каждой фразы отдельно целиком фраза, затем по словам, для каждого слова временные параметры и вероятность. Также при установке соответствующих параметров в 1 будут для каждой фразы выведены toxicity emotion voice_analysis.

/spr/result/{taskID} GET Получение результата отложенного распознавания taskID - идентификатор задания Вывод по окончанию распознавания аналогичен выводу метода stt + добавлено поле status, которое содержит информацию о статусе отложенной задачи:

ready - готово waiting - ожидание not found - не найдена failed - сбой

/spr/waveform/{taskID} GET Служебный метод для отображения аудио в графическом виде, содержит пики сигнала taskID - идентификатор задания {
 <"error": 0,
 "waveform": [
   0.016,
  ..........
  ..........
   0.015,
   0.01
 ]

}