Utiliser l'API Speech-to-Text avec C#

1. Présentation

L'API Google Cloud Speech-to-Text permet aux développeurs de convertir le son en texte dans 120 langues et variantes, en appliquant de puissants modèles de réseau de neurones dans une API facile à utiliser.

Dans cet atelier de programmation, vous allez vous concentrer sur l'utilisation de l'API Speech-to-Text avec C#. Vous apprendrez à envoyer un fichier audio en anglais et dans d'autres langues à l'API Cloud Speech-to-Text pour transcription.

Points abordés

  • Utiliser Cloud Shell
  • Activer l'API Speech-to-Text
  • Authentifier les requêtes API
  • Installer la bibliothèque cliente Google Cloud pour C#
  • Transcrire des fichiers audio en anglais
  • Transcrire des fichiers audio avec des horodatages au niveau du mot
  • Transcrire des fichiers audio dans différentes langues

Prérequis

  • Un projet Google Cloud Platform
  • Un navigateur tel que Chrome ou Firefox
  • Connaissances de base sur C#

Enquête

Comment allez-vous utiliser ce tutoriel ?

Je vais le lire uniquement Je vais le lire et effectuer les exercices

Comment évalueriez-vous votre niveau d'expérience avec C# ?

Débutant Intermédiaire Expert

Quel est votre niveau d'expérience avec les services Google Cloud Platform ?

Débutant Intermédiaire Expert

2. Préparation

Configuration de l'environnement au rythme de chacun

  1. Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères non utilisée par les API Google. Vous pourrez toujours le modifier.
  • L'ID du projet est unique parmi tous les projets Google Cloud et non modifiable une fois défini. La console Cloud génère automatiquement une chaîne unique (en général, vous n'y accordez d'importance particulière). Dans la plupart des ateliers de programmation, vous devrez indiquer l'ID de votre projet (généralement identifié par PROJECT_ID). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre de manière aléatoire. Vous pouvez également en spécifier un et voir s'il est disponible. Après cette étape, l'ID n'est plus modifiable et restera donc le même pour toute la durée du projet.
  • Pour information, il existe une troisième valeur (le numéro de projet) que certaines API utilisent. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
  1. Vous devez ensuite activer la facturation dans la console Cloud pour utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour désactiver les ressources et éviter ainsi que des frais ne vous soient facturés après ce tutoriel, vous pouvez supprimer le projet ou les ressources que vous avez créées. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300 $.

Démarrer Cloud Shell

Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, nous allons nous servir de Google Cloud Shell pour cet atelier de programmation, un environnement de ligne de commande exécuté dans le cloud.

Activer Cloud Shell

  1. Dans Cloud Console, cliquez sur Activer Cloud Shell d1264ca30785e435.png.

cb81e7c8e34bc8d.png

Si vous démarrez Cloud Shell pour la première fois, un écran intermédiaire s'affiche pour vous expliquer de quoi il s'agit. Si cet écran s'est affiché, cliquez sur Continuer.

d95252b003979716.png

Le provisionnement et la connexion à Cloud Shell ne devraient pas prendre plus de quelques minutes.

7833d5e1c5d18f54.png

Cette machine virtuelle contient tous les outils de développement nécessaires. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Vous pouvez réaliser une grande partie, voire la totalité, des activités de cet atelier de programmation dans un navigateur.

Une fois connecté à Cloud Shell, vous êtes en principe authentifié, et le projet est défini avec votre ID de projet.

  1. Exécutez la commande suivante dans Cloud Shell pour vérifier que vous êtes authentifié :
gcloud auth list

Résultat de la commande

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Exécutez la commande suivante dans Cloud Shell pour vérifier que la commande gcloud connaît votre projet :
gcloud config list project

Résultat de la commande

[core]
project = <PROJECT_ID>

Si vous obtenez un résultat différent, exécutez cette commande :

gcloud config set project <PROJECT_ID>

