Exercice - Créer une application de reconnaissance vocale ponctuelle
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
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
Créez une application .NET Core :
dotnet new console
Cette commande peut prendre quelques secondes.
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
Dans Cloud Shell à droite, ouvrez le fichier Program.cs :
code Program.cs
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;
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
etazureLocation
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()
deSpeechRecognizer
pour convertir l’audio en texte, puis utilise un enregistreur de flux pour enregistrer les résultats dans un fichier texte.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
etazureLocation
avec votre clé et l’emplacement de l’exercice précédent.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
Pour exécuter votre application, utilisez la commande suivante dans Cloud Shell à droite :
dotnet run
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.
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.
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()
deSpeechRecognizer
, 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.