Rychlý start: Rozpoznávání záměrů pomocí konverzačních Language Understanding

Referenční dokumentace | Balíček (NuGet) | Další ukázky na GitHubu

V tomto rychlém startu použijete služby Řeč a Jazyk k rozpoznávání záměrů ze zvukových dat zachycených z mikrofonu. Konkrétně budete používat službu Speech k rozpoznávání řeči a model konverzační Language Understanding (CLU) k identifikaci záměrů.

Důležité

Konverzační Language Understanding (CLU) je k dispozici pro C# a C++ se sadou Speech SDK verze 1.25 nebo novější.

Požadavky

Nastavení prostředí

Sada Speech SDK je k dispozici jako balíček NuGet a implementuje .NET Standard 2.0. Sadu Speech SDK nainstalujete později v této příručce, ale nejprve zkontrolujte další požadavky v průvodci instalací sady SDK .

Nastavení proměnných prostředí

Tento příklad vyžaduje proměnné prostředí s názvy LANGUAGE_KEY, LANGUAGE_ENDPOINTSPEECH_KEY, a SPEECH_REGION.

Aby vaše aplikace získala přístup k prostředkům služeb Azure AI, musí být ověřená. V produkčním prostředí použijte zabezpečený způsob ukládání a přístupu k přihlašovacím údajům. Když například získáte klíč pro prostředek , zapište ho do nové proměnné prostředí na místním počítači, na kterém běží aplikace.

Tip

Nezahrnujte klíč přímo do kódu a nikdy ho nezveřejníte. Další možnosti ověřování, jako je Azure Key Vault, najdete v článku zabezpečení služeb Azure AI.

Pokud chcete nastavit proměnné prostředí, otevřete okno konzoly a postupujte podle pokynů pro operační systém a vývojové prostředí.

  • Pokud chcete nastavit proměnnou LANGUAGE_KEY prostředí, nahraďte your-language-key jedním z klíčů pro váš prostředek.
  • Pokud chcete nastavit proměnnou LANGUAGE_ENDPOINT prostředí, nahraďte your-language-endpoint jednou z oblastí pro váš prostředek.
  • Pokud chcete nastavit proměnnou SPEECH_KEY prostředí, nahraďte your-speech-key jedním z klíčů pro váš prostředek.
  • Pokud chcete nastavit proměnnou SPEECH_REGION prostředí, nahraďte your-speech-region jednou z oblastí pro váš prostředek.
setx LANGUAGE_KEY your-language-key
setx LANGUAGE_ENDPOINT your-language-endpoint
setx SPEECH_KEY your-speech-key
setx SPEECH_REGION your-speech-region

Poznámka

Pokud potřebujete získat přístup pouze k proměnné prostředí v aktuální spuštěné konzole, můžete proměnnou prostředí nastavit pomocí setsetx.

Po přidání proměnných prostředí může být nutné restartovat všechny spuštěné programy, které budou muset přečíst proměnnou prostředí, včetně okna konzoly. Pokud například jako editor používáte Visual Studio, před spuštěním příkladu restartujte Sadu Visual Studio.

Vytvoření projektu konverzačních Language Understanding

Jakmile vytvoříte jazykový zdroj, vytvořte v nástroji Language Studio konverzační projekt pro porozumění jazyku. Projekt je pracovní oblast pro vytváření vlastních modelů ML na základě vašich dat. K projektu máte přístup jenom vy a ostatní uživatelé, kteří mají přístup k používanému zdroji jazyka.

Přejděte do language studia a přihlaste se pomocí svého účtu Azure.

Vytvoření projektu pro porozumění konverzačnímu jazyku

Pro účely tohoto rychlého startu si můžete stáhnout tento ukázkový projekt domácí automatizace a naimportovat ho. Tento projekt dokáže předpovědět zamýšlené příkazy ze vstupu uživatele, například zapnutí a zhasnutí světel.

  1. V části Principy otázek a konverzačního jazyka nástroje Language Studio vyberte Porozumění konverzačnímu jazyku.

    Snímek obrazovky znázorňující umístění vlastního Language Understanding na cílové stránce nástroje Language Studio

  2. Tím se dostanete na stránku Projektů pro porozumění konverzačnímu jazyku . Vedle tlačítka Vytvořit nový projekt vyberte Importovat.

    Snímek obrazovky zobrazující stránku projektu konverzace v nástroji Language Studio

  3. V zobrazeném okně nahrajte soubor JSON, který chcete importovat. Ujistěte se, že váš soubor má podporovaný formát JSON.

