牟曉東
借助于百度AI智能云平臺所提供的豐富功能,我們可以在本地非常方便地通過Python代碼編程與其“對接”進行人臉與人體識別、音頻與視頻識別等各種強大而有趣的應用,操作方法步驟均大同小異,在此以植物識別和TTS語音合成為例:
登錄百度智能云平臺(https://ai.baidu.com/),找到其中的“植物識別”項(https://ai.baidu.com/tech/imagerecognition/plant),據稱能夠識別“超過2萬種常見植物和近8000種花卉”,并且能夠返回所識別植物的名稱以及對應的百科信息。按照頁面上的操作指引,在“創建應用”中進行“創建新應用”,填寫對應的名稱(如“識別植物”)及接口選擇(注意必須要選中“圖像識別”中的“植物識別”項),最終就會生成一個包括AppID、API Key和Secret Key等信息的新應用,將這些信息全部復制保存至本地(如圖1)。

首先,導入調用攝像頭的OpenCV庫和調用百度AI的aip庫:“import cv2”、“from aip import AipImageClassify”,注意要提前使用“pip install baidu-aip”命令安裝好aip庫;接著,編寫控制攝像頭拍攝植物并生成JPG圖片文件的代碼:新建變量camera,通過調用OpenCV庫為其賦值為“cv2.VideoCapture(0)”,完成將攝像頭所拍攝到的畫面保存至變量camera中的功能;再新建一個“while True”循環結構,通過“ret,img = camera.read()”語句實現“讀取camera中保存的一幀畫面并賦值給變量img”的功能,其中的ret返回的數據是一個布爾值——為真時才進行文件保存的操作;語句“cv2.imshow(‘Capture plants:’,img)”的功能是開啟一個新窗口,標題為“Capture plants:”,顯示的內容是剛剛變量img所保存的一幀攝像頭捕獲畫面;為了防止程序運行過快,加入延時等待語句“key = cv2.waitKey(10)”,即每次循環時均等待10毫秒,相當于給攝像頭充分的時間進行畫面的拍攝等操作;接著,建立一個if選擇分支結構,判斷條件為“if key == ord(‘s’):”,即用戶此時是否已經按下s鍵,當條件為真時則執行以下三個語句:第一是將變量img中保存的畫面內容生成capture.jpg圖片文件:“cv2.imwrite(‘capture.jpg’,img)”;第二是關閉剛剛開啟的攝像頭畫面窗口:“cv2.destroyAllWindows()”;第三是使用break語句來跳出當前循環(如圖2)。

接下來,將上一步中在百度智能云中新建應用時獲得的ID和Key三處關鍵信息導入,通過新建三個變量并進行賦值來實現:“APP_ID = ‘26634939’”、“API_KEY = ‘YqBXBlfEEnRPYKA2eWm54A3F’”和“Secret_KEY = ‘ilCPcW16DbSNXe1GQ9Mhj043
pzxQZcT7’”;然后,通過百度API接口將三個變量作為參數進行實例化:“client = AipImageClassify(APP_ID,API_KEY,Secret_KEY)”;接著,定義一個讀取圖片的get_file(filePath)函數,通過變量image1將剛剛生成的capture.jpg圖片文件進行讀取,并且根據百度智能云的API接口封裝參數要求進行結果的提取,最終對result進行值的輪詢操作并構造print語句輸出識別后的信息(如圖3)。

將程序保存為Detect_plants.py,點擊“運行”按鈕進行測試,同時將一盆巴西木放置于攝像頭前;此時在屏幕上就會彈出一個名為“Capture plants:”的新窗口,其預覽內容即為攝像頭所拍攝的實時畫面。調整好植物盆栽的角度和顯示大小后,按下鍵盤上的s鍵(注意要保持輸入法為英文半角狀態)后,很快就有了顯示結果:“這種植物的名字叫作: 香龍血樹”、“對該植物的識別率是: 53.1 %”、“【簡介】 香龍血樹(學名:Dracaena fragrans)是天門冬科……”(如圖4)。

TTS即“Text To Speech”,意為“從文本到語音”,百度AI支持每次1024字節以內的文本合成為語音(若文本較長可采用多次請求的方式)。
同樣是先建立應用項目,從“語音合成”中選擇“短文本在線合成”項,將新應用名稱設置為“TTS從文本到語音”(或其他),注意查看其中是否已經包含了“短文本在線合成”等項,這樣就又會得到一組AppID、API Key和Secret Key信息,復制待用(如圖5)。

值得一提的是,如果程序代碼沒問題但最終在測試運行時一直提示類型錯誤的話,此時就要在百度AI平臺中進行免費資源的領取操作——選中“語音技術”—“語音合成”中的“短文本在線合成—基礎音庫”和“短文本在線合成—精品音庫”等項目后,再點擊底部的“0元領取”按鈕,此時會有“恭喜您,領取成功”的提示:“免費測試資源將在30分鐘內生效”(如圖6)。

同樣,首先從aip庫模塊中導入待用的AipSpeech:“from aip import AipSpeech”,再將ID和Key的信息通過三個賦值語句導入:“APP_ID = ‘26644936’”、“API_KEY = ‘C0QXnUQixE4l8VFj qrl2tvWk’”和“Secret_KEY = ‘eGA7VcZm0cZoKt EOYts5MFnakq4fvxQT’”;然后,仍然是新建變量client,通過語句“client = AipSpeech(APP_ID,API_KEY,Secret_KEY)”將參數傳入;接著,建立變量my_str,其值為待轉換的文本信息,比如“《電腦報》是中國發行量最大的計算機報……”;再建立變量result,按照規則進行賦值:“result = client.synthesis(my_str,‘zh’,1,{‘vol’:5,})”,其中的參數比較豐富,可以設置語速、語調和音量,還可以設置發音人等等,大家可直接在百度AI平臺中語音技術的接口說明中進行查詢設置(https://ai.baidu.com/ai-doc/SPEECH/Gk4nlz8tc)。
最后,仍是通過“with open”以二進制文件寫入的方式,將TTS生成的語音數據寫入my_TTS.mps文件。將程序保存為TextToSpeech.py,測試運行,很快就會在當前程序的保存文件夾中生成一個my_TTS.mps音頻文件,打開聽一下,內容即為程序代碼中變量my_str所存儲的文本內容(如圖7)。

百度AI平臺提供的其他智能應用調用方法基本類似,均可以像進行植物識別與TTS語音合成一樣來使用,可參考官方說明文檔進行Python程序的編寫。