Créez une application intelligente avec Google Cloud Speech et les API Natural Language 1

Créez une application intelligente avec Google Cloud Speech et les API Natural Language

Une application qui comprend vraiment un langage naturel est quelque chose dont les passionnés de science-fiction, les programmeurs et les chercheurs en IA rêvent depuis des décennies. Aujourd’hui, grâce aux progrès considérables des technologies d’apprentissage automatique, ce rêve est plus proche que jamais de devenir réalité. De plus, des services basés sur le cloud tels que Google Cloud Machine Learning ont rendu ces technologies gratuitement accessibles à tous.

Dans ce didacticiel, vous apprendrez à utiliser deux puissantes API orientées langage naturel proposées par la plate-forme Google Cloud Machine Learning: API Cloud Speech et API Cloud Natural Language. En les utilisant ensemble, vous pouvez créer des applications capables de gérer la parole dans une variété de langues largement parlées.

Conditions préalables

Pour suivre, vous aurez besoin de:

  • Android Studio 2.2 ou supérieur
  • une Google Cloud Platform Compte
  • un appareil qui exécute Android 4.4 ou supérieur

1. Pourquoi utiliser ces API?

Une application capable de traiter la parole doit avoir les capacités suivantes:

  • Il doit être capable d’extraire des mots individuels à partir de données audio brutes.
  • Il doit être capable de faire des suppositions éclairées sur les relations grammaticales entre les mots qu’il a extraits.

Les API Cloud Speech et Cloud Natural Language vous permettent d’ajouter les fonctionnalités ci-dessus à votre application Android en quelques minutes.

L’API Cloud Speech sert de reconnaissance vocale de pointe capable de transcrire avec précision la parole dans plus de 80 langues. Il peut également gérer de manière robuste les accents régionaux et les conditions bruyantes.

Dans le même ordre d’idées, l’API Cloud Natural Language est un système de traitement du langage qui peut, avec une précision quasi humaine, déterminer les rôles que jouent les mots dans les phrases qui lui sont attribuées. Il prend actuellement en charge dix langues et propose également une analyse des entités et des sentiments.

2. Activation des API

Avant d’utiliser les API Speech et Natural Language, vous devez les activer dans Google Cloud console. Alors connectez-vous à la console et accédez à Gestionnaire d’API> Bibliothèque.

Bibliothèque de la console cloud

Pour activer l’API Speech, cliquez sur le API Speech lien dans le Google Cloud Machine Learning section. Dans la page qui s’ouvre ensuite, appuyez sur le Activer bouton.

Activer l'API Cloud Speech

Appuyez sur le bouton Retour de votre navigateur pour revenir à la page précédente.

Cette fois, activez l’API Natural Language en cliquant sur le bouton API de langage naturel lien et en appuyant sur le Activer bouton sur la page suivante.

Activer l'API Cloud Natural Language

Vous aurez besoin d’une clé API lors de l’interaction avec les API. Si vous n’en avez pas déjà, ouvrez le Identifiants onglet, appuyez sur Créer des identifiants et choisissez Clé API.

Vous verrez maintenant une fenêtre contextuelle affichant votre clé API. Notez-le pour pouvoir l’utiliser plus tard.

Clé API générée

3. Configurer votre projet

Les deux API sont basées sur JSON et ont des points de terminaison REST avec lesquels vous pouvez interagir directement à l’aide de n’importe quelle bibliothèque réseau. Cependant, vous pouvez gagner beaucoup de temps et écrire du code plus lisible en utilisant le Client API Google bibliothèques disponibles pour eux. Alors ouvrez le build.gradle dossier de votre projet app module et ajoutez ce qui suit compile ses dépendances:

De plus, nous allons effectuer quelques opérations d’E / S de fichiers dans ce didacticiel. Pour les simplifier, ajoutez un compile dépendance pour la Commons IO bibliothèque.

Enfin, n’oubliez pas de demander le INTERNET permission dans le AndroidManifest.xml fichier. Sans cela, votre application ne pourra pas se connecter aux serveurs de Google.

4. Utiliser l’API Cloud Speech

Il va sans dire que l’API Cloud Speech attend des données audio comme l’une de ses entrées. Par conséquent, nous allons maintenant créer une application Android capable de transcrire des fichiers audio.

Pour faire simple, nous ne transcrireons que des fichiers FLAC, des fichiers qui utilisent le format d’encodage Free Lossless Audio Codec. Vous avez peut-être déjà de tels fichiers sur votre appareil. Sinon, je vous suggère d’en télécharger quelques-uns sur Wikimedia Commons.

Étape 1: créer une mise en page

La mise en page de notre application aura un Button les utilisateurs de widgets peuvent appuyer sur pour afficher un sélecteur de fichiers, une interface dans laquelle ils peuvent parcourir et sélectionner les fichiers audio disponibles sur leurs appareils.

La mise en page aura également un TextView widget pour afficher la transcription du fichier audio sélectionné. En conséquence, ajoutez le code suivant au fichier XML de mise en page de votre activité:

Étape 2: créer un sélecteur de fichiers

L’interface du sélecteur de fichiers doit être affichée lorsque l’utilisateur appuie sur le bouton que nous avons créé à l’étape précédente, alors associez un OnClickListener objet avec lui. Avant de le faire, assurez-vous d’initialiser le bouton à l’aide du findViewById() méthode.

Avec Storage Access Framework d’Android, disponible sur les appareils exécutant le niveau d’API 19 ou supérieur, la création d’un sélecteur de fichiers demande très peu d’effort. Tout ce que vous avez à faire est de créer une intention pour le ACTION_GET_CONTENT action et transmettez-le au startActivityForResult() méthode. Si vous le souhaitez, vous pouvez restreindre le sélecteur de fichiers pour afficher uniquement les fichiers FLAC en transmettant le type MIME approprié au setType() méthode de la Intent objet.

La sortie du sélecteur de fichiers sera une autre Intent objet contenant l’URI du fichier sélectionné par l’utilisateur. Pour pouvoir y accéder, vous devez remplacer le onActivityResult() méthode de votre Activity classe.

Étape 3: codez le fichier

L’API Cloud Speech s’attend à ce que ses données audio se présentent sous la forme d’une chaîne Base64. Pour générer une telle chaîne, vous pouvez lire le contenu du fichier sélectionné par l’utilisateur dans un byte tableau et passez-le au encodeBase64String() méthode utilitaire proposée par la bibliothèque cliente des API Google.

Cependant, vous n’avez actuellement que l’URI du fichier sélectionné, pas son chemin absolu. Cela signifie que, pour pouvoir lire le fichier, vous devez d’abord résoudre l’URI. Vous pouvez le faire en le transmettant au openInputStream() méthode du résolveur de contenu de votre activité. Une fois que vous avez accès au flux d’entrée du fichier, vous pouvez simplement le transmettre au toByteArray() méthode de la IOUtils class pour le convertir en un tableau d’octets. Le code suivant vous montre comment:

Comme vous pouvez le voir dans le code ci-dessus, nous utilisons un nouveau thread pour exécuter toutes les opérations d’E / S. Cela est important pour vous assurer que l’interface utilisateur de l’application ne se fige pas.

Étape 4: lire le fichier

À mon avis, jouer le fichier son en cours de transcription, pendant qu’il est en cours de transcription, est une bonne idée. Cela ne demande pas beaucoup d’efforts et améliore l’expérience utilisateur.

Vous pouvez utiliser le MediaPlayer classe pour lire le fichier son. Une fois que vous le pointez vers l’URI du fichier en utilisant son setDataSource() méthode, vous devez appeler sa prepare() méthode pour préparer le lecteur de manière synchrone. Lorsque le lecteur est prêt, vous pouvez appeler son start() méthode pour démarrer la lecture du fichier.

De plus, vous devez vous rappeler de libérer les ressources du lecteur une fois qu’il a terminé la lecture du fichier. Pour ce faire, attribuez un OnCompletionListener s’y opposer et appeler son release() méthode. Le code suivant vous montre comment:

Étape 5: Transcrire le fichier de manière synchrone

À ce stade, nous pouvons envoyer les données audio encodées en Base64 à l’API Cloud Speech pour les transcrire. Mais d’abord, je vous suggère de stocker la clé API que vous avez générée précédemment en tant que variable membre de votre Activity classe.

Pour pouvoir communiquer avec l’API Cloud Speech, vous devez créer un Speech objet utilisant un Speech.Builder exemple. En tant qu’arguments, son constructeur attend un transport HTTP et une fabrique JSON. De plus, pour vous assurer que la clé API est incluse dans chaque requête HTTP à l’API, vous devez associer un SpeechRequestInitializer objet avec le constructeur et passez-lui la clé.

Le code suivant crée un Speech objet utilisant le AndroidJsonFactory classe en tant que fabrique JSON et NetHttpTransport classe comme transport HTTP:

L’API Cloud Speech doit être informée de la langue du fichier audio. Vous pouvez le faire en créant un RecognitionConfig objet et appelant son setLanguageCode() méthode. Voici comment vous le configurez pour transcrire uniquement l’anglais américain:

En outre, la chaîne encodée en Base64 doit être encapsulée dans un RecognitionAudio objet avant de pouvoir être utilisé par l’API.

Ensuite, en utilisant le RecognitionConfig et RecognitionAudio objets, vous devez créer un SyncRecognizeRequest objet. Comme son nom l’indique, il vous permet de créer une requête HTTP pour transcrire de manière synchrone des données audio. Une fois l’objet créé, vous pouvez le passer en argument au syncrecognize() méthode et appelez le résultat Speech.SpeechOperations.Syncrecognize objets execute() méthode pour exécuter réellement la requête HTTP.

La valeur de retour du execute() la méthode est une SyncRecognizeResponse objet, qui peut contenir plusieurs transcriptions alternatives. Pour l’instant, nous n’utiliserons que la première alternative.

Enfin, pour afficher la transcription à l’utilisateur, vous pouvez la transmettre au TextView widget. Bien sûr, étant donné que les modifications apportées à l’interface utilisateur doivent toujours se produire sur le thread de l’interface utilisateur, assurez-vous de le faire après avoir appelé votre activité. runOnUiThread() méthode.

Vous pouvez maintenant exécuter votre application, sélectionner un fichier FLAC contenant des paroles en anglais américain et voir l’API Cloud Speech générer une transcription pour celui-ci.

Il est à noter que l’API Cloud Speech ne peut actuellement traiter que des fichiers audio à un seul canal. Si vous lui envoyez un fichier avec plusieurs canaux, vous obtiendrez une réponse d’erreur.

5. Utiliser l’API Cloud Natural Language

Maintenant que nous avons une transcription, nous pouvons la transmettre à l’API Cloud Natural Language pour l’analyser. Pour que ce tutoriel reste bref, nous n’exécuterons que l’analyse des entités et des sentiments sur la transcription. En d’autres termes, nous allons déterminer toutes les entités qui sont mentionnées dans la transcription, telles que les personnes, les lieux et les professions, et également dire si son sentiment général est négatif, neutre ou positif.

Étape 1: mettre à jour la mise en page

Pour permettre à l’utilisateur de démarrer l’analyse, notre mise en page doit contenir un autre Button widget. Par conséquent, ajoutez le code suivant au fichier XML de mise en page de votre activité:

Étape 2: annoter la transcription

L’API REST Cloud Natural Language offre une option pratique appelée annoterText qui vous permet d’exécuter à la fois une analyse des sentiments et des entités sur un document avec une seule requête HTTP. Nous l’utiliserons pour analyser notre transcription.

Puisque l’analyse doit commencer lorsque l’utilisateur appuie sur le bouton que nous avons créé à l’étape précédente, ajoutez un OnClickListener à lui.

Pour interagir avec l’API à l’aide de la bibliothèque cliente des API Google, vous devez créer un CloudNaturalLanguage objet utilisant le CloudNaturalLanguage.Builder classe. Son constructeur attend également un transport HTTP et une fabrique JSON.

De plus, en attribuant un CloudNaturalLanguageRequestInitializer instance, vous pouvez le forcer à inclure votre clé API dans toutes ses requêtes.

Tout le texte que vous souhaitez analyser à l’aide de l’API doit être placé dans un Document objet. le Document L’objet doit également contenir des informations de configuration, telles que la langue du texte et s’il est formaté en texte brut ou HTML. En conséquence, ajoutez le code suivant:

Ensuite, vous devez créer un Features objet spécifiant les caractéristiques que vous souhaitez analyser. Le code suivant vous montre comment créer un Features objet indiquant que vous souhaitez extraire des entités et exécuter une analyse des sentiments uniquement.

Vous pouvez maintenant utiliser le Document et Features objets pour composer un AnnotateTextRequest objet, qui peut être passé au annotateText() méthode pour générer un AnnotateTextResponse objet.

Notez que nous générons la réponse dans un nouveau thread car les opérations réseau ne sont pas autorisées sur le thread d’interface utilisateur.

Vous pouvez extraire une liste d’entités du AnnotateTextResponse objet en appelant son getEntities() méthode. De même, vous pouvez extraire le sentiment général de la transcription en appelant le getDocumentSentiment() méthode. Cependant, pour obtenir le score réel du sentiment, vous devez également appeler le getScore() méthode, qui renvoie un float.

Comme vous vous en doutez, un score de sentiment égal à zéro signifie que le sentiment est neutre, un score supérieur à zéro signifie que le sentiment est positif et un score inférieur à zéro signifie que le sentiment est négatif.

Ce que vous faites avec la liste des entités et le score de sentiment dépend, bien sûr, de vous. Pour l’instant, affichons-les tous les deux à l’aide d’un AlertDialog exemple.

Avec le code ci-dessus, le score de sentiment sera affiché dans le titre de la boîte de dialogue et la liste des entités sera affichée dans son corps.

Si vous exécutez l’application maintenant, vous devriez être en mesure d’analyser le contenu des fichiers audio et de les transcrire.

Conclusion

Vous savez maintenant comment utiliser ensemble les API Cloud Speech et Cloud Natural Language pour créer une application Android qui peut non seulement transcrire un fichier audio, mais également y exécuter une analyse d’entité et de sentiment. Dans ce didacticiel, vous avez également appris à utiliser Storage Access Framework d’Android et les bibliothèques d’API client Google.

Google ajoute régulièrement de nouvelles fonctionnalités intéressantes, ainsi que la prise en charge de plusieurs langues, aux deux API. Pour rester informé à leur sujet, reportez-vous au documentation officielle.

Et pendant que vous êtes ici, consultez certains de nos autres articles sur les services cloud d’applications mobiles et l’apprentissage automatique!

Soutenez notre effort ❤️

Si vous avez apprécié cet article, pensez à laisser un pourboire pour nous aider à continuer à publier du contenu de qualité.

Paiement sécurisé sur PayPal
Moyens I/O Staff est une équipe de rédacteurs spécialisés, passionnés par la technologie, l’innovation et les usages numériques. Forts d’une expertise pointue en IA, applications mobiles, gaming et tendances digitales, nous produisons un contenu rigoureux, vérifié et utile. Notre mission : vous offrir une information fiable et claire pour mieux naviguer dans le monde numérique en constante évolution. Découvrez les avis de nos lecteurs sur Trustpilot.