À propos de cet atelier de programmation
1. Présentation
L'API Google Cloud Speech-to-Text permet aux développeurs de convertir du contenu audio en texte dans 120 langues et variantes, en appliquant de puissants modèles de réseaux de neurones via une API facile à utiliser.
Dans cet atelier de programmation, vous allez vous concentrer sur l'utilisation de l'API Speech-to-Text avec Node.js. Vous allez apprendre à envoyer un fichier audio en anglais et dans d'autres langues à l'API Cloud Speech-to-Text pour qu'il soit transcrit.
Points abordés
- Activer l'API Speech-to-Text
- Authentifier les requêtes API
- Installer la bibliothèque cliente Google Cloud pour Node.js
- Transcrire des fichiers audio en anglais
- Transcrire des fichiers audio avec des codes temporels pour les mots
- 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 JavaScript/Node.js
Enquête
Comment allez-vous utiliser ce tutoriel ?
Comment évalueriez-vous votre expérience avec Node.js ?
Quel est votre niveau d'expérience avec les services Google Cloud Platform ?
2. Préparation
Configuration de l'environnement d'auto-formation
- Connectez-vous à Cloud Console, puis créez un projet ou réutilisez un projet existant. (Si vous n'avez pas encore de compte Gmail ou G Suite, vous devez en créer un.)
Mémorisez l'ID du projet. Il s'agit d'un nom unique permettant de différencier chaque projet Google Cloud (le nom ci-dessus est déjà pris ; vous devez en trouver un autre). Il sera désigné par le nom PROJECT_ID
tout au long de cet atelier de programmation.
- Vous devez ensuite activer la facturation dans Cloud Console pour pouvoir utiliser les ressources Google Cloud.
L'exécution de cet atelier de programmation est très peu coûteuse, voire gratuite. Veillez à suivre les instructions de la section "Nettoyer" qui indique comment désactiver les ressources afin d'éviter les frais une fois ce tutoriel terminé. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai gratuit 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
- Dans Cloud Console, cliquez sur Activer Cloud Shell
.
Si vous n'avez encore jamais démarré Cloud Shell, un écran intermédiaire s'affiche en dessous de la ligne de séparation pour décrire de quoi il s'agit. Si tel est le cas, cliquez sur Continuer (cet écran ne s'affiche qu'une seule fois). Voici à quoi il ressemble :
Le provisionnement et la connexion à Cloud Shell ne devraient pas prendre plus de quelques minutes.
Cette machine virtuelle contient tous les outils de développement nécessaires. Elle intègre un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances réseau et l'authentification. Vous pouvez réaliser une grande partie, voire la totalité, des activités de cet atelier dans un simple navigateur ou sur votre Chromebook.
Une fois connecté à Cloud Shell, vous êtes en principe authentifié et le projet est défini avec votre ID de projet.
- 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`
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. Authentifier les requêtes API
Pour envoyer des requêtes à l'API Speech-to-Text, vous devez utiliser un compte de service. Le compte de service appartient à votre projet. Il permet à la bibliothèque cliente Google Node.js de générer des requêtes API Speech-to-Text. Comme tout autre compte utilisateur, un compte de service est représenté par une adresse e-mail. Dans cette section, vous allez utiliser le SDK Cloud pour créer un compte de service, puis créer des identifiants dont vous aurez besoin pour vous authentifier en tant que compte de service.
Tout d'abord, définissez une variable d'environnement avec votre ID de projet (PROJECT_ID) que vous utiliserez tout au long de cet atelier de programmation. Si vous utilisez Cloud Shell, cette variable sera définie automatiquement:
export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)
Créez ensuite un compte de service pour accéder à l'API Speech-to-Text à l'aide de la commande suivante:
gcloud iam service-accounts create my-speech-to-text-sa \
--display-name "my speech-to-text codelab service account"
Créez ensuite des identifiants que votre code Node.js utilisera pour se connecter en tant que nouveau compte de service. Créez ces identifiants et enregistrez-les dans un fichier JSON ~/key.json
à l'aide de la commande suivante:
gcloud iam service-accounts keys create ~/key.json \
--iam-account my-speech-to-text-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
Enfin, définissez la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS
, qui est utilisée par la bibliothèque Node.js de l'API Speech-to-Text, décrite à l'étape suivante, pour trouver vos identifiants. La variable d'environnement doit être définie sur le chemin d'accès complet au fichier JSON d'identifiants que vous avez créé, à l'aide de la commande suivante :
export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"
Obtenez plus d'informations sur l'authentification de l'API Speech-to-Text.
5. Installer la bibliothèque cliente de l'API Google Cloud Speech-to-Text pour Node.js
Commencez par créer un projet que vous utiliserez dans cet atelier sur l'API Speech-to-Text, puis initialisez un nouveau package Node.js dans le dossier de votre choix:
npm init
GPR pose plusieurs questions sur la configuration du projet, telles que son nom et sa version. Pour chaque question, appuyez sur ENTER
pour accepter les valeurs par défaut. Le point d'entrée par défaut est un fichier nommé index.js
.
Installez ensuite la bibliothèque Google Cloud Speech dans le projet:
npm install --save @google-cloud/speech
Pour savoir comment configurer un développement Node.js pour Google Cloud, consultez le guide de configuration.
Vous êtes maintenant prêt à utiliser l'API Speech-to-Text.
6. 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.
Accédez au fichier index.js
et remplacez le code par ce qui suit:
// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');
const client = new speech.SpeechClient();
/**
* Calls the Speech-to-Text API on a demo audio file.
*/
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
const audio = {
uri: gcsUri,
};
const config = {
encoding: 'LINEAR16',
sampleRateHertz: 16000,
languageCode: 'en-US',
};
const request = {
audio: audio,
config: config,
};
// Detects speech in the audio file
const [response] = await client.recognize(request);
const transcription = response.results
.map(result => result.alternatives[0].transcript)
.join('\n');
console.log(`Transcription: ${transcription}`);
}
quickstart();
Prenez une minute ou deux pour étudier le code et vous verrez qu'il sera 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
est le type d'encodage des fichiers .raw (consultez la documentation pour en savoir plus sur le type d'encodage).
Dans l'objet RecognitionAudio
, vous pouvez transmettre à l'API l'URI de notre fichier audio dans Cloud Storage ou le chemin d'accès au fichier audio local. Ici, nous utilisons un URI Cloud Storage.
Exécutez le programme:
node .
Vous devriez obtenir le résultat suivant :
how old is the Brooklyn Bridge
7. Transcrire avec les codes temporels des mots
Speech-to-Text peut détecter le décalage temporel (code temporel) du contenu 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.
Accédez au fichier index.js
et remplacez le code par ce qui suit:
const speech = require('@google-cloud/speech');
const client = new speech.SpeechClient();
/**
* Calls the Speech-to-Text API on a demo audio file.
*/
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
const audio = {
uri: gcsUri,
};
const config = {
encoding: 'LINEAR16',
sampleRateHertz: 16000,
languageCode: 'en-US',
enableWordTimeOffsets: true,
};
const request = {
audio: audio,
config: config,
};
// Detects speech in the audio file
const [response] = await client.recognize(request);
response.results.forEach((result) => {
result.alternatives.forEach((alternative) => {
console.log(`Transcript: ${alternative.transcript}`);
console.log(`Word details:`);
console.log(` Word count ${alternative.words.length}`);
alternative.words.forEach((item) => {
console.log(` ${item.word}`);
const s = parseInt(item.startTime.seconds) +
item.startTime.nanos/1000000000;
console.log(` WordStartTime: ${s}s`);
const e = parseInt(item.endTime.seconds) +
item.endTime.nanos/1000000000;
console.log(` WordEndTime: ${e}s`);
});
});
});
}
quickstart();
Prenez une minute ou deux pour étudier le code et vous verrez qu'il sera utilisé pour transcrire un fichier audio avec les codes temporels des mots*.* Le paramètre EnableWordTimeOffsets
indique à l'API d'activer les décalages temporels (consultez la documentation pour en savoir plus).
Exécutez à nouveau votre programme:
node .
Vous devriez obtenir le résultat suivant :
Transcript: how old is the Brooklyn Bridge
Word details:
Word count 6
how
WordStartTime: 0s
WordEndTime: 0.3s
old
WordStartTime: 0.3s
WordEndTime: 0.6s
is
WordStartTime: 0.6s
WordEndTime: 0.8s
the
WordStartTime: 0.8s
WordEndTime: 0.9s
Brooklyn
WordStartTime: 0.9s
WordEndTime: 1.1s
Bridge
WordStartTime: 1.1s
WordEndTime: 1.4s
8. Transcrire d'autres langues
L'API Speech-to-Text permet la transcription dans plus de 100 langues. Vous pouvez consulter la liste des langues acceptées sur cette page.
Dans cette section, vous allez transcrire un fichier audio préenregistré en français. Le fichier audio est disponible sur Google Cloud Storage.
Accédez au fichier index.js
et remplacez le code par ce qui suit:
// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');
const client = new speech.SpeechClient();
/**
* Calls the Speech-to-Text API on a demo audio file.
*/
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
const gcsUri = 'gs://cloud-samples-data/speech/corbeau_renard.flac';
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
const audio = {
uri: gcsUri,
};
const config = {
encoding: 'FLAC',
languageCode: 'fr-FR',
};
const request = {
audio: audio,
config: config,
};
// Detects speech in the audio file
const [response] = await client.recognize(request);
const transcription = response.results
.map((result) => result.alternatives[0].transcript)
.join('\n');
console.log(`Transcription: ${transcription}`);
}
quickstart();
Exécutez à nouveau votre programme. 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 extraite d'un conte français pour enfants populaire.
Pour obtenir la liste complète des langues et des codes de langue acceptés, consultez la documentation.
9. Félicitations !
Vous avez appris à utiliser l'API Speech-to-Text avec Node.js 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: la suppression du projet est programmée.
En savoir plus
- API Google Cloud Speech-to-Text: https://cloud.google.com/speech-to-text/docs
- Node.js sur Google Cloud Platform: https://cloud.google.com/nodejs/
- Client Google Cloud Node.js: https://googlecloudplatform.github.io/google-cloud-node/
Licence
Ce document est publié sous une licence Creative Commons Attribution 2.0 Generic.