Po dokončení nahrávání se dostanete na stránku definice schématu . Pro účely tohoto rychlého startu je schéma už vytvořené a promluvy jsou už označené záměry a entitami.

Trénování modelu

Po vytvoření projektu byste obvykle měli vytvořit schéma a popisky promluv. Pro účely tohoto rychlého startu jsme už naimportovali připravený projekt s vytvořeným schématem a označenými promluvami.

Pokud chcete vytrénovat model, musíte zahájit trénovací úlohu. Výstupem úspěšné trénovací úlohy je trénovaný model.

Zahájení trénování modelu v nástroji Language Studio:

  1. V nabídce vlevo vyberte Trénovat model .

  2. V horní nabídce vyberte Spustit trénovací úlohu .

  3. Vyberte Vytrénovat nový model a do textového pole zadejte nový název modelu. Pokud chcete nahradit existující model modelem natrénovaným na nových datech, vyberte Přepsat existující model a pak vyberte existující model. Přepsání natrénovaného modelu je nevratné, ale nasazené modely to neovlivní, dokud nový model nenasadíte.

  4. Vyberte režim trénování. Pro rychlejší trénování můžete zvolit standardní trénování , ale je k dispozici jenom pro angličtinu. Nebo můžete zvolit pokročilé trénování , které je podporované pro jiné jazyky a vícejazyčné projekty, ale zahrnuje delší dobu trénování. Přečtěte si další informace o režimech trénování.

  5. Vyberte metodu dělení dat . Můžete zvolit automatické rozdělení testovací sady od trénovacích dat , kde systém rozdělí promluvy mezi trénovací a testovací sadu podle zadaných procent. Nebo můžete použít ruční rozdělení trénovacích a testovacích dat. Tato možnost je povolená jenom v případě, že jste do testovací sady přidali promluvy při označení promluv.

  6. Vyberte tlačítko Trénovat .

    Snímek obrazovky zobrazující školicí stránku v nástroji Language Studio

  7. V seznamu vyberte ID trénovací úlohy. Zobrazí se panel, kde můžete zkontrolovat průběh trénování, stav úlohy a další podrobnosti o této úloze.

    Poznámka

    • Modely budou generovat pouze úspěšně dokončené úlohy trénování.
    • Trénování může trvat nějakou dobu mezi několika minutami a několika hodinami na základě počtu promluv.
    • Najednou můžete mít spuštěnou pouze jednu úlohu trénování. V rámci stejného projektu nemůžete spustit další trénovací úlohy, dokud se spuštěná úloha nedokončí.
    • Strojové učení používané k trénování modelů se pravidelně aktualizuje. Pokud chcete trénovat na předchozí verzi konfigurace, vyberte Vybrat sem, pokud chcete změnit na stránce Spustit trénovací úlohu a zvolte předchozí verzi.

Nasazení modelu

Obecně platí, že po vytrénování modelu byste si prostudovali podrobnosti o jeho vyhodnocení. V tomto rychlém startu jednoduše nasadíte model a zpřístupníte ho k vyzkoušení v language studiu, nebo můžete volat rozhraní API pro predikce.

Nasazení modelu z jazykového studia:

  1. V nabídce na levé straně vyberte Deploying a model (Nasazení modelu ).

  2. Výběrem možnosti Přidat nasazeníspusťte průvodce přidáním nasazení .

    Snímek obrazovky s tlačítkem pro nasazení modelu v sadě Language Studio

  3. Výběrem možnosti Create a new deployment name (Vytvořit nový název nasazení) vytvořte nové nasazení a v rozevíracím seznamu níže přiřaďte vytrénovaný model. Jinak můžete vybrat možnost Přepsat existující název nasazení a efektivně tak nahradit model používaný existujícím nasazením.

    Poznámka

    Přepsání existujícího nasazení nevyžaduje změny volání rozhraní API pro predikce , ale výsledky, které získáte, budou vycházet z nově přiřazeného modelu.

    Snímek obrazovky s obrazovkou pro přidání nového nasazení v sadě Language Studio

  4. V rozevíracím seznamu Model vyberte vytrénovaný model.

  5. Výběrem možnosti Nasadit spusťte úlohu nasazení.

  6. Po úspěšném nasazení se vedle něj zobrazí datum vypršení platnosti. K vypršení platnosti nasazení dochází v případě, že nasazený model nebude možné použít k predikci, k čemuž obvykle dochází dvanáct měsíců po vypršení platnosti trénovací konfigurace.

