網路上許多應用程式都具備中英文朗讀功能,金山詞霸即為典型範例。然而在 Visual C++ 開發環境下實作 TTS(Text-to-Speech)的資源相對較少,現有文章多基於底層 API 開發。筆者曾從 VCKBASE 獲益良多,特撰寫此基於 MFC 的範例程式,拋磚引玉,期盼高手指教。
使用 TTS 必須先安裝 Microsoft TTS 引擎。一般使用者需下載三個檔案:MSTTS.EXE、SPCHAPI.EXE 以及中文發音包 SimpChinese Speech Package,皆可在微軟官網取得。若需發布程式,須將上述檔案一併打包。開發人員建議直接下載 Microsoft Speech SDK 5.1,並順道取得中、日文語言包 SpeechSDK51LangPack.exe。
尋找 sapi.dll 並複製至專案 res 目錄(非強制)。開啟 MFC ClassWizard,切換至 Automation 頁,點擊「Add Class...」→「From a type library...」選取 sapi.dll,於 Confirm Classes 對話框中全選匯入。準備工作至此完成。

注意:輸入中文時必須先在 Voice 選擇 Chinese,英文同理需選非中文語音。
CLSID CLSID_SpVoice;
LPDISPATCH pDisp;
ISpeechVoice voice;
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);
}
voice.Speak("Hello World", 1); // 非同步呼叫
聯絡信箱:skysoft_z@sina.com