Snabbstart: Identifiera tal med talet SDK för UnityQuickstart: Recognize speech with the Speech SDK for Unity

Snabb Starter är också tillgängliga för text till tal.Quickstarts are also available for text-to-speech.

Använd den här guiden för att skapa ett tal-till-text-program med hjälp av Unity och talet SDK för Unity.Use this guide to create a speech-to-text application using Unity and the Speech SDK for Unity. När du är färdig kan du prata med din enhet för att skriva tal till text i real tid.When finished, you can talk into your device to transcribe speech to text in real time. Om du är nybörjare på enhets nivå föreslår vi att du studerar enhets bevarans Användar handbok innan du utvecklar ditt program.If you're new to Unity, we suggest you study the Unity User Manual before developing your application.

Anteckning

Talet SDK för Unit stöder Windows Desktop (x86 och x64) eller Universell Windows-plattform (x86, x64, ARM/ARM64), Android (x86, ARM32/64) och iOS (x64 simulator, ARM32 och ARM64)The Speech SDK for Unity supports Windows Desktop (x86 and x64) or Universal Windows Platform (x86, x64, ARM/ARM64), Android (x86, ARM32/64) and iOS (x64 simulator, ARM32 and ARM64)

FörutsättningarPrerequisites

För att slutföra det här projektet behöver du:To complete this project, you'll need:

Skapa ett Unity-projektCreate a Unity project

  1. Öppna Unity.Open Unity. Om du använder Unity för första gången visas fönstret Unity Hub .If you're using Unity for the first time, the Unity Hub window appears. (Du kan också öppna Unity Hub direkt för att komma till det här fönstret.)(You can also open Unity Hub directly to get to this window.)

    @no__t 1Unity Hub-fönster](media/sdk/qs-csharp-unity-hub.png#lightbox)Unity Hub window

  2. Välj Ny.Select New. Fönstret skapa ett nytt projekt med unity visas.The Create a new project with Unity window appears.

    @no__t – 1Create ett nytt projekt i Unity Hub](media/sdk/qs-csharp-unity-create-a-new-project.png#lightbox)Create a new project in Unity Hub

  3. I projekt namnanger du csharp-Unity.In Project Name, enter csharp-unity.

  4. I mallar, om 3D inte redan är markerat, markerar du det.In Templates, if 3D isn't already selected, select it.

  5. I platsväljer eller skapar du en mapp för att spara projektet i.In Location, select or create a folder to save the project in.

  6. Välj Skapa.Select Create.

Efter en stund visas fönstret Unity Editor.After a bit of time, the Unity Editor window appears.

Installera Speech SDKInstall the Speech SDK

Följ dessa steg om du vill installera tal-SDK för Unity:To install the Speech SDK for Unity, follow these steps:

Viktigt

När du väljer att ladda ned någon av Speech SDK för Cognitive Services-komponenterna på den här sidan accepterar du även dess licens.By downloading any of the Speech SDK for Azure Cognitive Services components on this page, you acknowledge its license. Se licensvillkoren för Microsoft-programvara för Speech SDK.See the Microsoft Software License Terms for the Speech SDK.

  1. Hämta och öppna tal-SDK förenhets enhet, som paketeras som ett enhets paket för till gång (. unitypackage).Download and open the Speech SDK for Unity, which is packaged as a Unity asset package (.unitypackage). När du öppnar till gångs paketet visas dialog rutan Importera Unity-paket .When the asset package is opened, the Import Unity Package dialog box appears.

    dialog rutan @no__t 1Import union Package i Unity-redigeraren](media/sdk/qs-csharp-unity-01-import.png#lightbox)Import Unity Package dialog box in the Unity Editor

  2. Se till att alla filer är markerade och välj Importera.Ensure that all files are selected, and select Import. Efter en liten stund importeras Unity Asset-paketet till projektet.After a few moments, the Unity asset package is imported into your project.

Mer information om hur du importerar till gångs paket i enighet finns i Unity-dokumentationen.For more information about importing asset packages into Unity, see the Unity documentation.

Lägga till användargränssnittAdd UI

Nu ska vi lägga till ett minimalt gränssnitt i vår scen.Now let's add a minimal UI to our scene. Det här gränssnittet består av en knapp som utlöser tal igenkänning och ett textfält som visar resultatet.This UI consists of a button to trigger speech recognition and a text field to display the result. I fönstret hierarki visas ett exempel på en scen som har skapats med det nya projektet.In the Hierarchy window, a sample scene is shown that Unity created with the new project.

  1. Längst upp i hierarkin väljer du skapa > UI > -knapp.At the top of the Hierarchy window, select Create > UI > Button.

    Den här åtgärden skapar tre spel objekt som du kan se i hierarkifönstret : ett knapp objekt, ett arbets ytans objekt som innehåller knappen och ett Event Events -objekt.This action creates three game objects that you can see in the Hierarchy window: a Button object, a Canvas object containing the button, and an EventSystem object.

    Unity redigerings miljöUnity Editor environment

  2. Navigera i vyn scen så att du har en lämplig vy över arbets ytan och knappen i vyn scen .Navigate the Scene view so you have a good view of the canvas and the button in the Scene view.

  3. I fönstret kontrollant (som standard till höger) anger du egenskaperna för POS X -och POS Y till 0, så knappen centreras i mitten av arbets ytan.In the Inspector window (by default on the right), set the Pos X and Pos Y properties to 0, so the button is centered in the middle of the canvas.

  4. I fönstret hierarki väljer du skapa > UI > text för att skapa ett text objekt.In the Hierarchy window, select Create > UI > Text to create a Text object.

  5. I fönstret kontrollant ställer du in egenskaperna för POS X och pos Y0 och 120och anger egenskaperna för Bredd och höjd till 240 och 120.In the Inspector window, set the Pos X and Pos Y properties to 0 and 120, and set the Width and Height properties to 240 and 120. Dessa värden ser till att textfältet och knappen inte överlappar varandra.These values ensure that the text field and the button don't overlap.

När du är klar bör scenen se ut ungefär som den här skärm bilden:When you're done, the Scene view should look similar to this screenshot:

@no__t 1Scene-vyn i Unity-redigeraren](media/sdk/qs-csharp-unity-02-ui-inline.png#lightbox)Scene view in the Unity Editor

Lägga till exempelkodenAdd the sample code

Följ dessa steg om du vill lägga till exempel skript koden för Unity-projektet:To add the sample script code for the Unity project, follow these steps:

  1. I projekt fönstretväljer du skapa > C# -skript för att lägga till C# ett nytt skript.In the Project window, select Create > C# script to add a new C# script.

    Project-fönstret i Unity-redigerarenProject window in the Unity Editor

  2. Ge skriptet namnet HelloWorld.Name the script HelloWorld.

  3. Dubbelklicka på HelloWorld om du vill redigera det nyligen skapade skriptet.Double-click HelloWorld to edit the newly created script.

    Anteckning

    Om du vill konfigurera kod redigeraren så att den används av Unit för redigering väljer du redigera > Inställningaroch går sedan till inställningarna för externa verktyg .To configure the code editor to be used by Unity for editing, select Edit > Preferences, and then go to the External Tools preferences. Mer information finns i användar handboken för Unity.For more information, see the Unity User Manual.

  4. Ersätt det befintliga skriptet med följande kod:Replace the existing script with the following code:

    using UnityEngine;
    using UnityEngine.UI;
    using Microsoft.CognitiveServices.Speech;
    #if PLATFORM_ANDROID
    using UnityEngine.Android;
    #endif
    #if PLATFORM_IOS
    using UnityEngine.iOS;
    using System.Collections;
    #endif
    
    public class HelloWorld : MonoBehaviour
    {
        // Hook up the two properties below with a Text and Button object in your UI.
        public Text outputText;
        public Button startRecoButton;
    
        private object threadLocker = new object();
        private bool waitingForReco;
        private string message;
    
        private bool micPermissionGranted = false;
    
    #if PLATFORM_ANDROID || PLATFORM_IOS
        // Required to manifest microphone permission, cf.
        // https://docs.unity3d.com/Manual/android-manifest.html
        private Microphone mic;
    #endif
    
        public async void ButtonClick()
        {
            // Creates an instance of a speech config with specified subscription key and service region.
            // Replace with your own subscription key and service region (e.g., "westus").
            var config = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");
    
            // Make sure to dispose the recognizer after use!
            using (var recognizer = new SpeechRecognizer(config))
            {
                lock (threadLocker)
                {
                    waitingForReco = true;
                }
    
                // Starts speech recognition, and returns after a single utterance is recognized. The end of a
                // single utterance is determined by listening for silence at the end or until a maximum of 15
                // seconds of audio is processed.  The task returns the recognition text as result.
                // Note: Since RecognizeOnceAsync() returns only a single utterance, it is suitable only for single
                // shot recognition like command or query.
                // For long-running multi-utterance recognition, use StartContinuousRecognitionAsync() instead.
                var result = await recognizer.RecognizeOnceAsync().ConfigureAwait(false);
    
                // Checks result.
                string newMessage = string.Empty;
                if (result.Reason == ResultReason.RecognizedSpeech)
                {
                    newMessage = result.Text;
                }
                else if (result.Reason == ResultReason.NoMatch)
                {
                    newMessage = "NOMATCH: Speech could not be recognized.";
                }
                else if (result.Reason == ResultReason.Canceled)
                {
                    var cancellation = CancellationDetails.FromResult(result);
                    newMessage = $"CANCELED: Reason={cancellation.Reason} ErrorDetails={cancellation.ErrorDetails}";
                }
    
                lock (threadLocker)
                {
                    message = newMessage;
                    waitingForReco = false;
                }
            }
        }
    
        void Start()
        {
            if (outputText == null)
            {
                UnityEngine.Debug.LogError("outputText property is null! Assign a UI Text element to it.");
            }
            else if (startRecoButton == null)
            {
                message = "startRecoButton property is null! Assign a UI Button to it.";
                UnityEngine.Debug.LogError(message);
            }
            else
            {
                // Continue with normal initialization, Text and Button objects are present.
    #if PLATFORM_ANDROID
                // Request to use the microphone, cf.
                // https://docs.unity3d.com/Manual/android-RequestingPermissions.html
                message = "Waiting for mic permission";
                if (!Permission.HasUserAuthorizedPermission(Permission.Microphone))
                {
                    Permission.RequestUserPermission(Permission.Microphone);
                }
    #elif PLATFORM_IOS
                if (!Application.HasUserAuthorization(UserAuthorization.Microphone))
                {
                    Application.RequestUserAuthorization(UserAuthorization.Microphone);
                }
    #else
                micPermissionGranted = true;
                message = "Click button to recognize speech";
    #endif
                startRecoButton.onClick.AddListener(ButtonClick);
            }
        }
    
        void Update()
        {
    #if PLATFORM_ANDROID
            if (!micPermissionGranted && Permission.HasUserAuthorizedPermission(Permission.Microphone))
            {
                micPermissionGranted = true;
                message = "Click button to recognize speech";
            }
    #elif PLATFORM_IOS
            if (!micPermissionGranted && Application.HasUserAuthorization(UserAuthorization.Microphone))
            {
                micPermissionGranted = true;
                message = "Click button to recognize speech";
            }
    #endif
    
            lock (threadLocker)
            {
                if (startRecoButton != null)
                {
                    startRecoButton.interactable = !waitingForReco && micPermissionGranted;
                }
                if (outputText != null)
                {
                    outputText.text = message;
                }
            }
        }
    }
    
  5. Sök efter och ersätt strängen YourSubscriptionKey med din prenumerations nyckel för tal tjänster.Find and replace the string YourSubscriptionKey with your Speech Services subscription key.

  6. Sök efter och ersätt strängen YourServiceRegion med den region som är associerad med din prenumeration.Find and replace the string YourServiceRegion with the region associated with your subscription. Om du till exempel använder den kostnadsfria utvärderingsversionen är regionen westus.For example, if you're using the free trial, the region is westus.

  7. Spara ändringarna i skriptet.Save the changes to the script.

Gå tillbaka till Unity-redigeraren och Lägg till skriptet som en komponent till ett av dina spel objekt:Now return to the Unity Editor and add the script as a component to one of your game objects:

  1. I fönstret hierarki väljer du objektet arbets yta .In the Hierarchy window, select the Canvas object.

  2. I fönstret kontrollant väljer du knappen Lägg till komponent .In the Inspector window, select the Add Component button.

    Inspector-fönstret i Unity-redigerarenInspector window in the Unity Editor

  3. I list rutan söker du efter det HelloWorld-skript som vi skapade ovan och lägger till det.In the drop-down list, search for the HelloWorld script we created above and add it. Ett Hello World (skript) visas i fönstret kontrollant , som visar två oinitierade egenskaper, utdata-text och knappen starta åters.A Hello World (Script) section appears in the Inspector window, listing two uninitialized properties, Output Text and Start Reco Button. Egenskaperna för den här enhets komponenten matchar de offentliga egenskaperna för klassen HelloWorld.These Unity component properties match public properties of the HelloWorld class.

  4. Välj objekt väljaren för knappen starta åters (den lilla cirkel ikonen till höger om egenskapen) och välj det knapp objekt som du skapade tidigare.Select the Start Reco Button property's object picker (the small circle icon to the right of the property), and choose the Button object you created earlier.

  5. Välj objekt väljar egenskapen utgående text och välj textobjektet som du skapade tidigare.Select the Output Text property's object picker, and choose the Text object you created earlier.

    Anteckning

    Knappen har även ett kapslat textobjekt.The button also has a nested text object. Se till att du inte av misstag väljer att använda text utdata (eller byta namn på ett text objekt med fältet namn i fönstret kontrollant för att undvika förvirring).Make sure you do not accidentally pick it for text output (or rename one of the text objects using the Name field in the Inspector window to avoid confusion).

Köra programmet i Unity EditorRun the application in the Unity Editor

Nu är du redo att köra programmet i Unity-redigeraren.Now you're ready to run the application within the Unity Editor.

  1. I verktygsfältet för Unity-redigeraren (under meny raden) väljer du knappen spela upp (en högerriktad triangel).In the Unity Editor toolbar (below the menu bar), select the Play button (a right-pointing triangle).

  2. Gå till spel lägeoch vänta tills textobjektet visar knappen Klicka för att känna igen tal.Go to Game view, and wait for the Text object to display Click button to recognize speech. (Den nya texten visas när programmet inte har startats eller inte är klart att svara.)(It displays New Text when the application hasn't started or isn't ready to respond.)

  3. Välj knappen och tala om en engelsk fras eller mening till datorns mikrofon.Select the button and speak an English phrase or sentence into your computer's microphone. Ditt tal överförs till tal tjänsterna och skrivs till text som visas i vyn spel .Your speech is transmitted to the Speech Services and transcribed to text, which appears in the Game view.

    @no__t 1Game-vyn i Unity-redigeraren](media/sdk/qs-csharp-unity-03-output-inline.png#lightbox)Game view in the Unity Editor

  4. Kontrol lera konsol fönstret för fel söknings meddelanden.Check the Console window for debug messages. Om konsol fönstret inte visas går du till meny raden och väljer fönster > Allmänt > -konsolen för att visa den.If the Console window isn't showing, go to the menu bar and select Window > General > Console to display it.

  5. När du är klar med att känna igen tal väljer du knappen spela upp i verktygsfältet Unity Editor för att stoppa programmet.When you're done recognizing speech, select the Play button in the Unity Editor toolbar to stop the application.

Ytterligare alternativ för att köra det här programmetAdditional options to run this application

Det här programmet kan också distribueras till som en Android-app, en fristående Windows-app eller ett UWP-program.This application can also be deployed to as an Android app, a Windows stand-alone app, or a UWP application. Mer information finns i vår exempel databas.For more information, see our sample repository. I mappen quickstart/csharp-unity beskrivs konfigurationen för dessa ytterligare mål.The quickstart/csharp-unity folder describes the configuration for these additional targets.

Nästa stegNext steps

Se ocksåSee also