V další části použijete název projektu a název nasazení.

Rozpoznávání záměrů z mikrofonu

Podle těchto kroků vytvořte novou konzolovou aplikaci a nainstalujte sadu Speech SDK.

  1. Otevřete příkazový řádek, na kterém chcete nový projekt vytvořit, a pomocí rozhraní příkazového řádku .NET CLI vytvořte konzolovou aplikaci. Soubor Program.cs by se měl vytvořit v adresáři projektu.

    dotnet new console
    
  2. Nainstalujte sadu Speech SDK do nového projektu pomocí .NET CLI.

    dotnet add package Microsoft.CognitiveServices.Speech
    
  3. Nahraďte obsah Program.cs souboru následujícím kódem.

    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    using Microsoft.CognitiveServices.Speech.Intent;
    
    class Program 
    {
        // This example requires environment variables named:
        // "LANGUAGE_KEY", "LANGUAGE_ENDPOINT", "SPEECH_KEY", and "SPEECH_REGION"
        static string languageKey = Environment.GetEnvironmentVariable("LANGUAGE_KEY");
        static string languageEndpoint = Environment.GetEnvironmentVariable("LANGUAGE_ENDPOINT");
        static string speechKey = Environment.GetEnvironmentVariable("SPEECH_KEY");
        static string speechRegion = Environment.GetEnvironmentVariable("SPEECH_REGION");
    
        // Your CLU project name and deployment name.
        static string cluProjectName = "YourProjectNameGoesHere";
        static string cluDeploymentName = "YourDeploymentNameGoesHere";
    
        async static Task Main(string[] args)
        {
            var speechConfig = SpeechConfig.FromSubscription(speechKey, speechRegion);        
            speechConfig.SpeechRecognitionLanguage = "en-US";
    
            using var audioConfig = AudioConfig.FromDefaultMicrophoneInput();
    
            // Creates an intent recognizer in the specified language using microphone as audio input.
            using (var intentRecognizer = new IntentRecognizer(speechConfig, audioConfig))
            {
                var cluModel = new ConversationalLanguageUnderstandingModel(
                    languageKey,
                    languageEndpoint,
                    cluProjectName, 
                    cluDeploymentName);
                var collection = new LanguageUnderstandingModelCollection();
                collection.Add(cluModel);
                intentRecognizer.ApplyLanguageModels(collection);
    
                Console.WriteLine("Speak into your microphone.");
                var recognitionResult = await intentRecognizer.RecognizeOnceAsync().ConfigureAwait(false);
    
                // Checks result.
                if (recognitionResult.Reason == ResultReason.RecognizedIntent)
                {
                    Console.WriteLine($"RECOGNIZED: Text={recognitionResult.Text}");
                    Console.WriteLine($"    Intent Id: {recognitionResult.IntentId}.");
                    Console.WriteLine($"    Language Understanding JSON: {recognitionResult.Properties.GetProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult)}.");
                }
                else if (recognitionResult.Reason == ResultReason.RecognizedSpeech)
                {
                    Console.WriteLine($"RECOGNIZED: Text={recognitionResult.Text}");
                    Console.WriteLine($"    Intent not recognized.");
                }
                else if (recognitionResult.Reason == ResultReason.NoMatch)
                {
                    Console.WriteLine($"NOMATCH: Speech could not be recognized.");
                }
                else if (recognitionResult.Reason == ResultReason.Canceled)
                {
                    var cancellation = CancellationDetails.FromResult(recognitionResult);
                    Console.WriteLine($"CANCELED: Reason={cancellation.Reason}");
    
                    if (cancellation.Reason == CancellationReason.Error)
                    {
                        Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}");
                        Console.WriteLine($"CANCELED: ErrorDetails={cancellation.ErrorDetails}");
                        Console.WriteLine($"CANCELED: Did you update the subscription info?");
                    }
                }
            }
        }
    }
    
  4. V Program.cs nastavte cluProjectName proměnné a cluDeploymentName na názvy projektu a nasazení. Informace o tom, jak vytvořit projekt CLU a nasazení, najdete v tématu Vytvoření konverzačního Language Understanding projektu.

  5. Pokud chcete změnit jazyk rozpoznávání řeči, nahraďte en-US jiným podporovaným jazykem. Například es-ES pro španělštinu (Španělsko). Výchozí jazyk je en-US , pokud nezadáte jazyk. Podrobnosti o tom, jak identifikovat jeden z více jazyků, které by se mohly mluvit, najdete v tématu Identifikace jazyka.

