日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++桌面应用中文语音包功能接口

發布時間:2024/3/24 c/c++ 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++桌面应用中文语音包功能接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用之前需要先安裝中文語音包(男聲+女聲安裝包下載)
Voice.h文件
(頭文件包含的lib庫資源如果缺失,百度下載或我的資源)

#pragma once #ifdef _MSC_VER #pragma warning (push) #pragma warning (disable : 4005) #include <intsafe.h> #pragma warning (pop) #pragma warning (default : 4005) #endif#include <sapi.h> #include <sphelper.h> #include <spuihelp.h>#pragma comment(lib,"ole32.lib") #pragma comment(lib,"sapi.lib") class CVoice { public:CVoice(void);~CVoice(void); private:ISpVoice * pVoice ;bool m_State;void InitVoice();void CloseVoice(); public:void Speech(CString str,bool flag =true);void SetRate(int rate);void SetVoiceType(int voicetype); //設置1:男聲;2:女聲 };

Voice.cpp文件

#include "StdAfx.h" #include "Voice.h"CVoice::CVoice(void) {m_State =false;InitVoice(); }CVoice::~CVoice(void) {CloseVoice(); }void CVoice::InitVoice() {pVoice =NULL;if (FAILED(::CoInitialize(NULL)))return ; HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice); if( SUCCEEDED( hr ) ) {ISpObjectToken* pChineseToken; WCHAR pszTokenId[] =L"HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Speech\\Voices\\Tokens\\VW Liang";SpGetTokenFromId(pszTokenId , &pChineseToken);pVoice->SetVoice(pChineseToken);pVoice->SetVolume(100);pVoice->SetRate(1);}m_State =true; }void CVoice::CloseVoice() {if(pVoice !=NULL){pVoice->Release(); pVoice = NULL; }if(m_State ==true)::CoUninitialize(); }void CVoice::SetRate(int rate) {pVoice->SetRate(rate); }void CVoice::SetVoiceType(int voicetype) {if (voicetype == 1){ISpObjectToken* pChineseToken; // WCHAR pszTokenId[] =L"HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Speech\\Voices\\Tokens\\VW Lily";WCHAR pszTokenId[] =L"HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Speech\\Voices\\Tokens\\VW Liang";SpGetTokenFromId(pszTokenId , &pChineseToken);pVoice->SetVoice(pChineseToken);}else{ISpObjectToken* pChineseToken; WCHAR pszTokenId[] =L"HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Speech\\Voices\\Tokens\\VW Lily";SpGetTokenFromId(pszTokenId , &pChineseToken);pVoice->SetVoice(pChineseToken);} }void CVoice::Speech(CString str,bool flag) {USES_CONVERSION;LPWSTR pwStr=new wchar_t[str.GetLength()+1];wcscpy_s(pwStr,str.GetLength()+1,T2W((LPCTSTR)str));if(flag ==true)pVoice->Speak( pwStr, SPF_ASYNC, NULL); elsepVoice->Speak( pwStr, SPF_DEFAULT, NULL); delete[] pwStr; }

總結

以上是生活随笔為你收集整理的C++桌面应用中文语音包功能接口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。