Объект Device/Методы/StartSpeechRecognition: различия между версиями

Материал из Call Office Wiki
Перейти к навигации Перейти к поиску
 
(не показано 11 промежуточных версий этого же участника)
Строка 5: Строка 5:
==Синтаксис==
==Синтаксис==
:<syntaxhighlight lang="c">
:<syntaxhighlight lang="c">
StartSpeechRecognition ([BSTR Words,] [BSTR StopWords])  
StartSpeechRecognition (BSTR Words, BSTR StopWords, VARIANT CallbackFunction, LONG DeferredTime)  
</syntaxhighlight>
</syntaxhighlight>
|style="width:10%;"|__TOC__
|}


==Параметры==
==Параметры==
Строка 14: Строка 12:
|-  
|-  
|'''Words'''
|'''Words'''
|строка, содержащая распознаваемые слова, разделенные запятыми. По умолчанию - 0.
|параметры распознавания. Для распознавания '''Sphinx''' в этом параметре можно задавать слова, которые необходимо распознавать, в виде отдельных слов разделенных запятыми (по умолчанию '''да,нет,выход,ноль,один,два,три,четыре,пять,шесть,семь,восемь,девять,десять'''), параметры распознавания в режиме [[KWS]] или в виде [[JSGF| JSGF грамматики]]. Для распознавания '''Google''' этот параметр игнорируется, для распознавания '''Yandex''' следует использовать следующие языковые модели: notes — тексты, dates — даты, names — имена, numbers — числа, music — музыка, buying — заказы (по умолчанию - notes).
|-
|-
|'''StopWords'''
|'''StopWords'''
|строка, содержащая слова, разделенные запятыми, останавливающие процесс распознавания голоса. По умолчанию - 0.  
|строка, содержащая слова, разделенные запятыми, останавливающие процесс распознавания голоса. По умолчанию - отсутствуют.
|-
|'''CallbackFunction'''
|пользовательская функция обратного вызова (callback) прерывания процесса распознавания. По умолчанию - отсутствует.
|-
|'''DeferredTime'''
|Время в мс включения отложенного распознавания относительно следующего звукового сообщения. Если значение положительно, распознавание будет включено через указанное время после начала произнесения следующего звукового сообщения. Если отрицательно относительно времени завершения произнесения следующего голосового сообщения. По умолчанию: 0 - отложенное распознавание не используется.
|}
|}
Пользовательская функция может быть двух видов - выражение в виде текста на языке JavaScript возвращающее функцию или стандартный интерфейс IDispath. Пользовательская функция принимает три параметра:
#Text - (строка) распознанный текст;
#Confidence - (вещественное число) степень достоверности 0 - 1.
#Endofutt - (логическое) признак завершения фразы.
Возвращает логическое выражение, при значении true распознавание прерывается.
Пример пользовательской функции в виде выражения JavaScript:
<syntaxhighlight lang="javascript">
Device.StartSpeechRecognition (Words, StopWords, "0, function (Text, Confidence, Endofutt) {if (Confidence > 0.3 and Endofutt) return true; return false;}");
</syntaxhighlight>
Пример пользовательской функции в виде обычной функции JavaScript:
<syntaxhighlight lang="javascript">
function Check (Text, Confidence, Endofutt)
{
  if (Endofutt) {          // Если фраза распознана полностью
      if (Confidence > 0.3) return true;  // Если степень достоверности распознанного текста больше 0.3 завершаем распознавание
  }
  return false;
}
Device.StartSpeechRecognition (Words, StopWords, Check);
</syntaxhighlight>
Пример использования отложенного распознавания:
<syntaxhighlight lang="javascript">
// Вариант 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
</syntaxhighlight>


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


==Примеры==
==Примеры==

Текущая версия на 12:11, 17 сентября 2021

Метод 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.