Xamarin.Forms 和 Azure 認知服務簡介
Microsoft 認知服務是一組 API、SDK 和服務,可供開發人員使用,藉由新增臉部辨識、語音辨識、語音辨識和語言理解等功能,使其應用程式更智慧。 本文提供範例應用程式的簡介,示範如何叫用某些 Microsoft 認知服務 API。
概觀
隨附的範例是 Todo 列表應用程式,可提供下列功能:
- 檢視工作清單。
- 透過軟式鍵盤新增和編輯工作,或使用 Microsoft 語音 API 執行語音辨識。
- 使用 Bing 拼字檢查 API 進行拼字檢查工作。 如需詳細資訊,請參閱 使用 Bing 拼字檢查 API 進行拼字檢查。
- 使用 翻譯工具 API 將工作從英文翻譯成德文。 如需詳細資訊,請參閱使用 翻譯工具 API 的文字翻譯。
- 刪除工作。
- 將工作的狀態設定為 「完成」。
警告
Bing 語音 API 已被取代為 Azure 語音服務。 如需 Azure 語音服務專用的範例,請參閱 使用語音服務 API 進行語音辨識。
工作會儲存在本機 SQLite 資料庫中。 如需使用本機 SQLite 資料庫的詳細資訊,請參閱 使用本機資料庫。
TodoListPage
會在啟動應用程式時顯示 。 此頁面會顯示儲存在本機資料庫中的任何工作清單,並允許使用者建立新工作或為應用程式評分:
您可以按下 + 巡覽至 的 TodoItemPage
按鈕來建立新專案。 您也可以選取工作來瀏覽此頁面:
TodoItemPage
允許建立、編輯、拼字檢查、翻譯、儲存和刪除工作。 語音辨識可用來建立或編輯工作。 這可藉由按下麥克風按鈕來開始錄製,並再次按下相同的按鈕來停止錄製,這會將錄製傳送至 Bing 語音辨識 API。
瞭解應用程序結構
範例應用程式的共用程式代碼專案包含五個主要資料夾:
資料夾 | 目的 |
---|---|
模型 | 包含應用程式的數據模型類別。 這包括 類別 TodoItem ,其會建立應用程式所使用之單一數據專案的模型。 此資料夾也包含用來建立從不同 Microsoft 認知服務 API 傳回之 JSON 回應模型的類別。 |
儲存機制 | 包含 ITodoItemRepository 用來執行資料庫作業的介面和 TodoItemRepository 類別。 |
服務 | 包含用來存取不同 Microsoft 認知服務 API 的介面和類別,以及類別用來 DependencyService 尋找在平台項目中實作介面的類別。 |
Utils | 包含類別 Timer ,類別會使用此 AuthenticationService 類別每隔 9 分鐘更新一次 JWT 存取令牌。 |
檢視 | 包含應用程式的頁面。 |
共用程式代碼專案也包含一些重要的檔案:
檔案 | 目的 |
---|---|
Constants.cs | 類別 Constants ,指定叫用之 Microsoft 認知服務 API 的 API 金鑰和端點。 API 金鑰常數需要更新才能存取不同的認知服務 API。 |
App.xaml.cs | 類別 App 負責具現化應用程式在每個平台上顯示的第一頁,以及用來叫用資料庫作業的 TodoManager 類別。 |
NuGet 套件
範例應用程式會使用下列 NuGet 套件:
Newtonsoft.Json
– 提供適用於 .NET 的 JSON 架構。PCLStorage
– 提供一組跨平台本機檔案 IO API。sqlite-net-pcl
– 提供 SQLite 資料庫記憶體。Xam.Plugin.Media
– 提供跨平臺相片拍攝和挑選 API。
此外,這些 NuGet 套件也會安裝自己的相依性。
建立資料模型
範例應用程式會 TodoItem
使用 類別來建立顯示及儲存在本機 SQLite 資料庫中的數據模型。 下列程式碼範例顯示 TodoItem
類別:
public class TodoItem
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
public string Name { get; set; }
public bool Done { get; set; }
}
屬性 ID
可用來唯一識別每個 TodoItem
實例,並以 SQLite 屬性裝飾,讓屬性成為資料庫中自動遞增的主鍵。
叫用資料庫作業
類別 TodoItemRepository
會實作資料庫作業,而且可以透過 App.TodoManager
屬性存取 類別的實例。 類別 TodoItemRepository
提供下列方法來叫用資料庫作業:
- GetAllItemsAsync – 從本機 SQLite 資料庫擷取所有專案。
- GetItemAsync – 從本機 SQLite 資料庫擷取指定的專案。
- SaveItemAsync – 在本機 SQLite 資料庫中建立或更新專案。
- DeleteItemAsync – 從本機 SQLite 資料庫刪除指定的專案。
平臺項目實作
Services
共用程式代碼專案中的資料夾包含 IFileHelper
類別所使用的 DependencyService
和 IAudioRecorderService
介面,以找出在平臺項目中實作介面的類別。
介面 IFileHelper
是由每個平台專案中的 FileHelper
類別所實作。 這個類別是由單一方法所組成, GetLocalFilePath
這個方法會傳回本機檔案路徑來儲存 SQLite 資料庫。
介面 IAudioRecorderService
是由每個平台專案中的 AudioRecorderService
類別所實作。 這個類別包含 StartRecording
、 StopRecording
和支援的方法,這些方法會使用平臺 API 從裝置的麥克風錄製音訊,並將其儲存為 wav 檔案。 在 iOS 上,會 AudioRecorderService
使用 AVFoundation
API 來錄製音訊。 在 Android 上AudioRecord
,會AudioRecordService
使用 API 來錄製音訊。 在 通用 Windows 平台 (UWP) 上,會AudioRecorderService
使用 AudioGraph
API 來錄製音訊。
叫用認知服務
範例應用程式會叫用下列 Microsoft 認知服務:
- Microsoft 語音 API。 如需詳細資訊,請參閱 使用 Microsoft 語音 API 的語音辨識。
- Bing 拼字檢查 API。 如需詳細資訊,請參閱 使用 Bing 拼字檢查 API 進行拼字檢查。
- 翻譯 API。 如需詳細資訊,請參閱使用 翻譯工具 API 的文字翻譯。