目录
在测试过程中为了更高效的提示操作者,在程序执行时增加语音提醒会方便很多,利用微软的SAPI可以很方便的在程序有问题时提示操作者。
SpVoice类是支持语音合成(TTS)的核心类。通过SpVoice对象调用TTS引擎,从而实现朗读功能。
利用程序创建VSB脚本,VSB中调用sapi.SpVoice朗读文本:
- #define VBS_SD_CODE "Set fso = CreateObject(\"Scripting.FileSystemObject\")\n"\
- "fso.DeleteFile(WScript.ScriptFullName)"
- void Say(const char * lpText, uint8_t delSelf)
- {
- FILE* fp;
- fp = fopen("spkTmp.vbs", "w");
- if (fp == NULL)
- {
- return;
- }
- if (delSelf)
- {
- fprintf(fp, "createobject(\"sapi.SpVoice\").Speak \"%s\" \n"
- VBS_SD_CODE
- , lpText);
- }
- else {
- fprintf(fp, "createobject(\"sapi.SpVoice\").Speak \"%s\" \n", lpText);
- }
- fclose(fp);
- system("attrib +h spkTmp.vbs");
- ShellExecute(0, TEXT("open"), TEXT("wscript.exe"), TEXT("\"spkTmp.vbs\""), TEXT(""), SW_SHOW);
- system("attrib -h spkTmp.vbs");
- return;
- }
-
- int main()
- {
- std::cout << "Hello World!\n";
- Say("运行正常, Goog job", 0);
- }
SAPI效果展示

利用SAPI可以快速方便的完成需要的功能