Spusťte novou konzolovou aplikaci a spusťte rozpoznávání řeči z mikrofonu:

dotnet run

Důležité

Ujistěte se, že jste nastavili LANGUAGE_KEYproměnné prostředí , LANGUAGE_ENDPOINT, SPEECH_KEYa SPEECH_REGION , jak je popsáno výše. Pokud tyto proměnné nenastavíte, ukázka selže s chybovou zprávou.

Po zobrazení výzvy mluvte do mikrofonu. To, co mluvíte, by mělo být výstupem jako text:

Speak into your microphone.
RECOGNIZED: Text=Turn on the lights.
    Intent Id: HomeAutomation.TurnOn.
    Language Understanding JSON: {"kind":"ConversationResult","result":{"query":"turn on the lights","prediction":{"topIntent":"HomeAutomation.TurnOn","projectKind":"Conversation","intents":[{"category":"HomeAutomation.TurnOn","confidenceScore":0.97712576},{"category":"HomeAutomation.TurnOff","confidenceScore":0.8431633},{"category":"None","confidenceScore":0.782861}],"entities":[{"category":"HomeAutomation.DeviceType","text":"lights","offset":12,"length":6,"confidenceScore":1,"extraInformation":[{"extraInformationKind":"ListKey","key":"light"}]}]}}}.

Poznámka

Podpora odpovědi JSON pro CLU prostřednictvím vlastnosti LanguageUnderstandingServiceResponse_JsonResult byla přidána v sadě Speech SDK verze 1.26.

Záměry se vrací v pořadí pravděpodobnosti s největší pravděpodobností nebo nejméně pravděpodobnou. Tady je formátovaná verze výstupu JSON, kde topIntent je se HomeAutomation.TurnOn skóre spolehlivosti 0,97712576 (97,71 %). Druhým nejpravděpodobnějším záměrem může být HomeAutomation.TurnOff skóre spolehlivosti 0,8985081 (84,31 %).

{
  "kind": "ConversationResult",
  "result": {
    "query": "turn on the lights",
    "prediction": {
      "topIntent": "HomeAutomation.TurnOn",
      "projectKind": "Conversation",
      "intents": [
        {
          "category": "HomeAutomation.TurnOn",
          "confidenceScore": 0.97712576
        },
        {
          "category": "HomeAutomation.TurnOff",
          "confidenceScore": 0.8431633
        },
        {
          "category": "None",
          "confidenceScore": 0.782861
        }
      ],
      "entities": [
        {
          "category": "HomeAutomation.DeviceType",
          "text": "lights",
          "offset": 12,
          "length": 6,
          "confidenceScore": 1,
          "extraInformation": [
            {
              "extraInformationKind": "ListKey",
              "key": "light"
            }
          ]
        }
      ]
    }
  }
}

Poznámky

Teď, když jste dokončili rychlý start, je potřeba vzít v úvahu několik dalších aspektů:

  • V tomto příkladu RecognizeOnceAsync se operace používá k přepisu promluv v trvání až 30 sekund nebo do zjištění ticha. Informace o nepřetržitém rozpoznávání delšího zvuku, včetně vícejazyčných konverzací, najdete v tématu Rozpoznávání řeči.
  • Pokud chcete rozpoznat řeč ze zvukového souboru, použijte FromWavFileInput místo :FromDefaultMicrophoneInput
    using var audioConfig = AudioConfig.FromWavFileInput("YourAudioFile.wav");
    
  • Pro komprimované zvukové soubory, jako je MP4, nainstalujte GStreamer a použijte PullAudioInputStream nebo PushAudioInputStream. Další informace najdete v tématu Použití komprimovaného vstupního zvuku.

Vyčištění prostředků

Vytvořené prostředky jazyka a služby Speech můžete odebrat pomocí Azure Portal nebo rozhraní příkazového řádku (CLI) Azure.

Referenční dokumentace | Balíček (NuGet) | Další ukázky na GitHubu

V tomto rychlém startu použijete služby Řeč a Jazyk k rozpoznávání záměrů ze zvukových dat zachycených z mikrofonu. Konkrétně použijete službu Speech k rozpoznávání řeči a model konverzační Language Understanding (CLU) k identifikaci záměrů.

Důležité

