Visual studio 2019使用Microsoft Speech SDK 5.1語音識別
技術標籤:c++
目錄
下載安裝Speech SDK
由於官網相關包已經無法下載,大家可自己尋找TTS.rar和TTSlang.rar兩個包的資源
安裝好Speech SDK後,語音控制程式將被新增到 “控制面板”->“語音”選項中,
利用下圖對話方塊可以設定語音識別和文字-語音轉換的各項屬性,包括語言、語調、語速和輸入裝置等。
配置visual studio 2019專案環境
- 先建立一個空專案project1,下新增原始檔test.cpp
-
右鍵點選上圖中“Project1”
-
點選“屬性”-VC++目錄
1.在“包含目錄”後地址框-點選下拉箭頭-點選編輯,開啟圖片2所示“包含目錄”-點選圖2所圈“新行”圖示-下方框中出現一行-點選行後“…”圖示-選擇\Microsoft Speech SDK 5.1\Include-新增完成
2.在“庫目錄”,同理操作……選擇\Microsoft Speech SDK 5.1\Lib\i386-新增完成
-
點選“應用”-“確定”
-
配置完成
測試能否執行
使用測試程式碼
#include <sphelper.h>//語音標頭檔案 #include <iostream>//C++標頭檔案,用來提示錯誤資訊 int main() { ::CoInitialize(NULL);//初始化語音環境 ISpVoice* pSpVoice = NULL;//初始化語音變數 if (FAILED(CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_INPROC_SERVER, IID_ISpVoice, (void**)&pSpVoice))) //給語音變數建立環境,相當於建立語音變數,FAILED是個巨集定義,就是來判斷CoCreateInstance這個函式又沒有成功建立語音變數,下面是不成功的提示資訊。 { std::cout << "Failed to create instance of ISpVoice!" << std::endl; return -1; } pSpVoice->Speak(L"Hello World!", SPF_DEFAULT, NULL);//執行語音變數的Speek函式,這個函式用來讀文字。 pSpVoice->Release(); //釋放語音變數 ::CoUninitialize();//釋放語音環境 return 0; }
解決執行報錯
由於使用Speech SDK安裝包版本老,在Visual studio 2019上使用時會出現很多報錯,這裡記錄我執行時解決的報錯部分:
-
部分sphelper.h編譯錯誤
這裡附上該部分報錯解決方案連結(由於轉載版本較多,該連結可能不是初始作者發表的部落格)https://blog.csdn.net/wangyangtao/article/details/5933734
-
其他部分sphelper.h編譯錯誤解決,都是相似的解決方法,故只按類別提供示例
-
SPDBG_FUNC函式報錯:e.g.: SPDBG_FUNC("SpGetTokenFromId"); 改為 SPDBG_FUNC(PCHAR("SpGetTokenFromId"));
-
_tcscpy函式報錯:修改為_tcscpy_s函式,在原函式的2個引數之間,增加1個引數:wcslen(第一個引數)
-
wcscpy函式報錯:e.g.: wcscpy(szLangCondition, L"Language="); 改為 wcscpy_s(szLangCondition,wcslen(szLangCondition), L"Language=");
-
wcscat函式報錯:e.g.: wcscat(szLangCondition, szLang); 改為 wcscat_s(szLangCondition, wcslen(szLangCondition), szLang);
-
GetVersionExW:被宣告為已否決:解決辦法:專案 > 屬性 > C/C++ > SDL 檢查 > 關掉
-
sapi.h中報錯:wchar_t*轉BSTR
例如:BSTR CategoryID = L""> 修改為:BSTR CategoryID = ::SysAllocString(L"")
可參考部落格:
-
若還有其他報錯,歡迎大家在評論區補充
修改Speech SDK檔案的儲存問題
在修改sphelper.h和sapi.h檔案後,我遇到了無法儲存的問題,即visual studio沒有修改該檔案的許可權,造成“對路徑訪問被拒絕”
解決方法:
修改include檔案屬性
右鍵include資料夾-點選屬性-點選“安全”
原本“修改”和“寫入”的“允許”許可權是沒有的,此處點選“編輯”按鈕-選擇“Users”-勾選“修改”和“寫入”的允許許可權-應用-確定-可以修改
預祝大家消滅所有報錯,取得成功!