Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Speak 
:(
    Опции темы
zss
Дата 17.5.2009, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



поставил голосовой движок. Их получилось несколько.

1. Как можно программно между ними выбырать ?
2. Проиграть текст ?
PM MAIL ICQ   Вверх
azesmcar
Дата 17.5.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: нет
Всего: 211



Цитата(zss @  17.5.2009,  16:57 Найти цитируемый пост)
поставил голосовой движок. Их получилось несколько.

Ну очень информативно.
PM   Вверх
zss
Дата 17.5.2009, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



а что не понятно. В списке "Выбор голоса" в "Речь" панели задач несколько движков.
Если вызывать как в MSDN
Код

#define _ATL_APARTMENT_THREADED

#include "atlbase.h"

//Вы можете переопределить класс CComModule
//но не должны менять идентификатор _Module

extern CComModule _Module;

#include "atlcom.h"

#include "stdafx.h"
#include "sapi.h"

int main(int argc, char* argv[])
{
ISpVoice * pVoice = NULL;

if (FAILED(::CoInitialize(NULL)))
return FALSE;

HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
if( SUCCEEDED( hr ) )
{
hr = pVoice->Speak(L"Hello world", 0, NULL);

// Change pitch
hr = pVoice->Speak(L"This sounds normal but the pitch drops half way through", SPF_IS_XML, NULL );
pVoice->Release();
pVoice = NULL;
}
::CoUninitialize();
return TRUE;
} 


то проигрывает на текущем выбранном движке. А нужно на конкретном (русском)
PM MAIL ICQ   Вверх
azesmcar
Дата 17.5.2009, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: нет
Всего: 211



Цитата(zss @  17.5.2009,  17:37 Найти цитируемый пост)
а что не понятно. В списке "Выбор голоса" в "Речь" панели задач несколько движков.

Я не говорил что непонятно, я сказал что информации мало. Кстати вам с этим вопросом лучше думаю в раздел ATL/COM обратиться.
PM   Вверх
zss
Дата 17.5.2009, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



Цитата(azesmcar @  17.5.2009,  17:53 Найти цитируемый пост)
Кстати вам с этим вопросом лучше думаю в раздел ATL/COM обратиться.

переместите меня скорей же smile
PM MAIL ICQ   Вверх
xvr
Дата 18.5.2009, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Метод ISpVoice::SetVoice
PM MAIL   Вверх
zss
Дата 18.5.2009, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



Цитата(xvr @  18.5.2009,  17:00 Найти цитируемый пост)
Метод ISpVoice::SetVoice

а как перебрать установленные движки ?
PM MAIL ICQ   Вверх
xvr
Дата 18.5.2009, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(zss @ 18.5.2009,  21:32)
Цитата(xvr @  18.5.2009,  17:00 Найти цитируемый пост)
Метод ISpVoice::SetVoice

а как перебрать установленные движки ?

Неужели так трудно заглянуть в MSDN?
Код

// Declare local identifiers:
HRESULT                        hr = S_OK;
CComPtr<ISpObjectToken>        cpVoiceToken;
CComPtr<IEnumSpObjectTokens>   cpEnum;
CComPtr<ISpVoice>              cpVoice;
ULONG                          ulCount = 0;

// Create the SAPI voice.
hr = cpVoice.CoCreateInstance(CLSID_SpVoice);

if (SUCCEEDED (hr))
{
   // Enumerate the available voices.
   hr = SpEnumTokens(SPCAT_VOICES, NULL, NULL, &cpEnum);
}

if (SUCCEEDED (hr))
{
   // Get the number of voices.
   hr = cpEnum->GetCount(&ulCount);
}

// Obtain a list of available voice tokens, set
// the voice to the token, and call Speak.
while (SUCCEEDED(hr) && ulCount--)
{
   cpVoiceToken.Release();

   if (SUCCEEDED (hr))
   {
      hr = cpEnum->Next(1, &cpVoiceToken, NULL);
   }

   if (SUCCEEDED (hr))
   {
      hr = cpVoice->SetVoice(cpVoiceToken);
   }

   if (SUCCEEDED (hr))
   {
      hr = cpVoice->Speak( L"How are you?", SPF_DEFAULT, NULL );
   }

}

if (SUCCEEDED (hr))
{
   // Do more stuff here.
}


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.