Konverzační Language Understanding (CLU) je k dispozici pro C# a C++ se sadou Speech SDK verze 1.25 nebo novější.

Požadavky

Nastavení prostředí

Sada Speech SDK je k dispozici jako balíček NuGet a implementuje .NET Standard 2.0. Sadu Speech SDK nainstalujete později v této příručce, ale nejprve zkontrolujte další požadavky v průvodci instalací sady SDK .

Nastavení proměnných prostředí

Tento příklad vyžaduje proměnné prostředí s názvy LANGUAGE_KEY, LANGUAGE_ENDPOINT, SPEECH_KEYa SPEECH_REGION.

Aby vaše aplikace získala přístup k prostředkům služeb Azure AI, musí být ověřená. V produkčním prostředí použijte zabezpečený způsob ukládání a přístupu k přihlašovacím údajům. Když například získáte klíč pro prostředek , zapište ho do nové proměnné prostředí na místním počítači, na kterém aplikace běží.

Tip

Nezahrnujte klíč přímo do kódu a nikdy ho nezveřejníte. Další možnosti ověřování, jako je Azure Key Vault, najdete v článku Zabezpečení služeb Azure AI.

Pokud chcete nastavit proměnné prostředí, otevřete okno konzoly a postupujte podle pokynů pro váš operační systém a vývojové prostředí.

  • Pokud chcete nastavit proměnnou LANGUAGE_KEY prostředí, nahraďte your-language-key jedním z klíčů pro váš prostředek.
  • Pokud chcete nastavit proměnnou LANGUAGE_ENDPOINT prostředí, nahraďte your-language-endpoint jednou z oblastí pro váš prostředek.
  • Pokud chcete nastavit proměnnou SPEECH_KEY prostředí, nahraďte your-speech-key jedním z klíčů pro váš prostředek.
  • Pokud chcete nastavit proměnnou SPEECH_REGION prostředí, nahraďte your-speech-region jednou z oblastí pro váš prostředek.
setx LANGUAGE_KEY your-language-key
setx LANGUAGE_ENDPOINT your-language-endpoint
setx SPEECH_KEY your-speech-key
setx SPEECH_REGION your-speech-region

Poznámka

Pokud potřebujete získat přístup pouze k proměnné prostředí v aktuálně spuštěné konzole, můžete proměnnou prostředí nastavit pomocí setxproměnné set místo .

Po přidání proměnných prostředí může být nutné restartovat všechny spuštěné programy, které budou potřebovat přečíst proměnnou prostředí, včetně okna konzoly. Pokud například jako editor používáte Visual Studio, před spuštěním příkladu visual studio restartujte.

Vytvoření projektu konverzační Language Understanding

Jakmile budete mít vytvořený prostředek jazyka, vytvořte v nástroji Language Studio projekt pro porozumění konverzaci jazyka. Projekt je pracovní oblast pro vytváření vlastních modelů ML na základě vašich dat. K projektu máte přístup jenom vy a ostatní uživatelé, kteří mají přístup k používanému prostředku jazyka.

Přejděte do jazykového studia a přihlaste se pomocí svého účtu Azure.

Vytvoření projektu pro porozumění konverzačnímu jazyku

Pro účely tohoto rychlého startu si můžete stáhnout tento ukázkový projekt domácí automatizace a naimportovat ho. Tento projekt dokáže předpovědět zamýšlené příkazy z uživatelského vstupu, jako je například zapnutí a vypnutí světel.

  1. V části Vysvětlení otázek a konverzačního jazyka v nástroji Language Studio vyberte Porozumění konverzačnímu jazyku.

    Snímek obrazovky znázorňující umístění vlastního Language Understanding na cílové stránce language studia

  2. Tím se dostanete na stránku projektů pro porozumění konverzačnímu jazyku . Vedle tlačítka Vytvořit nový projekt vyberte Importovat.

    Snímek obrazovky zobrazující stránku projektu konverzace v sadě Language Studio

  3. V zobrazeném okně nahrajte soubor JSON, který chcete importovat. Ujistěte se, že soubor odpovídá podporovanému formátu JSON.

Po dokončení nahrávání se dostanete na stránku Definice schématu . Pro účely tohoto rychlého startu je schéma už sestavené a promluvy už jsou označené záměry a entitami.

Trénování modelu

Po vytvoření projektu byste obvykle měli vytvořit schéma a popisky promluv. Pro účely tohoto rychlého startu jsme už naimportovali připravený projekt se sestaveným schématem a označenými promluvami.

