SPR. Руководство пользователя: различия между версиями
Материал из Флора AI
Нет описания правки |
Нет описания правки |
||
| Строка 55: | Строка 55: | ||
! colspan="4" |<small>Удаление модели</small> | ! colspan="4" |<small>Удаление модели</small> | ||
|- | |- | ||
| | | colspan="3" |<small>id - идентификатор модели</small> | ||
| colspan="2" |<small>{ error: INT, message: DESCRIPTION }</small> | |||
|<small>id - идентификатор модели</small> | |||
| | |||
|- | |- | ||
!'''GET:/spr/queue''' | |||
! colspan="4" |<small>Получение очереди отложенных заданий на распознавание</small> | |||
|<small>Получение очереди отложенных заданий на распознавание</small> | |- | ||
| <small> | | colspan="3" |<small>Без входных параметров</small> | ||
| | | colspan="2" |{ | ||
"id задания": { | |||
"created": "ХХХХ-ХХ-ХХ ХХ:ХХ:ХХ", | |||
"status": "waiting", | |||
"filename": "wav" | |||
} | |||
} Статусы | |||
Статусы | |||
ready - готово | |||
waiting - ожидание | |||
failed - сбой | |||
|- | |- | ||
!'''DELETE:/spr/queue/{taskID}''' | |||
! colspan="4" |<small>Удаление отложенных заданий на распознавание</small> | |||
|<small>Удаление отложенных заданий на распознавание</small> | |- | ||
|<small>taskID - идентификатор задания в очереди</small> | | colspan="3" |<small>taskID - идентификатор задания в очереди</small> | ||
| | | colspan="2" |{ | ||
"error": 0, | "error": 0, | ||
| Строка 95: | Строка 92: | ||
"message": "success" | "message": "success" | ||
} | } | ||
|- | |- | ||
!'''POST:/spr/stt/{id}''' | |||
! colspan="4" |<small>Отправка файла на распознавание речи. Моно-файлы до 30 секунд распознаются без разбивки на фрагменты. Многоканальные файлы и файлы длиннее 30 секунд предварительно разбиваются на фрагменты по отсутствию речи. Настройка данных параметров описана в [[SPR. Руководство администратора.|руководстве администратора]].</small> | |||
|<small>Отправка файла на распознавание речи. Моно-файлы до 30 секунд распознаются без разбивки на фрагменты. Многоканальные файлы и файлы длиннее 30 секунд предварительно разбиваются на фрагменты по отсутствию речи. Настройка данных параметров описана в [[SPR. Руководство администратора.|руководстве администратора]] | |- | ||
| colspan="3" | | |||
* <small>'''id''' - идентификатор модели</small> | |||
* <small>'''denoise''' - уровень шумоподавления</small> | |||
* <small>'''wav''' - файл для распознавания</small> | |||
<small> | * <small>'''speakers''' - опция разделения по говорящим</small> | ||
<small> | * <small>'''punctuation''' - опция для расставления знаков препинания</small> | ||
* <small>'''normalization''' - опция обратной нормализации текста</small> | |||
* <small>'''vad''' - используемый VAD, по умолчанию webrtc</small> | |||
* <small>'''preset''' - используемая модель для vad = neuro</small> | |||
<small> | * <small>'''toxicity''' - анализировать распознанный текст на токсичность</small> | ||
<small> | * <small>'''emotion''' - выявить эмоции из распознанного текста</small> | ||
<small> | * <small>'''voice_analyzer''' - анализировать аудиофрагменты каждого из говорящих на эмоции, возраст и пол</small> | ||
<small> | * <small>'''speaker_counter''' - количество докладчиков, по умолчанию - 0, автоматическое определение количества</small> | ||
* <small>'''async''' - отложенный_запуск_распознавания</small> | |||
<small>В случае отправки переменной '''speakers=1''', дополнительно производится поиск говорящих и получение метаданных по каждому говорящему. (используется сервис sbs с предварительно обученными слепками метаданных говорящих) В случае отправки переменной punctuation=1, дополнительно вызывает метод punctuate в SMC, и расставляет знаки препинания в распознанном тексте (значение по умолчанию берётся из файлы конфигурации). normalization=1 для обратной нормализации текста.</small> <small>В случае использования модели big параметры punctuation и normalization игнорируются - модель всегда расставляет знаки препинания и нормализует текст.</small> | |||
<small> | <small>При установке параметра '''toxicity''' запрашивается в smc метод GET/smc/toxicity</small> | ||
<small> | <small>Высказывание анализируется по 4 параметрам, по каждому выдается вероятность от 0 до 1:</small> | ||
<small>"оскорбление": 0.13,</small> | |||
<small> | <small>"непристойность": 0,</small> | ||
<small> | <small>"угроза": 0,</small> | ||
<small> | <small>"вежливость": 0.53</small> | ||
<small>''' | <small>При установке параметра '''emotion''' запрашивается в smc метод GET/smc/emotion</small> | ||
<small> | <small>Высказывание анализируется на эмоциональность (negative, neutral, positive)</small> | ||
<small>''' | <small>При установке параметра '''voice_analyzer''' запрашивается в sbs метод POST/sbs/analyze.</small> | ||
<small> | <small>Аудио говорящего анализируется на возраст (child adult old)</small> | ||
<small> | <small>эмоции (ANGER BORE DISAPPOINTMENT DISGUST EXCITEMENT FEAR NEUTRAL PAIN PLEASURE SADNESS SUPRISE)</small> | ||
<small> | <small>пол (male female)</small> | ||
| colspan="2" |в случае 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. | |||
|- | |- | ||
|<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 секунд предварительно разбиваются на фрагменты по отсутствию речи. Настройка данных параметров описана в руководстве администратора. | |||
В случае отправки переменной 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
Высказывание анализируется на эмоциональность (negative, neutral, positive)
Аудио говорящего анализируется на возраст (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 ] } |