Résultat de la commande

Updated property [core/project].

3. Activer l'API Speech-to-Text

Avant de pouvoir utiliser l'API Speech-to-Text, vous devez l'activer. Vous pouvez activer l'API à l'aide de la commande suivante dans Cloud Shell :

gcloud services enable speech.googleapis.com

4. Installer la bibliothèque cliente de l'API Google Cloud Speech-to-Text pour C#

Commencez par créer une application console C# simple que vous utiliserez pour exécuter des exemples d'API Speech-to-Text :

dotnet new console -n SpeechToTextApiDemo

L'application créée et les dépendances résolues doivent s'afficher :

The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.

Accédez ensuite au dossier SpeechToTextApiDemo :

cd SpeechToTextApiDemo/

Ajoutez le package NuGet Google.Cloud.Speech.V1 au projet :

dotnet add package Google.Cloud.Speech.V1
info : Adding PackageReference for package 'Google.Cloud.Speech.V1' into project '/home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj'.
log  : Restoring packages for /home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.Speech.V1' version '1.0.1' added to file '/home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj'.

Vous êtes maintenant prêt à utiliser l'API Speech-to-Text.

5. Transcrire des fichiers audio

Dans cette section, vous allez transcrire un fichier audio préenregistré en anglais. Le fichier audio est disponible sur Google Cloud Storage.

Pour transcrire un fichier audio, ouvrez l'éditeur de code en haut à droite de Cloud Shell :

fd3fc1303e63572.png

Accédez au fichier Program.cs dans le dossier SpeechToTextApiDemo et remplacez le code par ce qui suit :

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var speech = SpeechClient.Create();
            var config = new RecognitionConfig
            {
                Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
                SampleRateHertz = 16000,
                LanguageCode = LanguageCodes.English.UnitedStates
            };
            var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-tests/speech/brooklyn.flac");         
            
            var response = speech.Recognize(config, audio);

            foreach (var result in response.Results)
            {
                foreach (var alternative in result.Alternatives)
                {
                    Console.WriteLine(alternative.Transcript);
                }
            }
        }
    }
}

Prenez une ou deux minutes pour étudier le code et voir comment il est utilisé pour transcrire un fichier audio*.

Le paramètre Encoding indique à l'API le type d'encodage audio que vous utilisez pour le fichier audio. Flac correspond au type d'encodage associé aux fichiers .raw (consultez la documentation pour plus d'informations sur le type d'encodage).

Dans l'objet RecognitionAudio, vous pouvez transmettre à l'API soit l'URI de notre fichier audio hébergé dans Cloud Storage, soit le chemin d'accès local au fichier audio. Ici, nous utilisons un URI Cloud Storage.

Retournez dans Cloud Shell et exécutez l'application :

dotnet run

Vous devriez obtenir le résultat suivant :

how old is the Brooklyn Bridge

Résumé

Au cours de cette étape, vous avez pu transcrire un fichier audio en anglais et imprimer le résultat. En savoir plus sur la transcription

6. Transcrire avec les codes temporels au niveau du mot

Speech-to-Text peut détecter le décalage temporel (horodatage) de l'audio transcrit. Les décalages temporels indiquent le début et la fin de chaque mot prononcé dans le contenu audio fourni. Une valeur de décalage temporel représente la durée écoulée depuis le début du contenu audio, par incréments de 100 ms.

Pour transcrire un fichier audio avec des codes temporels, accédez au fichier Program.cs dans le dossier SpeechToTextApiDemo et remplacez le code par le code suivant :

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var speech = SpeechClient.Create();
            var config = new RecognitionConfig
            {
                Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
                SampleRateHertz = 16000,
                LanguageCode = LanguageCodes.English.UnitedStates,
                EnableWordTimeOffsets = true
            };
            var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-tests/speech/brooklyn.flac");
     
            var response = speech.Recognize(config, audio);

            foreach (var result in response.Results)
            {
                foreach (var alternative in result.Alternatives)
                {
                    Console.WriteLine($"Transcript: { alternative.Transcript}");
                    Console.WriteLine("Word details:");
                    Console.WriteLine($" Word count:{alternative.Words.Count}");
                    foreach (var item in alternative.Words)
                    {
                        Console.WriteLine($"  {item.Word}");
                        Console.WriteLine($"    WordStartTime: {item.StartTime}");
                        Console.WriteLine($"    WordEndTime: {item.EndTime}");
                    }
                }
            }
        }
    }
}