Pokud chcete vytrénovat model, musíte spustit trénovací úlohu. Výstupem úspěšné trénovací úlohy je trénovaný model.

Pokud chcete začít s trénováním modelu v sadě Language Studio:

  1. V nabídce na levé straně vyberte Trénovat model .

  2. V horní nabídce vyberte Spustit trénovací úlohu .

  3. Vyberte Trénování nového modelu a zadejte nový název modelu do textového pole. Pokud chcete nahradit existující model modelem natrénovaným na nových datech, vyberte Přepsat existující model a pak vyberte existující model. Přepsání natrénovaného modelu je nevratné, ale nasazené modely neovlivní, dokud nový model nenasadíte.

  4. Vyberte režim trénování. Pro rychlejší trénování můžete zvolit standardní trénování , ale je k dispozici jenom pro angličtinu. Nebo můžete zvolit pokročilé školení , které je podporované pro jiné jazyky a vícejazyčné projekty, ale zahrnuje delší dobu trénování. Přečtěte si další informace o režimech trénování.

  5. Vyberte metodu dělení dat . Můžete zvolit automatické rozdělení testovací sady od trénovacích dat , kdy systém rozdělí promluvy mezi trénovací a testovací sadu podle zadaných procent. Nebo můžete použít ruční rozdělení trénovacích a testovacích dat. Tato možnost je povolená jenom v případě, že jste při označování promluv přidali do testovací sady promluvy.

  6. Vyberte tlačítko Train (Trénovat).

    Snímek obrazovky zobrazující stránku školení v sadě Language Studio

  7. V seznamu vyberte ID trénovací úlohy. Zobrazí se panel, kde můžete zkontrolovat průběh trénování, stav úlohy a další podrobnosti pro tuto úlohu.

    Poznámka

    • Modely budou generovat pouze úspěšně dokončené trénovací úlohy.
    • Trénování může na základě počtu promluv trvat nějakou dobu mezi několika minutami a několika hodinami.
    • Najednou můžete mít spuštěnou pouze jednu úlohu trénování. V rámci stejného projektu nemůžete spustit další úlohy trénování, dokud se spuštěná úloha nedokončí.
    • Strojové učení používané k trénování modelů se pravidelně aktualizuje. Pokud chcete trénovat na předchozí verzi konfigurace, vyberte Vybrat sem, pokud chcete změnit na stránce Spustit trénovací úlohu a zvolte předchozí verzi.

Nasazení modelu

Obecně platí, že po vytrénování modelu byste si prostudovali podrobnosti o jeho vyhodnocení. V tomto rychlém startu jednoduše nasadíte model a zpřístupníte ho k vyzkoušení v language studiu, nebo můžete volat rozhraní API pro predikce.

Nasazení modelu z jazykového studia:

  1. V nabídce na levé straně vyberte Deploying a model (Nasazení modelu ).

  2. Výběrem možnosti Přidat nasazeníspusťte průvodce přidáním nasazení .

    Snímek obrazovky s tlačítkem pro nasazení modelu v sadě Language Studio

  3. Výběrem možnosti Create a new deployment name (Vytvořit nový název nasazení) vytvořte nové nasazení a v rozevíracím seznamu níže přiřaďte vytrénovaný model. Jinak můžete vybrat možnost Přepsat existující název nasazení a efektivně tak nahradit model používaný existujícím nasazením.

    Poznámka

    Přepsání existujícího nasazení nevyžaduje změny volání rozhraní API pro predikce , ale výsledky, které získáte, budou vycházet z nově přiřazeného modelu.

    Snímek obrazovky s obrazovkou pro přidání nového nasazení v sadě Language Studio

  4. V rozevíracím seznamu Model vyberte vytrénovaný model.

  5. Výběrem možnosti Nasadit spusťte úlohu nasazení.

  6. Po úspěšném nasazení se vedle něj zobrazí datum vypršení platnosti. K vypršení platnosti nasazení dochází v případě, že nasazený model nebude možné použít k predikci, k čemuž obvykle dochází dvanáct měsíců po vypršení platnosti trénovací konfigurace.

V další části použijete název projektu a název nasazení.

Rozpoznávání záměrů z mikrofonu

