Partager via


SourceLanguageRecognizer.RecognizeOnceAsync Méthode

Définition

Démarre la reconnaissance de la langue source en tant qu’opération asynchrone.

public System.Threading.Tasks.Task<Microsoft.CognitiveServices.Speech.SpeechRecognitionResult> RecognizeOnceAsync ();
member this.RecognizeOnceAsync : unit -> System.Threading.Tasks.Task<Microsoft.CognitiveServices.Speech.SpeechRecognitionResult>
Public Function RecognizeOnceAsync () As Task(Of SpeechRecognitionResult)

Retours

Tâche représentant l’opération de reconnaissance. La tâche retourne une valeur de SpeechRecognitionResult

Exemples

L’exemple suivant crée un module de reconnaissance de langue source, puis obtient et imprime le résultat de la reconnaissance.

public async Task SingleLanguageIdRecognitionAsync()
{
    // Creates an instance of a speech config with specified subscription key and region.
    // Replace with your own subscription key and service region (e.g., "westus").
    var config = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");
    config.SetProperty(PropertyId.SpeechServiceConnection_SingleLanguageIdPriority, "Latency");

    // Creates a speech recognizer using microphone as audio input. Default language: en-us
    using (var sourceLanguageRecognizer = new SourceLanguageRecognizer(config))
    {
        Console.WriteLine("Say something...");

        // Starts source language 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 timeout period has elapsed.  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 sourceLanguageRecognizer.RecognizeOnceAsync();

        // Checks result.
        if (result.Reason == ResultReason.RecognizedSpeech)
        {
            var lidResult = AutoDetectSourceLanguageResult.FromResult(e.Result);
            Console.WriteLine($"RECOGNIZED: Language={lidResult.Language}");
        }
        else if (result.Reason == ResultReason.NoMatch)
        {
            Console.WriteLine($"NOMATCH: Speech could not be recognized.");
        }
        else if (result.Reason == ResultReason.Canceled)
        {
            var cancellation = CancellationDetails.FromResult(result);
            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?");
            }
        }
    }
}

Remarques

La fin d’un seul énoncé est déterminée en écoutant le silence à la fin ou jusqu’à ce qu’un délai d’expiration soit écoulé. La tâche retourne la voix reconnue dans **SpeechRecognitionResult.Text**.

Vous pouvez appeler **StopContinuousRecognitionAsync** pour arrêter la reconnaissance avant qu’une expression n’ait été reconnue.

Étant donné que cette méthode ne retourne qu’un seul énoncé, elle ne convient qu’à la reconnaissance d’un seul coup, comme une commande ou une requête. Pour la reconnaissance multi-énoncé de longue durée, utilisez **StartContinuousRecognitionAsync** à la place.

Voir aussi : Détection automatique de la langue pour la reconnaissance vocale

S’applique à