Prenez une ou deux minutes pour étudier le code et voir comment il est utilisé pour transcrire un fichier audio avec des codes temporels pour les mots. Le paramètre EnableWordTimeOffsets indique à l'API d'activer les décalages temporels (pour en savoir plus, consultez la documentation).

Retournez dans Cloud Shell et exécutez l'application :

dotnet run

Vous devriez obtenir le résultat suivant :

dotnet run

Transcript: how old is the Brooklyn Bridge
Word details:
 Word count:6
  how
    WordStartTime: "0s"
    WordEndTime: "0.300s"
  old
    WordStartTime: "0.300s"
    WordEndTime: "0.600s"
  is
    WordStartTime: "0.600s"
    WordEndTime: "0.800s"
  the
    WordStartTime: "0.800s"
    WordEndTime: "0.900s"
  Brooklyn
    WordStartTime: "0.900s"
    WordEndTime: "1.100s"
  Bridge
    WordStartTime: "1.100s"
    WordEndTime: "1.500s"

Résumé

À cette étape, vous avez pu transcrire un fichier audio en anglais avec des codes temporels pour chaque mot et imprimer le résultat. En savoir plus sur la transcription avec des décalages de mots

7. Transcrire différentes langues

L'API Speech-to-Text peut transcrire du contenu audio dans plus de 100 langues. Vous trouverez la liste des langues acceptées à cette adresse.

Dans cette section, vous allez transcrire un fichier audio préenregistré en français. Le fichier audio est disponible sur Google Cloud Storage.

Pour transcrire le fichier audio en français, accédez au fichier Program.cs dans le dossier SpeechToTextApiDemo et remplacez le code par le code suivant :

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var speech = SpeechClient.Create();
            var config = new RecognitionConfig
            {
                Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
                LanguageCode = LanguageCodes.French.France
            };
            var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-data/speech/corbeau_renard.flac");

            var response = speech.Recognize(config, audio);

            foreach (var result in response.Results)
            {
                foreach (var alternative in result.Alternatives)
                {
                    Console.WriteLine(alternative.Transcript);
                }
            }
        }
    }
}

Prenez une ou deux minutes pour étudier le code et voir comment il est utilisé pour transcrire un fichier audio. Le paramètre LanguageCode indique à l'API la langue de l'enregistrement audio.

Retournez dans Cloud Shell et exécutez l'application :

dotnet run

Vous devriez obtenir le résultat suivant :

maître corbeau sur un arbre perché tenait en son bec un fromage

Il s'agit d'une phrase d'une célèbre fable française pour enfants.

Résumé

Au cours de cette étape, vous avez pu transcrire un fichier audio en français et imprimer le résultat. En savoir plus sur les langues disponibles

8. Félicitations !

Vous avez appris à utiliser l'API Speech-to-Text avec C# pour effectuer différents types de transcription sur des fichiers audio.

Effectuer un nettoyage

Afin d'éviter que des frais ne soient facturés sur votre compte Google Cloud Platform pour les ressources utilisées dans ce démarrage rapide, procédez comme suit :

  • Accédez à la console Cloud Platform.
  • Sélectionnez le projet que vous souhaitez arrêter, puis cliquez sur "Supprimer" en haut de la page. Le projet sera alors programmé pour suppression.

En savoir plus

Licence

Ce document est publié sous une licence Creative Commons Attribution 2.0 Generic.