С помощью Watson-Unity-SDK можно различать говорящих / пользователей, так как кажется, что он может возвращать массив, который идентифицирует, какие слова были произнесены, какие говорящие при обмене несколькими людьми, но я не могу понятьо том, как его выполнить, особенно в том случае, когда я посылаю разные высказывания (на которых говорят разные люди) в службу Assistant для получения соответствующего ответа.
Фрагменты кода для синтаксического анализа json
вывода / ответа Assistantа также OnRecognize
и OnRecognizeSpeaker
и SpeechRecognitionResult
и SpeakerLabelsResult
, но как мне заставить Уотсона вернуть это с сервера, когда высказывание распознано и его намерение извлечено?
И OnRecognize
, и OnRecognizeSpeaker
используются только один раз в свойстве Active
, поэтому они оба вызываются, но только OnRecognize
выполняет преобразование речи в текст (транскрипция), и OnRecognizeSpeaker
никогда не запускается ...
public bool Active
{
get
{
return _service.IsListening;
}
set
{
if (value && !_service.IsListening)
{
_service.RecognizeModel = (string.IsNullOrEmpty(_recognizeModel) ? "en-US_BroadbandModel" : _recognizeModel);
_service.DetectSilence = true;
_service.EnableWordConfidence = true;
_service.EnableTimestamps = true;
_service.SilenceThreshold = 0.01f;
_service.MaxAlternatives = 0;
_service.EnableInterimResults = true;
_service.OnError = OnError;
_service.InactivityTimeout = -1;
_service.ProfanityFilter = false;
_service.SmartFormatting = true;
_service.SpeakerLabels = false;
_service.WordAlternativesThreshold = null;
_service.StartListening(OnRecognize, OnRecognizeSpeaker);
}
else if (!value && _service.IsListening)
{
_service.StopListening();
}
}
}
Как правило, вывод Assistant (т.е. его результат) выглядит примерно так:
Response: {"intents":[{"intent":"General_Greetings","confidence":0.9962662220001222}],"entities":[],"input":{"text":"hello eva"},"output":{"generic":[{"response_type":"text","text":"Hey!"}],"text":["Hey!"],"nodes_visited":["node_1_1545671354384"],"log_messages":[]},"context":{"conversation_id":"f922f2f0-0c71-4188-9331-09975f82255a","system":{"initialized":true,"dialog_stack":[{"dialog_node":"root"}],"dialog_turn_counter":1,"dialog_request_counter":1,"_node_output_map":{"node_1_1545671354384":{"0":[0,0,1]}},"branch_exited":true,"branch_exited_reason":"completed"}}}
Я настроил intents
и entities
, и этот список возвращается службой помощника, но я не уверен, как заставить его также учитывать мои сущности или как заставить его реагировать соответственно, когда STT распознает разных говорящих.
Я быСпасибо за помощь, особенно за то, как это сделать с помощью сценариев Unity.