QQ登录

只需一步,快速开始

TTS语音开发包开发手册开发实例

[ 复制链接 ]
捕获.JPG
TTS语音开发包开发手册开发实例
附件有库函数的说明
sapi.chm
库程序
SpeechSDK51.exe
语言包
SpeechSDK51LangPack.exe
WIN7上不能使用,还有提供
win7 TTS补丁.exe

最后是一个简单的实例
123
初始化库
  1. void CMy123Dlg::InitVoice()
  2. {
  3.         m_pISpVoice            = NULL;
  4.         m_pIEnumSpObjectTokens = NULL;
  5.     if(S_OK != SpEnumTokens(SPCAT_VOICES, NULL, NULL, &m_pIEnumSpObjectTokens) )
  6.         {
  7.                 m_pIEnumSpObjectTokens = NULL;
  8.                 return;
  9.         }        
  10.         ULONG ulTokensNumber = 0;
  11.         m_pIEnumSpObjectTokens->GetCount(&ulTokensNumber);//得到所有语音Token的个数
  12.         if(ulTokensNumber == 0)//检测该机器是否安装有语音包
  13.         {
  14.                 MessageBox("该机器没有安装语音包!", "提示", MB_OK|MB_ICONWARNING);
  15.                 return;   
  16.         }
  17. //<>        
  18.     if(FAILED(CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_INPROC_SERVER, IID_ISpVoice, (void**)&m_pISpVoice)))
  19.     {
  20.         MessageBox("获取ISpVoice接口失败!", "提示", MB_OK|MB_ICONWARNING);
  21.                 m_pISpVoice = NULL;
  22.         return;
  23.     }
  24.         ISpObjectToken      *pISpObjectToken;
  25.     m_pIEnumSpObjectTokens->Item(0, &pISpObjectToken);
  26.     m_pISpVoice->SetVoice(pISpObjectToken);
  27.     m_pISpVoice->SetRate(3);//设置播放速度(-10到10)
  28.     m_pISpVoice->SetVolume(100);//设置音量大小        (0到100)
  29.         Speak();
  30. //<>
  31.         CComboBox*pCom = (CComboBox*)GetDlgItem(IDC_COMBO1);
  32.         CString          strVoicePackageName = _T("");
  33.         CString          strTokenPrefixText = _T("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices\\Tokens\");
  34.         WCHAR            *pChar;
  35.         for(ULONG i=0; i<ulTokensNumber; i++)
  36.         {
  37.                 m_pIEnumSpObjectTokens->Item(i, &pISpObjectToken);
  38.                 pISpObjectToken->GetId(&pChar);
  39.                 strVoicePackageName = pChar;
  40.                 strVoicePackageName.Delete(0, strTokenPrefixText.GetLength());
  41.                 pCom->InsertString(i, strVoicePackageName);
  42.         }
  43.         pCom->SetCurSel(0);//设置默认的语音包选择
  44. }
复制代码
执行语音播报
  1. void CMy123Dlg::Speak(CString sText)
  2. {
  3.         if(!m_pISpVoice)
  4.                 return;
  5.         if(sText.IsEmpty())
  6.         sText="请输入内容";

  7.         CSliderCtrl*pSlider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER1);
  8.         m_pISpVoice->SetRate(pSlider->GetPos());
  9.         m_pISpVoice->Speak(sText.AllocSysString(), SPF_ASYNC, NULL);//开始进行朗读
  10. }
复制代码
调用语音播报
  1. void CMy123Dlg::OnButton2()
  2. {
  3.     //检测朗读内容是否为空
  4.         CString sText;
  5.         GetDlgItemText(IDC_EDIT1,sText);
  6.         Speak(sText);
  7. }
复制代码

网页下载地址
游客,为过滤非法行为,全站隐藏资源仅对充值会员开放进入升级

回复

使用道具 举报

大神点评(3)

快速回复 返回列表 客服中心 搜索