Использовать речевые технологии можно отдельно от инструментария Studio. Подробнее об этом в разделе SaluteSpeech.
На каждую сказанную пользователем смартапа фразу может быть несколько вариантов распознанного текста. Каждый распознанный вариант одной и той же фразы пользователя - это гипотеза. В некоторых сценариях использования смартапа пригодится выбор не самой вероятной гипотезы, а второй или третьей в списке гипотез распознанного текста.
В списке все гипотезы сортируются от лучшей к худшей. В каждом случае распознавания фразы в смартап приходит только лучшая из всех гипотез. Однако разработчик может использовать не самую первую в списке гипотезу, а любую более подходящую из сформированного списка.
Разработчик может добавить возможность выбора гипотезы в код приложения:
- Через Code
- Через SmartApp API
Пример использования
Вопрос выбора правильной гипотезы возникает, когда, например, необходимо распознавать только русские слова, похожие по произношению на английские. Если пользователь произносит слово на русском языке, которое похоже по звучанию на английское слово, то первая гипотеза может содержать слово на латинице. В таком случае можно добавить возможность выбора гипотез только на кириллице. Первый вариант на кириллице будет самым верным.
Например, русское слово «магазин» имеет почти аналогичное по звучанию, но разное по смыслу, английское слово «magazine». В определенных сценариях из-за такой особенности в смартап могут приходить не самые лучшие гипотезы в качестве распознанного слова или фразы. Если вы хотите исключить распознавание слов и названий на английском языке, применяйте гипотезы только на кириллице.
Добавление через Code
Такой скрипт возвращает список гипотез:
script:
var hyps = $request.rawRequest.payload.asr.hypotheses;
$response.replies = $response.replies || [];
for (var i=0; i < hyps.length; i++) {
$response.replies.push({
"type":"text",
"text": String(i) + ": " + hyps[i].words,
"tts": ".",
})
}
Добавление через SmartApp API
Разрабатывая смартап с использованием Studio API вы можете применять любой язык программирования. Наш пример был написан на Python.
Пример перебора гипотез на Python
final_hypo = hypos[0]
for hypo in hypos:
if is_okay(hypo):
final_hypo = hypo
break
Далее вы можете добавить выбор первого варианта на кириллице из списка гипотез, игнорируя гипотезы на английском языке.
Использование вместе с хинтами
Для усиления попадания наиболее вероятной гипотезы в начало списка можно применять хинты.