青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉(zhuǎn),開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

轉(zhuǎn) VC使用TTS發(fā)聲

Posted on 2010-05-18 23:32 S.l.e!ep.¢% 閱讀(1970) 評論(0)  編輯 收藏 引用 所屬分類: VC
轉(zhuǎn) VC使用TTS發(fā)聲
2010-01-08 17:13
MFC使用TTS發(fā)音,后來在VC知識庫發(fā)現(xiàn)一篇不錯的文章,大家可以上去看一下(http://www.vckbase.com/document/viewdoc/?id=1051)但是文章寫得太簡單,而且他實現(xiàn)的方法一定要在創(chuàng)建MFC項目的時候在選上Automation,而我現(xiàn)在講一下在我們以有的項目上添加TTS發(fā)音功能(創(chuàng)建項目的時候沒有選上Automation)。
????? 下面我把實現(xiàn)步驟寫下來:
1、??????? 下載Microsoft Speech SDK, version 5.1,要實現(xiàn)中文發(fā)音的話要再下載個SimpChinese Speech Package
2、??????? 安裝了Microsoft Speech SDK, version 5.1后在C:\Program Files\Common Files\Microsoft Shared\Speech目錄下找到sapi.dll
3、??????? sapi.dll復(fù)制到你的項目文件下。
4、??????? 打開 MFC ClassWizard,選擇 Automation 頁,單擊按鈕"Add Class…",選擇"From a type library…",選中"sapi.dll"文件,這時系統(tǒng)會出現(xiàn) confirm Classes 對話框,詢問將要導(dǎo)入的類(有20多個類)。如果只要實現(xiàn)發(fā)音功能,只要導(dǎo)入IspeechObjectTokenIspeechObjectTokensIspeechVoice3個,其它類的功能我還在研究中。(如果在建項目的時候勾選了Automation,系統(tǒng)會自動幫你生成3個文件,分別是DlgProxy.cppDlgProxy.h還有一個根據(jù)你項目名.odl文件,如果沒有勾選上Automation就不會創(chuàng)建這三個文件,所以我們要實現(xiàn)發(fā)音功能,就要自己添加修改這三個文件)
5、??????? 沒有自動生成的文件怎么辦呢?最好的辦法就是新建一個項目,它的名稱和你現(xiàn)有的項目名稱一樣,然后在創(chuàng)建MFC Dialog Based項目的時候,選上Automation,然后做步驟4,將它生成的3個文件復(fù)制并加入到你現(xiàn)有項目中。
6、??????? 復(fù)制好后,就要在一些文件上添加修改代碼了。下面我以一個名為test的工程為例子首先在test.cpp文件添加這些代碼(紅色):
???? BOOL CTestApp::InitInstance()
{
????? if (!AfxOleInit())
????? {
????? ????? AfxMessageBox("OLE 程序初始化失敗。請確認(rèn) OLE 庫程序是正確的版本");
?????????? return FALSE;
????? }
????? AfxEnableControlContainer();
????? // Standard initialization
????? // If you are not using these features and wish to reduce the size
????? // of your final executable, you should remove from the following
????? // the specific initialization routines you do not need.
#ifdef _AFXDLL
????? Enable3dControls();???????????????? // Call this when using MFC in a shared DLL
#else
????? Enable3dControlsStatic();?? // Call this when linking to MFC statically
#endif
????? ???? if (RunEmbedded() || RunAutomated())
????? {
?????????? // Register all OLE server (factories) as running. This enables the
?????????? // OLE libraries to create objects from other applications.
?????????? COleTemplateServer::RegisterAll();
????? }
????? else
????? {
?????????? // When a server application is launched stand-alone, it is a good idea
?????????? // to update the system registry in case it has been damaged.
?????????? COleObjectFactory::UpdateRegistryAll();
????? }
????? CTestDlg dlg;
????? m_pMainWnd = &dlg;
????? int nResponse = dlg.DoModal();
????? if (nResponse == IDOK)
????? {
?????????? // TODO: Place code here to handle when the dialog is
?????????? // dismissed with OK
????? }
7、??????? 接著在testDlg.h文件添加以下代碼:
???? #include "sapi.h"
class CtestDlgAutoProxy;
/////////////////////////////////////////////////////////////////////////////
// CTestDlg dialog
class CTestDlg : public CDialog
{
????? DECLARE_DYNAMIC(CTestDlg);
????? friend class CtestDlgAutoProxy;
// Construction
public:
????? virtual ~CTestDlg();
????? CTestDlg(CWnd* pParent = NULL); // standard constructor
?????ISpeechObjectToken recoObject;
????? LPDISPATCH pDisp;
????? CLSID CLSID_SpVoice;
????? ISpeechVoice voice;
????? ISpeechObjectTokens voiceList;
// Dialog Data
????? //{{AFX_DATA(CTestDlg)
????? enum { IDD = IDD_TEST_DIALOG };
?????CComboBox?? m_voice; //拖控件并添加control類型數(shù)據(jù)成員
????? long??? m_Rate;
????? long??? m_Vol;
????? //}}AFX_DATA
????? // ClassWizard generated virtual function overrides
????? //{{AFX_VIRTUAL(CTestDlg)
????? protected:
????? virtual void DoDataExchange(CDataExchange* pDX);?? // DDX/DDV support
????? //}}AFX_VIRTUAL
// Implementation
protected:
????? HICON m_hIcon;
?????CtestDlgAutoProxy* m_pAutoProxy;
????? // Generated message map functions
????? //{{AFX_MSG(CTestDlg)
?????
8、??????? 接著在testDlg.cpp添加下面代碼:
#include "DlgProxy.h"
////////////////////////////////////
IMPLEMENT_DYNAMIC(CTestDlg, CDialog);
CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTestDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTestDlg)
?????? // NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_pAutoProxy = NULL;
}
CTestDlg::~CTestDlg()
{
 if (m_pAutoProxy != NULL)
?????? m_pAutoProxy->m_pDialog = NULL;
}
//////////////////////////
BOOL CTestDlg::OnInitDialog()
{
?????? 。。。。。。。。。。。。。
?????? // TODO: Add extra initialization here
CLSIDFromProgID(L"SAPI.SpVoice", &CLSID_SpVoice);
voice.CreateDispatch(CLSID_SpVoice);
pDisp = voice.m_lpDispatch;
HRESULT hr = pDisp->QueryInterface(CLSID_SpVoice, (void**)&voice.m_lpDispatch);
if (hr == S_OK) {
?????? pDisp->Release();
}
else {
?????? voice.AttachDispatch(pDisp, TRUE);
}
m_Rate=0;//語速
voice.SetRate(m_Rate);
m_Vol=100; //音量
voice.SetVolume(m_Vol);
//用來獲取支持多少種聲音
voiceList=voice.GetVoices(NULL,NULL);
?????? m_voice.SetCurSel(0);
voice.SetRefVoice(voiceList.Item(0)); //item(0)是英文發(fā)音,果裝了中文包可設(shè)item(3)
//為中文發(fā)音
return TRUE; // return TRUE unless you set the focus to a control
}
9、??????? 添加個button
void CTestDlg::OnButton1()
{
????? ?????????? voice.Speak("you", 1);//發(fā)音
}
10、???? DlgProxy.cpp找到下面一句代碼:
IMPLEMENT_OLECREATE2(CtestDlgAutoProxy, "test.Application", 0xc1b93196, 0x3df8, 0x4a61, 0xb1, 0x22, 0xa4, 0xc2, 0x8e, 0xe2, 0x75, 0xdb) 并將它注釋掉。(我不知道原因,但不注釋的話運行會出錯,如果有朋友知道原因的話請告訴我)

經(jīng)過上面的步驟后,就可以實現(xiàn)到發(fā)音了,可以用IspeechVoice類的函數(shù)調(diào)發(fā)音的速度和音量等。我試過了,在默認(rèn)情況下發(fā)音和金山詞霸差不多。

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品在线视频| 欧美激情一区二区三区| 欧美精品日韩一本| 亚洲二区三区四区| 国产精品福利av| 欧美激情中文字幕乱码免费| 欧美一区激情| 欧美高清在线视频| 欧美日韩精品系列| 国产欧美精品一区| 亚洲国产精品久久久久婷婷884 | 99热这里只有精品8| 亚洲精品日韩精品| 欧美精品七区| 午夜宅男久久久| 亚洲欧美日韩高清| 国产综合精品| 99热免费精品在线观看| 亚洲欧美春色| 欧美sm视频| 亚洲一区观看| 欧美日韩精品在线观看| 免费在线亚洲| 亚洲影音先锋| 美女999久久久精品视频| 亚洲午夜视频在线观看| 亚洲一级在线观看| 国产欧美日韩综合一区在线观看| 欧美福利一区| 亚洲欧美日韩国产综合| 亚洲欧洲日夜超级视频| 亚洲视频精选在线| 欧美日韩高清不卡| 亚洲国产日韩综合一区| 免费看的黄色欧美网站| 亚洲男人第一av网站| 欧美福利网址| 亚洲免费在线看| 欧美韩日一区| 久久婷婷国产综合精品青草| 亚洲九九爱视频| 国产精品亚洲一区| 欧美日韩美女| 久久久久久免费| 欧美国产视频日韩| 亚洲欧美国产毛片在线| 韩国亚洲精品| 美女视频一区免费观看| 亚洲精品久久久久久久久| 亚洲电影免费在线观看| 亚洲欧美在线x视频| 夜夜嗨av一区二区三区网站四季av | 亚洲国产精品传媒在线观看| 国产免费观看久久黄| 欧美激情一区二区三区蜜桃视频| 久久成人18免费观看| 欧美在线一二三区| 欧美在线啊v| 亚洲综合成人在线| 欧美一级片在线播放| 日韩午夜电影| av不卡在线| 亚洲精品免费看| 一本久久精品一区二区| 亚洲视频电影在线| 一本久久a久久精品亚洲| 久久成人国产精品| 亚洲欧美日韩爽爽影院| 欧美一区二区免费观在线| 亚洲精品看片| 亚洲图片激情小说| 一本综合久久| 欧美r片在线| 蜜乳av另类精品一区二区| 久久精品免费电影| 久久久中精品2020中文| 欧美福利视频| 欧美激情在线播放| 国产日产欧美精品| 午夜激情综合网| 99精品国产在热久久| 在线一区视频| 欧美二区在线看| 亚洲国产黄色片| 亚洲小说欧美另类社区| 亚洲一区二区三区欧美| 中文精品一区二区三区| 亚洲毛片一区| 麻豆乱码国产一区二区三区| 一区二区三区在线观看欧美| 免费在线观看精品| 亚洲精品中文字幕在线| 久久亚洲精品一区二区| 国产日韩一区| 免费一级欧美片在线播放| 欧美v亚洲v综合ⅴ国产v| 国产精品久久久久永久免费观看| 亚洲三级网站| 欧美日韩亚洲一区二区| 亚洲第一福利社区| 另类激情亚洲| 另类成人小视频在线| 国产日韩久久| 亚洲一区二区视频在线观看| 久久综合五月天婷婷伊人| 亚洲精品视频在线播放| 欧美人与禽猛交乱配| 亚洲日本一区二区| 免费日韩av片| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品亚洲а∨天堂免在线| 亚洲激情一区二区| 久久久久久成人| 欧美激情1区2区| 久久久噜噜噜久久人人看| 亚洲午夜久久久| 国产精品日本精品| 最新国产成人在线观看| 久久久久久婷| 亚洲第一在线视频| 亚洲性图久久| 亚洲一区www| 久久久福利视频| 亚洲一区二区四区| 国产精品久久久久久五月尺| 午夜精品电影| 久久久国产视频91| 亚洲精品日韩在线观看| 久久精品九九| 中日韩男男gay无套| 亚洲免费视频在线观看| 亚洲激情视频在线观看| 在线视频中文亚洲| 亚洲激情综合| 一区二区三区欧美视频| 性刺激综合网| 在线亚洲电影| 欧美午夜精品久久久| 久久亚洲精品伦理| 欧美午夜不卡影院在线观看完整版免费 | 欧美精品在线一区二区| 亚洲一区二区不卡免费| 香港成人在线视频| 久久久99精品免费观看不卡| 国产一区二区主播在线| 亚洲一区二区三区四区五区午夜| 香蕉乱码成人久久天堂爱免费| 亚洲风情亚aⅴ在线发布| 开元免费观看欧美电视剧网站| 亚洲国产精品va| 亚洲一区在线免费观看| 9人人澡人人爽人人精品| 欧美精品v日韩精品v国产精品| 极品少妇一区二区三区精品视频 | 亚洲黄色在线看| 久久免费黄色| 久久婷婷国产麻豆91天堂| 一区二区三区在线不卡| 午夜精品久久一牛影视| 在线中文字幕一区| 国产日韩欧美夫妻视频在线观看| 欧美中文在线字幕| 久久久999精品免费| 亚洲免费电影在线观看| 亚洲激情成人| 免费在线观看一区二区| 久久久国产一区二区三区| 性久久久久久久久久久久| 久久久久久久999精品视频| 欧美一区成人| 久久国产欧美| 久久精品亚洲一区二区三区浴池| 亚洲免费视频一区二区| 欧美日韩精品二区第二页| 亚洲一区二区在线免费观看视频| 亚洲一区在线观看免费观看电影高清| 国产精品亚洲片夜色在线| 国产在线视频欧美| 亚洲国产日韩一区二区| 亚洲精品在线视频观看| 亚洲国产高清视频| 日韩亚洲成人av在线| 午夜精品久久久久久久99水蜜桃| 国产网站欧美日韩免费精品在线观看| 亚洲激情六月丁香| 亚洲日本激情| 亚洲区免费影片| 亚洲永久精品大片| 香蕉尹人综合在线观看| 亚洲精品久久久蜜桃| 亚洲午夜视频在线| 亚洲综合精品四区| 亚洲国产另类久久精品| 亚洲一区在线观看视频 | 99综合精品| 欧美中文字幕在线观看| 欧美精品免费看| 欧美日韩国产一级| 国产精品乱人伦中文| 一区二区三区精品视频|