Podle těchto kroků vytvořte novou konzolovou aplikaci a nainstalujte sadu Speech SDK.

  1. Vytvořte nový projekt konzoly C++ v Visual Studio Community 2022 s názvem SpeechRecognition.

  2. Nainstalujte sadu Speech SDK do nového projektu pomocí správce balíčků NuGet.

    Install-Package Microsoft.CognitiveServices.Speech
    
  3. Nahraďte obsah souboru SpeechRecognition.cpp následujícím kódem:

    #include <iostream> 
    #include <stdlib.h>
    #include <speechapi_cxx.h>
    
    using namespace Microsoft::CognitiveServices::Speech;
    using namespace Microsoft::CognitiveServices::Speech::Audio;
    using namespace Microsoft::CognitiveServices::Speech::Intent;
    
    std::string GetEnvironmentVariable(const char* name);
    
    int main()
    {
        // This example requires environment variables named:
        // "LANGUAGE_KEY", "LANGUAGE_ENDPOINT", "SPEECH_KEY", and "SPEECH_REGION"
        auto languageKey = GetEnvironmentVariable("LANGUAGE_KEY");
        auto languageEndpoint = GetEnvironmentVariable("LANGUAGE_ENDPOINT");
        auto speechKey = GetEnvironmentVariable("SPEECH_KEY");
        auto speechRegion = GetEnvironmentVariable("SPEECH_REGION");
    
        auto cluProjectName = "YourProjectNameGoesHere";
        auto cluDeploymentName = "YourDeploymentNameGoesHere";
    
        if ((size(languageKey) == 0) || (size(languageEndpoint) == 0) || (size(speechKey) == 0) || (size(speechRegion) == 0)) {
            std::cout << "Please set LANGUAGE_KEY, LANGUAGE_ENDPOINT, SPEECH_KEY, and SPEECH_REGION environment variables." << std::endl;
            return -1;
        }
    
        auto speechConfig = SpeechConfig::FromSubscription(speechKey, speechRegion);
    
        speechConfig->SetSpeechRecognitionLanguage("en-US");
    
        auto audioConfig = AudioConfig::FromDefaultMicrophoneInput();
        auto intentRecognizer = IntentRecognizer::FromConfig(speechConfig, audioConfig);
    
        std::vector<std::shared_ptr<LanguageUnderstandingModel>> models;
    
        auto cluModel = ConversationalLanguageUnderstandingModel::FromResource(
            languageKey,
            languageEndpoint,
            cluProjectName,
            cluDeploymentName);
    
        models.push_back(cluModel);
        intentRecognizer->ApplyLanguageModels(models);
    
        std::cout << "Speak into your microphone.\n";
        auto result = intentRecognizer->RecognizeOnceAsync().get();
    
        if (result->Reason == ResultReason::RecognizedIntent)
        {
            std::cout << "RECOGNIZED: Text=" << result->Text << std::endl;
            std::cout << "  Intent Id: " << result->IntentId << std::endl;
            std::cout << "  Intent Service JSON: " << result->Properties.GetProperty(PropertyId::LanguageUnderstandingServiceResponse_JsonResult) << std::endl;
        }
        else if (result->Reason == ResultReason::RecognizedSpeech)
        {
            std::cout << "RECOGNIZED: Text=" << result->Text << " (intent could not be recognized)" << std::endl;
        }
        else if (result->Reason == ResultReason::NoMatch)
        {
            std::cout << "NOMATCH: Speech could not be recognized." << std::endl;
        }
        else if (result->Reason == ResultReason::Canceled)
        {
            auto cancellation = CancellationDetails::FromResult(result);
            std::cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl;
    
            if (cancellation->Reason == CancellationReason::Error)
            {
                std::cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl;
                std::cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl;
                std::cout << "CANCELED: Did you update the subscription info?" << std::endl;
            }
        }
    }
    
    std::string GetEnvironmentVariable(const char* name)
    {
    #if defined(_MSC_VER)
        size_t requiredSize = 0;
        (void)getenv_s(&requiredSize, nullptr, 0, name);
        if (requiredSize == 0)
        {
            return "";
        }
        auto buffer = std::make_unique<char[]>(requiredSize);
        (void)getenv_s(&requiredSize, buffer.get(), requiredSize, name);
        return buffer.get();
    #else
        auto value = getenv(name);
        return value ? value : "";
    #endif
    }
    
  4. V SpeechRecognition.cpp nastavte cluProjectName proměnné a cluDeploymentName na názvy projektu a nasazení. Informace o tom, jak vytvořit projekt CLU a nasazení, najdete v tématu Vytvoření konverzačního Language Understanding projektu.

  5. Pokud chcete změnit jazyk rozpoznávání řeči, nahraďte en-US jiným podporovaným jazykem. Například es-ES pro španělštinu (Španělsko). Výchozí jazyk je en-US , pokud nezadáte jazyk. Podrobnosti o tom, jak identifikovat jeden z více jazyků, které by se mohly mluvit, najdete v tématu Identifikace jazyka.

