基于SAPI(微软的语音API)的文字转语音功能

一、环境配置

1、下载Microsoft Speech SDK 5.1,下载地址为:http://www.microsoft.com/download/en/details.aspx?id=10121  。

2、然后进行安装,VC++6.0具体配置过程可以参考如下网址:https://jingyan.baidu.com/article/fb48e8be58421c6e622e14af.html    。

3、注意点,非正版系统可能会缺少某些系统语音组件,请自行查询安装。


二、具体使用

先放一段最简单的demo,一个简单的“Hello World!”语音播报程序

#include //语音头文件

#include //C头文件,用来提示错误信息

#pragma comment(lib,"sapi.lib")

int main()

{

    ::CoInitialize(NULL);//初始化语音环境

    ISpVoice * pSpVoice = NULL;//初始化语音变量

    if (FAILED(CoCreateInstance(CLSID_SpVoice, NULL,CLSCTX_INPROC_SERVER, IID_ISpVoice, (void **)&pSpVoice)))  

    //就是来判断CoCreateInstance这个函数又没有成功创建语音变量,下面是不成功的提示信息。

   { 

        printf("创建语音变量失败!\n"); 

        return -1; 

    }

    pSpVoice->Speak(L"Hello World!", SPF_DEFAULT, NULL);//peek函数,用来读文字。

    pSpVoice->Release(); //释放语音变量

    ::CoUninitialize();//释放语音环境

    return 0;

}


上面的程序,通过pSpVoice变量实现了基本所有的功能,仔细学习上面的程序不难搞懂如何实现文字转语音功能,我这里补充的一点是:比如你需要读520这个数,那么语音读出来的是五二零还是五百二,如果你需要读的是五百二,那么下面的东西可能就是你需要的了。

//多字符字符串转化为宽字符串unicode
char str[1024]={0};
strcpy(str,“520”);
setlocale(LC_ALL, "chs");  //配置地域的信息
        wchar_t w[1024]=L"0";    //申明一个宽字符串
mbstowcs(w,str,1024);  //多字符转换为字符


你可能感兴趣的:(基于SAPI(微软的语音API)的文字转语音功能)