speech to text

 Мы обновили документацию, актуальная версия страницы доступна по ссылке: Преобразование речи в текст (speech to text)

speech to text на платформе это:

1. правило голосовой навигации в ivr

2.отправка распознанного текста событиями во время разговора

Работает только при активированной функции speech_to_text в клиентской конфигурации (эта настройка доступна только администратору платформы)

Правило ivr:

В ivr настройка выполняется аналогично другим правилам ivr, количество правил также не ограничено.

В ходе распознавания доступен финальный результат распознавания и предположения (предположения доступны в случае прерывания распознавания по набору цифр, либо по таймауту).

Имя

Тип

Описание

Имя

Тип

Описание

action

string

  • 'voice_helper' - установить правило голосовой навигации,  основные параметры для работы этого действия:  sound, voice_helper_digits_max,  voice_helper_rules,  voice_helper_timeout, voice_helper_classic_term, voice_helper_final_count

Параметры правила

sound

integer

Идентификатор звукового файла, который необходимо проиграть.

Идентификатор можно получить с помощью ресурса:

GET /client/{client_id}/sound/

Во время проигрывания файла начинается распознавание речи звонящего, распознавание заканчивается по нажатию кнопки-терминатора #, набору количества цифр донабора (voice_helper_digits_max), либо по таймауту (voice_helper_timeout)

voice_helper_digits_max

integer

Количество цифр донабора, после которого заканчивается распознавание речи. Если на момент до набора нужного количества digits финальный результат распознавания недоступен- мы будем работать с предположениями.

voice_helper_rules

string

Список правил переадресации в виде массива
{ “to_option” : номер_опции, “transcription”: “распознанное слово” }

Опция данного контекста должна быть создана, иначе она пропускается во время звонка, при создании правила опция не проверяется.

Создается опция правилом POST /extension/{extension_id}/ivr/context/{context_id}/options/


Транскрипция может быть вида "привет|здравствуйте” (слова перечислены символом | пробелы вырезаются\должны отсутствовать. Регистр символов значения не имеет).

voice_helper_timeout 

integer

Время в миллисекундах по истечении которого заканчивается распознавание речи - если за это время финальный результат недоступен- мы будем работать с предположениями.

Минимум 3000

voice_helper_classic_term

boolean

Разрешить, либо запретить классический донабор с клавиатуры (по умолчанию запрещено и используется только как прерывание распознавания см. voice_helper_digits_max)

Полностью аналогичная логика донабору правила ivr Play sound. Но перед переходом в опцию или на добавочный проверяются voice_helper_rules и если там есть совпадения- переход будет по ним, а не по донабору (приоритет у сказанного, а не набранного, хоть набранное и завершает “прослушку” сказанного)

voice_helper_final_count

integer

Финальное распознавание определяется паузой в речи (до финального распознавания возможны только предположения)

voice_helper_final_count Это количество попыток сообщить голосом то, что имеется в voice_helper_rules

Обычно устанавливается от одной до трех попыток final_count

Пример добавления правила

На примере первого контекста 1 добавочного id 204 опции старт:

POST- создание, PUT- обновление текущего контекста.

ресурс

отправленные данные

полученный ответ ( остальные параметры не имеют значения и исключены из примера)

ресурс

отправленные данные

полученный ответ ( остальные параметры не имеют значения и исключены из примера)

POST extension/204/ivr/context/1/options/start/rules/

или

PUT extension/204/ivr/context/1/options/start/rules/1

 

{
"voice_helper_digits_max": 2,
"voice_helper_rules": [
{
"to_option": 1,
"transcription": "привет|здравствуй|здарова"
},
{
"to_option": 2,
"transcription": "прощай|пока"
},
],
"sound": 52,
"voice_helper_timeout": 7000
}

{ …

"voice_helper_sound": 52,

"voice_helper_timeout": 7000,

"id": 39,

"voice_helper_digits_max": "2",

"voice_helper_rules": [ { "transcription": "привет|здравствуй|здарова", "to_option": 1 }, { "transcription": "прощай|пока", "to_option": 2 } ],

"final": true,

"action": "voice_helper",

…. }

 

События с распознанным текстом

Чтобы получить события с финальным распознанным текстом во время разговора необходимо воспользоваться следующей схемой:

По событию на добавочном (dial-in для входящих вызовов в ivr, anwser для входящих и исходящих с добавочного телефонного терминала)

В зависимости от CallFlow события в событии нужно запомнить:

extension_id и CallAPIID

extension_id - это id добавочного (если in - CalledExtensionID, если out - CallerExtensionID)

И воспользоваться ресурсом:

PUT /extension/{extension_id}/speech_to_text/{call_api_id}

Параметры URL

Name

Type

Description

Name

Type

Description

extension_id

string

id добавочного

call_api_id

string

id звонка, по которому начнется распознавание речи

 

Параметры запроса

Name

Type

Description

Name

Type

Description

action 

string

Может быть start или stop

direction 

string

Направление распознанной речи относительно extension_id.

out если голос идет от добавочного, in- если к добавочному

url 

string

url, куда будут отправляться события с распознанным текстом из речи

При повторной попытке одного и того же action с одним и тем же direction на один и тот же разговор будет ошибка.

 

События выглядят подобным образом:

POST / HTTP/1.1
Host: 213.170.66.158:12345
user-agent: Ringme Event Generator
Accept:
Accept-Encoding: gzip, deflate
Content-Length: 394
Content-Type: application/x-www-form-urlencoded

call_api_id=3232240860-15e67fb4-8f9a-11ea-90b9-05381d8e3a62&extension_id=34414&direction=out&text=%D0%90+%D0%B2%D0%BE%D0%B4%D0%B5+%D0%BC%D0%B8%D0%BC%D0%BE+%D1%81%D0%B5%D0%B9%D1%87%D0%B0%D1%81+%D0%BB%D0%B5%D1%82+%D1%81%D0%B5%D0%B3%D0%BE+%D0%BA%D0%BE%D0%BC%D0%B0%D1%80%D0%B0+%D0%B7%D0%B0%D0%B1%D0%BE%D1%82%D0%B0+%D0%BB%D1%8E%D0%B4%D0%B8+%D1%87%D0%B0%D1%81%D1%83+%D1%81+15+%D0%B3%D0%BE%D0%B4%D0%B0

 

Длину контента можно считать по Content-Length