Как настроить голос SAPI5

Я не понимаю, как я могу установить другой голос? Да! Я прочитал MSDN, и это не помогло

ISpVoice * pVoice = NULL, * pv1 = NULL;

if (FAILED(::CoInitialize(NULL)))
return FALSE;HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
if( SUCCEEDED( hr ) )
{
pVoice->SetVolume(100);
//pVoice->SetVoice();
hr = pVoice->Speak(L"Hello papa", SPF_IS_XML, NULL);
pVoice->Release();
pVoice = NULL;
}

0

Решение

Голоса в SAPI выбираются через ISpObjectToken. Обычно используется вспомогательная функция SpFindBestToken чтобы найти лучший токен, а затем используйте ISpVoice :: SetVoice (), чтобы выбрать этот токен:

ISpObjectToken* cpToken(NULL);
SpFindBestToken(SPCAT_VOICES, szRequiredAttribs, L"", &cpToken);
pVoice->SetVoice(cpToken);
cpToken->Release();

Теперь единственная проблема заключается в том, что вам нужно передать szRequiredAttribs, Это должен быть список атрибутов, разделенных точкой с запятой. Лучшая документация для голосовых атрибутов SAPI находится в Токены объектов и настройки реестра в частности, в разделе «Голоса». Там говорится, что все голоса должны поддерживать следующие атрибуты:

  • Vendor (название поставщика двигателя TTS)
  • Язык (LCID на шестнадцатеричном языке, на котором говорит этот движок)
  • Пол (Значение должно быть «Мужской», если мужской голос, «Женский», если женский)
  • VendorPreferred (если это голос по умолчанию для поставщика, указанного в vendor)
  • Имя (строка, представляющая независимое от языка имя)

Это не эксклюзивный список атрибутов; другие атрибуты могут быть определены поставщиком.

Итак, если вы хотите предпочитаемый голос от Microsoft, вы бы установили szRequiredAttribs = L"vendor=microsoft;vendorpreferred", Если вам нужен мужской голос (от любого поставщика), установите szRequiredAttribs = L"gender=male",

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]