Объект Device/Методы/StartSpeechRecognition

Материал из Call Office Wiki
Перейти к навигации Перейти к поиску
Метод StartSpeechRecognition включает распознавание голосовых команд.

Синтаксис

StartSpeechRecognition (BSTR Words, BSTR StopWords, VARIANT CallbackFunction, LONG DeferredTime)

Параметры

Words параметры распознавания. Для распознавания Sphinx в этом параметре можно задавать слова, которые необходимо распознавать, в виде отдельных слов разделенных запятыми (по умолчанию да,нет,выход,ноль,один,два,три,четыре,пять,шесть,семь,восемь,девять,десять), параметры распознавания в режиме KWS или в виде JSGF грамматики. Для распознавания Google этот параметр игнорируется, для распознавания Yandex следует использовать следующие языковые модели: notes — тексты, dates — даты, names — имена, numbers — числа, music — музыка, buying — заказы (по умолчанию - notes).
StopWords строка, содержащая слова, разделенные запятыми, останавливающие процесс распознавания голоса. По умолчанию - отсутствуют.
CallbackFunction пользовательская функция обратного вызова (callback) прерывания процесса распознавания. По умолчанию - отсутствует.
DeferredTime Время в мс включения отложенного распознавания относительно следующего звукового сообщения. Если значение положительно, распознавание будет включено через указанное время после начала произнесения следующего звукового сообщения. Если отрицательно относительно времени завершения произнесения следующего голосового сообщения. По умолчанию: 0 - отложенное распознавание не используется.

Пользовательская функция может быть двух видов - выражение в виде текста на языке JavaScript возвращающее функцию или стандартный интерфейс IDispath. Пользовательская функция принимает три параметра:

  1. Text - (строка) распознанный текст;
  2. Confidence - (вещественное число) степень достоверности 0 - 1.
  3. Endofutt - (логическое) признак завершения фразы.

Возвращает логическое выражение, при значении true распознавание прерывается.


Пример пользовательской функции в виде выражения JavaScript:

Device.StartSpeechRecognition (Words, StopWords, "0, function (Text, Confidence, Endofutt) {if (Confidence > 0.3 and Endofutt) return true; return false;}");


Пример пользовательской функции в виде обычной функции JavaScript:

function Check (Text, Confidence, Endofutt) 
{
   if (Endofutt) {          // Если фраза распознана полностью
      if (Confidence > 0.3) return true;   // Если степень достоверности распознанного текста больше 0.3 завершаем распознавание
   } 

   return false;
}

Device.StartSpeechRecognition (Words, StopWords, Check);


Пример использования отложенного распознавания:

// Вариант I
Device.StartSpeechRecognition (Words, StopWords, Check, -2000);
Device.Say ("CallOffice.wav");    // Распознавание будет включено за 2 секунды до окончания произнесения сообщения CallOffice.wav

// Вариант II
Device.StartSpeechRecognition (Words, StopWords, Check, 2000);
Device.Say ("CallOffice.wav");    // Распознавание будет включено через 2 секунды после начала произнесения сообщения CallOffice.wav

Описание

Метод позволяет распознать произнесенные пользователем слова, содержащиеся в словаре, подключаемом командой InitSpeechRecognition. Если не используется пользовательская функция прерывания процесса распознавания, в случае распознавания законченной фразы (Endofutt = 1) будет выполнено прерывание текущей команды Say или Listen.

Примеры

Пример на JavaScript
var Device = new ActiveXObject ("CallOffice.Device");
Device.Open ();
Device.InitSpeechRecognition ();
Device.LogFile = 'CallOffice.log';
Device.LogLevel = 255;
var Words = 'да, нет, выход, ноль, один, два, три, четыре, пять, шесть, семь, восемь, девять, десять';
var StopWords = 'выход';
Device.StartSpeechRecognition (Words, StopWords);
Device.Listen (30);
Device.StopSpeechRecognition (); 
if (Device.VoiceCommand) alert ('Вы сказали слово ' + Device.VoiceCommand);
else alert ('Ничего не произнесено');
Device.Close ();
Пример на VBScript
Dim Device
Set Device = CreateObject ("CallOffice.Device")
Device.Open
Device.LogFile = "CallOffice.log"
Device.LogLevel = 255
Device.InitSpeechRecognition
Words = "да, нет, выход, ноль, один, два, три, четыре, пять, шесть, семь, восемь, девять, десять"
StopWords = "выход"
Device.StartSpeechRecognition Words, StopWords
Device.Listen 30
Device.StopSpeechRecognition

If Device.VoiceCommand Then 
   MsgBox "Вы сказали слово ", Device.VoiceCommand
Else 
   MsgBox "Ничего не произнесено."
End If

Device.Close

Назад к методам объекта Device.