Кто-нибудь знает способ программного создания и / или выбора профилей речи в SAPI? - PullRequest
4 голосов
/ 24 сентября 2010

Мне нужно дать пользователям простой способ, не заходя в панель управления, выбирать профиль речи.Я нашел: Акустическое обучение с использованием SAPI 5.3 Speech API , но примеров нет и информация неполная.

Я мог бы действительно использовать пример, если у кого-то есть такой:)

Ответы [ 2 ]

1 голос
/ 12 апреля 2012

Следующий фрагмент кода может помочь выбрать профиль распознавания. Я еще не пытался создавать новые профили программно.

IEnumSpObjectTokens *pProfileEnum;
SpEnumTokens(SPCAT_RECOPROFILES, NULL, NULL, &pProfileEnum);

unsigned long l;
pProfileEnum->GetCount(&l);

for (int i = 0; i < (int) l; i++)
{
    CComPtr<ISpObjectToken> IT;
    pProfileEnum->Item(i, &IT);
    WCHAR *wptr;
    IT->GetId(&wptr);
    CSpDynamicString dstrDefaultName;
    SpGetDescription(IT, &dstrDefaultName);
    //Do something to select the profile withe the name you would like to use
}  


//Assuming IT is the profile you want to use, activat it by calling:
cpRecognizer->SetRecoProfile(IT);
1 голос
/ 18 ноября 2010

Профиль «по умолчанию» с «флажком» рядом с ним на панели управления речью определяется записью реестра:

[HKEY_CURRENT_USER\Software\Microsoft\Speech\RecoProfiles]
"DefaultTokenId"="HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Speech\\RecoProfiles\\Tokens\\{A32BEAC3-4442-4E13-B485-8A2DD7178794}"

Я думаю, что этот параметр конфигурации читается только тогда, когда речь WindowsGUI распознавания / Панель управления запускается.Поэтому простое изменение этого параметра реестра может оказаться бесполезным для изменения профиля «во время выполнения».

Для изменения профиля во время выполнения вы можете использовать функцию SetRecoProfile.Достижение точки, где вы можете вызывать эту функцию, является актуальной темой ...

...