Sestavte a spusťte novou konzolovou aplikaci, která spustí rozpoznávání řeči z mikrofonu.

Důležité

Ujistěte se, že jste nastavili LANGUAGE_KEYproměnné prostředí , LANGUAGE_ENDPOINT, SPEECH_KEYa SPEECH_REGION , jak je popsáno výše. Pokud tyto proměnné nenastavíte, ukázka selže s chybovou zprávou.

Po zobrazení výzvy mluvte do mikrofonu. To, co mluvíte, by mělo být výstupem jako text:

Speak into your microphone.
RECOGNIZED: Text=Turn on the lights.
    Intent Id: HomeAutomation.TurnOn.
    Language Understanding JSON: {"kind":"ConversationResult","result":{"query":"turn on the lights","prediction":{"topIntent":"HomeAutomation.TurnOn","projectKind":"Conversation","intents":[{"category":"HomeAutomation.TurnOn","confidenceScore":0.97712576},{"category":"HomeAutomation.TurnOff","confidenceScore":0.8431633},{"category":"None","confidenceScore":0.782861}],"entities":[{"category":"HomeAutomation.DeviceType","text":"lights","offset":12,"length":6,"confidenceScore":1,"extraInformation":[{"extraInformationKind":"ListKey","key":"light"}]}]}}}.

Poznámka

Podpora odpovědi JSON pro CLU prostřednictvím vlastnosti LanguageUnderstandingServiceResponse_JsonResult byla přidána v sadě Speech SDK verze 1.26.

Záměry se vrací v pořadí pravděpodobnosti s největší pravděpodobností nebo nejméně pravděpodobnou. Tady je formátovaná verze výstupu JSON, kde topIntent je se HomeAutomation.TurnOn skóre spolehlivosti 0,97712576 (97,71 %). Druhým nejpravděpodobnějším záměrem může být HomeAutomation.TurnOff skóre spolehlivosti 0,8985081 (84,31 %).

{
  "kind": "ConversationResult",
  "result": {
    "query": "turn on the lights",
    "prediction": {
      "topIntent": "HomeAutomation.TurnOn",
      "projectKind": "Conversation",
      "intents": [
        {
          "category": "HomeAutomation.TurnOn",
          "confidenceScore": 0.97712576
        },
        {
          "category": "HomeAutomation.TurnOff",
          "confidenceScore": 0.8431633
        },
        {
          "category": "None",
          "confidenceScore": 0.782861
        }
      ],
      "entities": [
        {
          "category": "HomeAutomation.DeviceType",
          "text": "lights",
          "offset": 12,
          "length": 6,
          "confidenceScore": 1,
          "extraInformation": [
            {
              "extraInformationKind": "ListKey",
              "key": "light"
            }
          ]
        }
      ]
    }
  }
}

Poznámky

Teď, když jste dokončili rychlý start, je potřeba vzít v úvahu několik dalších aspektů:

  • V tomto příkladu RecognizeOnceAsync se operace používá k přepisu promluv v trvání až 30 sekund nebo do zjištění ticha. Informace o nepřetržitém rozpoznávání delšího zvuku, včetně vícejazyčných konverzací, najdete v tématu Rozpoznávání řeči.
  • Pokud chcete rozpoznat řeč ze zvukového souboru, použijte FromWavFileInput místo :FromDefaultMicrophoneInput
    auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav");
    
  • Pro komprimované zvukové soubory, jako je MP4, nainstalujte GStreamer a použijte PullAudioInputStream nebo PushAudioInputStream. Další informace najdete v tématu Použití komprimovaného vstupního zvuku.

Vyčištění prostředků

Vytvořené prostředky jazyka a služby Speech můžete odebrat pomocí Azure Portal nebo rozhraní příkazového řádku (CLI) Azure.

Referenční dokumentace | Další ukázky na GitHubu

Sada Speech SDK pro Javu nepodporuje rozpoznávání záměru pomocí porozumění konverzačnímu jazyku (CLU). Vyberte jiný programovací jazyk nebo referenční informace o javě a ukázky, na které odkazujeme na začátku tohoto článku.

Další kroky