Опубликован: 23.10.2013 | Уровень: для всех | Доступ: платный | ВУЗ: Северный (Арктический) федеральный университет им. М.В. Ломоносова
Лекция 4:

Распознавание речи в Intel Perceptual Computing SDK

Режим голосового управления

В режиме голосового управления приложение предопределяет список команд, модуль SDK распознает речь, основываясь только на этом списке, и выполняет соответствующее действие.

В случае программирования распознавания речи с помощью класса UtilPipeline используется функция SetVoiceCommands, которая в качестве параметра принимает набор команд, размещенный в переменной типа: std::vector<std::wstring>, поэтому необходимо озаботиться созданием такой переменной перед вызовом функции SetVoiceCommands.

В случае программирования распознавания речи без использования класса UtilPipeline, необходимо сконфигурировать ненулевую грамматику, например, это можно сделать так:

pxcUID gid;
rec->CreateGrammar(&gid);
rec->AddGrammar(gid,1,L"One");
rec->AddGrammar(gid,2,L"Two");
rec->AddGrammar(gid,3,L"Three");
rec->SetGrammar(gid);

После того как список команд задан, можно определить действие, которое должно выполнить приложение в ответ на полученную команду, после успешного распознавания, разумеется.

Синтез речи

Процесс программирования синтеза речи предполагает создание экземпляра модуля синтеза речи и передачи данных в него, при разработке приложения можно выделить следующие этапы (начало очень похоже на программирование распознавания речи):

Создание сессии: SDK сессия – ключевой объект любого приложения, использующего SDK, и должен создаваться в первую очередь. Для создания сессии необходимо вызвать функцию PXCSession_Create.

PXCSmartPtr<PXCSession> session; 
PXCSession_Create(&session);

Определение реализации модуля: в приложении используется функция PXCSession::CreateImpl для создания экземпляра интерфейса модуля синтеза речи PXCVoiceSynthesis:

PXCVoiceSynthesis *tts=0;
session->CreateImpl<PXCVoiceSynthesis>(&tts);

Инициализация модуля: для инициализации модуля используются две функции QueryProfile и SetProfile. Первая функция возвращает доступные конфигурации. Вторая устанавливает текущую активную конфигурацию.

PXCVoiceSynthesis::ProfileInfo profile;
tts->QueryProfile(0, &profile);
tts->SetProfile(&profile);

Цикл обработки данных: приложение использует функцию QueueSentence для создания очереди предложений для синтеза, вызывает функцию ProcessAudioAsync для создания аудио буфера, который содержит синтезированную речь и передачи содержимого буфера на любое аудио устройство вывода:

pxcUID sid;
tts->QueueSentence(L"Speak this",10,&sid);
PXCSmartPtr<PXCAudio> sample;
PXCSmartSP sp;
for (;;) {
   pxcStatus sts=tts-> ProcessAudioAsync(sid,&sample,&sp);
   if (sts<PXC_STATUS_NO_ERROR) break;
   sp->Synchronize();
   // передать участок синтезированной речи на устройство вывода
}

Приложение может создавать очередь и синтезировать множество предложений. Функция QueueSentence возвращает идентификатор предложения в очереди, который может быть использован приложением в функции ProcessAudioAsync. SDK модуль синтезирует каждое предложение независимо и параллельно если позволяет реализация.

Контрольные вопросы:

  1. Как выглядит схема речевого взаимодействия человека и компьютера? На каком этапе может быть использован пакет Intel Perceptual Computing SDK?
  2. Подумайте, как могут выглядеть основные направления использования голосовых интерфейсов.
  3. Какие сложности возникают в процессе автоматического распознавания речи?
  4. По каким признакам, характеризующим основные возможности, можно классифицировать системы автоматического распознавания речи?
  5. Каковы основные компоненты любой системы автоматического распознавания речи?
  6. Каковы особенности и возможности модуля распознавания речи Intel Perceptual Computing SDK?
  7. Что необходимо иметь в виду разработчику использующему модуль распознавания речи?
  8. Каковы особенности программирования распознавания речи с использованием класса UtilPipeline и без него?
  9. Каковы особенности программирования голосового управления?
  10. Каковы особенности программирования синтеза речи?
Гульзия Калымова
Гульзия Калымова
Александр Радченко
Александр Радченко
Юрий Симонов
Юрий Симонов
Россия, Москва, Московский Государственный Университет им. М.В. Ломоносова, 2011
Вадим Сизоненко
Вадим Сизоненко
Россия, Братский р-н