Exercice - Créer une application de reconnaissance vocale ponctuelle

Effectué

Dans cet exercice, vous allez créer une application qui utilise la reconnaissance ponctuelle pour transcrire un exemple de fichier audio que vous allez télécharger.

Créer votre application de reconnaissance vocale

  1. Dans Cloud Shell à droite, créez un répertoire pour votre application, puis basculez vers votre nouveau répertoire :

    mkdir speech-to-text
    cd speech-to-text
    
  2. Créez une application .NET Core :

    dotnet new console
    

    Cette commande peut prendre quelques secondes.

  3. Une fois votre application .NET Core créée, ajoutez le package du kit de développement logiciel (SDK) Speech à votre application :

    dotnet add package Microsoft.CognitiveServices.Speech
    

    Cette commande peut prendre quelques secondes.

Télécharger un fichier WAVE pour la reconnaissance

Dans Cloud Shell à droite, exécutez la commande suivante pour télécharger un exemple de fichier WAV qui contient une série de citations de la pièce de William Shakespeare « Comme il vous plaira ».

curl -L https://aka.ms/ShakespeareWAV -o Shakespeare.wav

Vous allez utiliser ce fichier WAV pour l’application utilisée dans cet exercice et celle de l’exercice suivant.

Ajouter le code à votre application de synthèse vocale

  1. Dans Cloud Shell à droite, ouvrez le fichier Program.cs :

    code Program.cs
    
  2. Supprimez tout le code existant et ajoutez les instructions using suivantes, ce qui active les API Azure AI Speech pour votre application :

    using System.Text;
    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    
  3. Ajoutez le code suivant, utilisant les API Azure AI Speech pour convertir le contenu du fichier WAV généré précédemment pour créer un fichier texte avec la voix transcrite. Remplacez les valeurs azureKey et azureLocation par celles que vous avez copiées dans le dernier exercice.

    string azureKey = "ENTER YOUR KEY FROM THE FIRST EXERCISE";
    string azureLocation = "ENTER YOUR LOCATION FROM THE FIRST EXERCISE";
    string textFile = "Shakespeare.txt";
    string waveFile = "Shakespeare.wav";
    
    try
    {
        FileInfo fileInfo = new FileInfo(waveFile);
        if (fileInfo.Exists)
        {
            Console.WriteLine("Speech recognition started.");
            var speechConfig = SpeechConfig.FromSubscription(azureKey, azureLocation);
            using var audioConfig = AudioConfig.FromWavFileInput(fileInfo.FullName);
            using var speechRecognizer = new SpeechRecognizer(speechConfig, audioConfig);
            var result = await speechRecognizer.RecognizeOnceAsync();
    
            FileStream fileStream = File.OpenWrite(textFile);
            StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.UTF8);
            streamWriter.WriteLine(result.Text);
            streamWriter.Close();
            Console.WriteLine("Speech recognition stopped.");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
    

    Ce code utilise votre clé et votre emplacement pour initialiser une connexion à Azure AI Speech. Ensuite, il lit le contenu du fichier WAV que vous avez téléchargé, utilise la méthode RecognizeOnceAsync() de SpeechRecognizer pour convertir l’audio en texte, puis utilise un enregistreur de flux pour enregistrer les résultats dans un fichier texte.

  4. Une fois que vous avez fini d’ajouter tout le code, votre fichier doit ressembler à l’exemple suivant :

    using System.Text;
    using System.Threading.Tasks;
    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    
    string azureKey = "ENTER YOUR KEY FROM THE FIRST EXERCISE";
    string azureLocation = "ENTER YOUR LOCATION FROM THE FIRST EXERCISE";
    string textFile = "Shakespeare.txt";
    string waveFile = "Shakespeare.wav";
    
    try
    {
        FileInfo fileInfo = new FileInfo(waveFile);
        if (fileInfo.Exists)
        {
            Console.WriteLine("Speech recognition started.");
            var speechConfig = SpeechConfig.FromSubscription(azureKey, azureLocation);
            using var audioConfig = AudioConfig.FromWavFileInput(fileInfo.FullName);
            using var speechRecognizer = new SpeechRecognizer(speechConfig, audioConfig);
            var result = await speechRecognizer.RecognizeOnceAsync();
    
            FileStream fileStream = File.OpenWrite(textFile);
            StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.UTF8);
            streamWriter.WriteLine(result.Text);
            streamWriter.Close();
            Console.WriteLine("Speech recognition stopped.");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
    

    Veillez à mettre à jour les valeurs des variables azureKey et azureLocation avec votre clé et l’emplacement de l’exercice précédent.

  5. Pour enregistrer vos modifications, appuyez sur Ctrl+S pour enregistrer le fichier, puis appuyez sur Ctrl+Q pour quitter l’éditeur.

Exécuter votre application

  1. Pour exécuter votre application, utilisez la commande suivante dans Cloud Shell à droite :

    dotnet run
    
  2. Si vous ne voyez aucune erreur, c’est que votre application s’exécute correctement, et vous devez normalement voir les réponses suivantes :

    Speech recognition started.
    Speech recognition stopped.
    
  3. Exécutez la commande suivante pour obtenir la liste des fichiers du répertoire :

    ls -l
    

    Vous devez voir une réponse comme l’exemple suivant, avec Shakespeare.txt figurant dans la liste des fichiers :

    drwxr-xr-x 3 user   user     4096 Oct  1 11:11 bin
    drwxr-xr-x 3 user   user     4096 Oct  1 11:11 obj
    -rw-r--r-- 1 user   user     1476 Oct  1 11:11 Program.cs
    -rw-r--r-- 1 user   user       98 Oct  1 11:11 Shakespeare.txt
    -rwxr-xr-x 1 user   user   978242 Oct  1 11:11 Shakespeare.wav
    -rw-r--r-- 1 user   user      348 Oct  1 11:11 speech to text.csproj
    

    Vous remarquerez que la taille du fichier texte est petite ; dans cet exemple, il ne fait que 98 octets.

  4. Pour voir le contenu du fichier Shakespeare.txt, utilisez la commande suivante :

    cat Shakespeare.txt
    

    Vous devez normalement voir une réponse similaire à l’exemple suivant :

    The following quotes are from Act 2, scene seven of William Shakespeare's play as you like it.
    

    Si vous avez écouté l’exemple de fichier WAV, vous remarquez que ce texte ne constitue que les premières secondes de l’audio. Comme nous avons utilisé la méthode RecognizeOnceAsync() de SpeechRecognizer, la reconnaissance vocale s’est arrêtée quand l’orateur a fait une pause.

Dans l’exercice suivant, vous allez apprendre à poursuivre la reconnaissance vocale pour l’ensemble du fichier audio.