Я разрабатываю приложение для преобразования текста в речь с использованием Microsoft SAPI.ISpVoice::Speak
прекрасно работает, однако некоторые специальные символы произносятся вслух и не должны быть.Эти разговорные символы (/, * _)
Я обнаружил, что можно создавать правила, но только с использованием распознавания речи ( источник ).Интересно, возможно ли реализовать это в Text-To-Speech.Вот некоторый код, если он помогает.
int ttsSpeak( const char* text ) //Text to Speech speaking function
{
if( SUCCEEDED(hr) )
{
hr = SpEnumTokens( SPCAT_VOICES, NULL, NULL, &cpEnum );
cpEnum->Item( saveVoice, &cpVoiceToken ); //get saveVoice token defined at line 136
cpVoice->SetVoice( cpVoiceToken ); //Initialization of the voice
int wchars_num = MultiByteToWideChar( CP_ACP, 0, text, -1, NULL, 0 );
wchar_t* wstr = new wchar_t[ wchars_num ];
MultiByteToWideChar( CP_ACP, 0, text, -1, wstr, wchars_num );
//skip characters ( /, *, _ )
printf( "Text To Speech processing\n" );
hr = cpVoice->Speak( wstr, SPF_DEFAULT, NULL );
saveText = text;
cpEnum.Release();
cpVoiceToken.Release();
delete new wchar_t[ wchars_num ];
}
else
{
printf( "Could not speak entered text\n" );
}
return true;
}
Можно ли пропустить произносимые символы вслух?Например, я создаю файл XML, в котором я могу определить, что может сказать движок, а что нет.