Xamarin.Forms Úvod do služeb Azure Cognitive Services

Microsoft Cognitive Services je sada rozhraní API, sad SDK a služeb dostupných vývojářům, aby jejich aplikace byly inteligentnější přidáním funkcí, jako je rozpoznávání obličeje, rozpoznávání řeči a porozumění jazyku. Tento článek obsahuje úvod do ukázkové aplikace, která ukazuje, jak vyvolat některá rozhraní API služeb Microsoft Cognitive Service.

Přehled

Doprovodná ukázka je aplikace seznamu úkolů, která poskytuje funkce pro:

  • Umožňuje zobrazit seznam úkolů.
  • Úkoly můžete přidávat a upravovat pomocí softwarové klávesnice nebo pomocí rozhraní Microsoft Speech API.
  • Úlohy kontroly pravopisu pomocí rozhraní API Bingu pro kontrolu pravopisu Další informace najdete v tématu Kontrola pravopisu pomocí rozhraní API Bingu pro kontrolu pravopisu.
  • Překlad úkolů z angličtiny do němčiny pomocí služby Translator API Další informace najdete v tématu Překlad textu pomocí služby Translator API.
  • Odstraňte úkoly.
  • Nastavte stav úkolu na Hotovo.

Upozorňující

Rozhraní API pro zpracování řeči Bingu je ve prospěch služby Azure Speech zastaralé. Ukázku vyhrazenou pro službu Azure Speech najdete v tématu Rozpoznávání řeči pomocí rozhraní SPEECH API služby Speech.

Úkoly se ukládají do místní databáze SQLite. Další informace o použití místní databáze SQLite naleznete v tématu Práce s místní databází.

Zobrazí se TodoListPage při spuštění aplikace. Na této stránce se zobrazí seznam všech úkolů uložených v místní databázi a umožní uživateli vytvořit nový úkol nebo ohodnotit aplikaci:

TodoListPage

Nové položky lze vytvořit kliknutím na + tlačítko, které přejde na TodoItemPagetlačítko . Na tuto stránku můžete přejít také tak, že vyberete úkol:

TodoItemPage

Umožňuje TodoItemPage vytvářet, upravovat, kontrolovat pravopis, překládat, ukládat a odstraňovat úkoly. Rozpoznávání řeči se dá použít k vytvoření nebo úpravě úkolu. Toho dosáhnete tak, že stisknutím tlačítka mikrofonu spustíte nahrávání a dalším stisknutím stejného tlačítka zastavíte nahrávání, které nahrávku odešle do rozhraní API pro rozpoznávání řeči Bingu.

Vysvětlení anatomie aplikace

Projekt sdíleného kódu pro ukázkovou aplikaci se skládá z pěti hlavních složek:

Složka Účel
Modely Obsahuje třídy datového modelu pro aplikaci. To zahrnuje TodoItem třídu, která modeluje jednu položku dat používaných aplikací. Složka obsahuje také třídy používané k modelování odpovědí JSON vrácených z různých rozhraní API služeb Microsoft Cognitive Service.
Úložiště ITodoItemRepository Obsahuje rozhraní a TodoItemRepository třídu, které se používají k provádění databázových operací.
Služby Obsahuje rozhraní a třídy, které se používají pro přístup k různým rozhraním API služby Microsoft Cognitive Service, spolu s rozhraními, která používají DependencyService třída k vyhledání tříd, které implementují rozhraní v projektech platformy.
Utils Timer Obsahuje třídu, kterou třída používá AuthenticationService k obnovení přístupového tokenu JWT každých 9 minut.
Zobrazení Obsahuje stránky aplikace.

Projekt sdíleného kódu obsahuje také některé důležité soubory:

Soubor Účel
Constants.cs Třída Constants , která určuje klíče rozhraní API a koncové body pro rozhraní API služeb Microsoft Cognitive Service, které jsou vyvolány. Klíčové konstanty rozhraní API vyžadují aktualizaci pro přístup k různým rozhraním API služeb Cognitive Service.
App.xaml.cs Třída App zodpovídá za vytvoření instance první stránky, která se zobrazí aplikací na každé platformě, a TodoManager třídy, která se používá k vyvolání databázových operací.

Balíčky NuGet

Ukázková aplikace používá následující balíčky NuGet:

  • Newtonsoft.Json – poskytuje rozhraní JSON pro .NET.
  • PCLStorage – poskytuje sadu rozhraní API io vstupně-výstupních operací pro různé platformy.
  • sqlite-net-pcl – poskytuje úložiště databáze SQLite.
  • Xam.Plugin.Media – poskytuje multiplatformní pořizování fotek a výběr rozhraní API.

Kromě toho tyto balíčky NuGet také nainstalují vlastní závislosti.

Modelování dat

Ukázková aplikace používá TodoItem třídu k modelování dat zobrazených a uložených v místní databázi SQLite. Následující příklad kódu ukazuje TodoItem třídu:

public class TodoItem
{
  [PrimaryKey, AutoIncrement]
  public int ID { get; set; }
  public string Name { get; set; }
  public bool Done { get; set; }
}

Vlastnost ID se používá k jedinečné identifikaci jednotlivých TodoItem instancí a je zdobena atributy SQLite, které vlastnost automaticky navyšují primární klíč v databázi.

Vyvolání databázových operací

Třída TodoItemRepository implementuje databázové operace a instanci třídy lze získat přístup prostřednictvím App.TodoManager vlastnosti. Třída TodoItemRepository poskytuje následující metody pro vyvolání databázových operací:

  • GetAllItemsAsync – načte všechny položky z místní databáze SQLite.
  • GetItemAsync – načte zadanou položku z místní databáze SQLite.
  • SaveItemAsync – vytvoří nebo aktualizuje položku v místní databázi SQLite.
  • DeleteItemAsync – odstraní zadanou položku z místní databáze SQLite.

Implementace projektů platformy

Složka Services v projektu sdíleného kódu obsahuje IFileHelper rozhraní IAudioRecorderService , která třída používá DependencyService k vyhledání tříd, které implementují rozhraní v projektech platformy.

Rozhraní IFileHelper je implementováno FileHelper třídou v každém projektu platformy. Tato třída se skládá z jedné metody, GetLocalFilePathkterá vrací místní cestu k souboru pro ukládání databáze SQLite.

Rozhraní IAudioRecorderService je implementováno AudioRecorderService třídou v každém projektu platformy. Tato třída se skládá z StartRecording, StopRecordinga podpůrných metod, které používají rozhraní API platformy k záznamu zvuku z mikrofonu zařízení a uložit ho jako soubor wav. V iOSu AudioRecorderService používá rozhraní API k nahrávání zvuku AVFoundation . V Androidu AudioRecordService používá rozhraní API k záznamu zvuku AudioRecord . Na Univerzální platforma Windows (UPW) AudioRecorderService používá AudioGraph rozhraní API k nahrávání zvuku.

Vyvolání kognitivních služeb

Ukázková aplikace vyvolá následující služby Microsoft Cognitive Services: