Я разрабатываю приложение для преобразования текста в речь, используя библиотеку Microsoft sapi
.Я реализовал речевую функцию и обнаружил, что акцентированные символы (à, á, â, ä, é, è, ê, í, î, î, î, ò, ô, ö, ú, ú, û, ü) не говорят.Вот мой код:
int ttsSpeak( const char* text ) //Text to Speech speaking function
{
if( SUCCEEDED(hr) )
{
hr = SpEnumTokens( SPCAT_VOICES, NULL, NULL, &cpEnum );
cpEnum->Item( saveVoice, &cpVoiceToken );
cpVoice->SetVoice( cpVoiceToken ); //Initialization of the voice
string str( text );
cout << str;
std::wstring stemp = std::wstring( str.begin(), str.end() );
LPCWSTR sw = ( LPCWSTR )stemp.c_str(); //variable allowing to speak my entered text
printf( "Text To Speech processing\n" );
hr = cpVoice->Speak( sw, SPF_DEFAULT, NULL ); //speak my text
saveText = text;
cpEnum.Release();
cpVoiceToken.Release();
}
else
{
printf( "Could not speak entered text\n" );
}
return true;
}
Я отладил свое приложение и обнаружил, что переменная str
получает акцентированные символы.Тем не менее, я создаю wstring
переменную с именем stemp
, где моя строка преобразуется, и здесь символ с акцентом заменяется пустым квадратом.Затем создается переменная LPCWSTR (Long Pointer to Constant Wide String), чтобы произносить введенный текст.Ниже приведена картина значений моих переменных.
Возможно, что-то не так в моем коде, но что я могу сделать, чтобы убедиться, что символы с акцентомвысказался?