首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

Visual C++ 6.0 中實作文字轉語音(TTS)完整教學

     編輯:關於VC++

前言

網路上許多應用程式都具備中英文朗讀功能,金山詞霸即為典型範例。然而在 Visual C++ 開發環境下實作 TTS(Text-to-Speech)的資源相對較少,現有文章多基於底層 API 開發。筆者曾從 VCKBASE 獲益良多,特撰寫此基於 MFC 的範例程式,拋磚引玉,期盼高手指教。

安裝 TTS 引擎

使用 TTS 必須先安裝 Microsoft TTS 引擎。一般使用者需下載三個檔案:MSTTS.EXE、SPCHAPI.EXE 以及中文發音包 SimpChinese Speech Package,皆可在微軟官網取得。若需發布程式,須將上述檔案一併打包。開發人員建議直接下載 Microsoft Speech SDK 5.1,並順道取得中、日文語言包 SpeechSDK51LangPack.exe。

建立 MFC 專案

  1. 選擇 MFC AppWizard (exe)
  2. 步驟 1 勾選 Dialog Based
  3. 步驟 2 勾選 Automation(必要步驟)
  4. 完成精靈

匯入型別程式庫

尋找 sapi.dll 並複製至專案 res 目錄(非強制)。開啟 MFC ClassWizard,切換至 Automation 頁,點擊「Add Class...」→「From a type library...」選取 sapi.dll,於 Confirm Classes 對話框中全選匯入。準備工作至此完成。

範例程式介面與功能

  • Speak English:女聲朗讀 "apple"
  • Speak Chinese:男聲朗讀 "蘋果"
  • English / Chinese:在 Input Text 顯示對應文字
  • Read / Stop:開始/停止朗讀
  • Rate +/-:調整語速
  • Volume +/-:調整音量
  • Voice 下拉選單:列出系統可用語音(筆者環境僅 Mary、Mike、Sam、Chinese 四種可用,原因未明)

注意:輸入中文時必須先在 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); // 非同步呼叫

拋磚引玉:待解決問題

  1. 如何調節語調(Mary 與 Sam 差異在於語調)
  2. 語音與文字同步高亮(朗讀到哪個字就高亮哪個字)
  3. 如何將 Windows TTS 移植至 PocketPC(筆者最關心的問題,懇請高手不吝賜教)

聯絡信箱:skysoft_z@sina.com

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved