psdesign1 - Fotolia

API Cloud de reconnaissance vocale: Microsoft vs Google

Donner à desapplicationsdes interfaces vocales, analyser des enregistrements audios, intégrer la voix dans l’automatisation des traitements documentaires. Aujourd’hui des APItruffées d’IArendent ces actions possibles.LeMagIT a testé 7 des principaux services. Aujourd’hui: Bing Speech API, Microsoft Custom Speech Serviceet Google API Cloud Speech

Parler à son ordinateur. Ce rêve de la Science-Fiction est devenu réalité avec l’expansion des technologies de Deep Learning et l’arrivée d’assistants comme Siri, Alexa, Google Now ou Cortana. Petit à petit, la voix s’impose comme un moyen d’interaction entre l’homme et la machine au même titre que le clavier, la souris ou l’écran tactile.

D’autant qu’aujourd’hui la reconnaissance vocale n’est plus un luxe réservé à quelques experts. N’importe quel développeur, sans la moindre compétence en IA, peut profiter de services Cloud pour exploiter le potentiel de la voix comme interface de communication avec ses applications.

La reconnaissance vocale via le Cloud est notamment utilisée en téléphonie (au travers de services SaaS tels que Twilio, VoiceBase, Nexmo), en support de transcription temps réel (TextShark.com), ou encore comme base à des agents conversationnels « Bots » au travers de services universels comme Alexa, Cortana, Nina (de Nuance) ou de services plus spécialisés comme « Wit.ai » ou « API.ai ».

Nous nous sommes ici intéressés à des services Cloud plus généraux de « Speech to Text » qui convertissent, à la volée, la voix en texte. Tous les services présentés ici peuvent être explorés et essayés gratuitement, certains pouvant même être utilisés sans frais indéfiniment pour des besoins restreints. Ces services offrent souvent différents modes d’accès dont un au format REST ce qui permet de les intégrer facilement dans des Workflows au travers de services comme IFTTT, Zapier ou Microsoft Flow. Ce sont ces interfaces REST que nous avons essayées.

Un test limité

Notre objectif ici est de faire une découverte des API et de vous mettre le pied à l’étrier plus rapidement (notamment en vous fournissant les commandes CURL des appels HTTP). Il n’est pas de comparer l’efficacité des dernières API selon un protocole rigoureux. Cependant, pour vous donner un aperçu des résultats, nous avons enregistré avec un Micro-casque en USB sur PC un court texte (lecture d’un communiqué de l’AFP) transformé en fichier WAV, 16 bits PCM 16000 Hz, format recommandé par toutes les API.

Le texte lu à reconnaître était :
Les futurs explorateurs pourront-ils se désaltérer avec de l'eau de lune ?
Selon des travaux publiés lundi dans la revue Nature Géosciences, les profondeurs de l'astre seraient étonnamment riches en eau.
"Nous avons trouvé la signature de l'eau partout dans les profondeurs de la Lune en utilisant des données satellitaires", explique à l'AFP Shuai Li de l'université Brown à Providence aux États-Unis et coauteur de l'étude.
Pendant longtemps, on a perçu la Lune comme un astre aride, d'une magnifique désolation ou encore complètement sèche. Mais la présence d'eau sur l'astre ne fait maintenant plus débat.

Notez que le texte comporte des pièges comme les noms propres Shuai Li et Brown, ainsi que des mots compliqués comme « satellitaires » ou « coauteur » ou encore une négation subtile « ne fait » que les moteurs ont du mal à négocier.

La qualité de la reconnaissance fluctue en fonction de la voix de chacun, du type de diction de chacun et de l’optimisation des modèles en fonction de telles ou telles conditions de capture audio. Pour réaliser une étude objective, il faudrait utiliser de multiples voix et de multiples enregistrements dans des conditions différentes. Ce qui dépasse largement le cadre de ce papier.

Garder donc à l’esprit que notre test rapide est extrêmement partiel. Son objectif est d’obtenir une évaluation rapide des capacités de reconnaissance en français, la plupart des tests et des taux de réussite affichés par les différents acteurs étant toujours réalisés en anglais.

1 - Microsoft Bing Speech API

Microsoft propose deux API de reconnaissance vocale différentes. La première n’est autre que celle proposée par Bing et désormais exposée au travers des Azure Cognitive Services. Très utilisée par Microsoft pour ses propres services, et par bien des développeurs mobiles, cette API « Speech-To-Text » est totalement automatisée et simple à mettre en œuvre. Deux choix s’offrent aux développeurs : passer par le SDK et les WebSocket (une solution qui convient aux fichiers de plus 15 secondes et surtout à une transcription live d’un flux audio) ou se contenter de l’API REST certes limitée à la transcription de phrases courtes (séquence de moins de 15 sec) mais très instantanée dans sa mise en œuvre.

L’un des atouts de Bing Speech réside dans la multitude d’exemples et la disponibilité de SDK dans de nombreux langages dont C#, JavaScript, Android Java et iOS Objective-C.

Sachez que l’API peut être exploitée gratuitement si l’on ne se soucie ni d’un éventuel manque de disponibilité, ni de la limitation à moins de 5 appels de l’API par seconde. Elle est en revanche très restrictive sur les formats de fichier supportés puisqu’elle n’accepte apparemment que du WAV.
Le tout se gère de façon très conviviale depuis le portail Azure qui offre un suivi visuel et complet de l’utilisation des appels à l’API et un suivi clair des consommations.

Appel :
L’appel en REST se fait en deux étapes. La première consiste à obtenir un Token temporaire d’accès avec vos identifiants. La seconde est l’appel à la fonction « Speech to Text ». Deux types de résultats JSON sont possibles : un simplifié qui retourne directement le texte, un autre plus détaillé offrant plusieurs propositions avec des indicateurs de fiabilité.

Etape 1 :

curl - v - X POST "https://api.cognitive.microsoft.com/sts/v1.0/issueToken" - H "Content-type: application/x-www-form-urlencoded" - H "Content-Length: 0" - H "Ocp-Apim-Subscription-Key: <Votre_CléAPI>"

Etape 2 : 

Curl --request POST --url "https://speech.platform.bing.com/speech/recognition/interactive/cognitiveservices/v1?language=fr-FR&format=simple" --header "authorization: Bearer <Token reçu>" --header "content-type: audio/wav; codec='audio/pcm'; samplerate=16000" --data-binary @exemple.wav

Résultat : 9 fautes
Les futurs explorateur pourront-ils se désaltérer avec l'eau de lune
selon des travaux publiés lundi dans la revue Nature geoscience les profondeurs delastre serai étonnamment richbond nous
nous avons trouvé la signature de l'eau partout dans les profondeurs de la lune en utilisant des données satellitaires explique à l'AFP chwili de l'université Brown à Providence aux États-Unis équateur de l'étude
pendant longtemps on a perçu la lune commun entre aride d'une magnifique désolation ou encore complètement sèche
la présence d'eau sur l'intranet fait maintenant plus débat.

2 - Microsoft Custom Speech Service

La deuxième API Microsoft découle des travaux « Project Oxford ». Actuellement en Preview, ce service exploite les solutions de Deep Learning maison pour vous permettre de définir et utiliser vos propres modèles. Le principe consiste à réaliser différents enregistrements dans les conditions typiques de travail en fournissant la transcription de chaque enregistrement. Le service analyse notamment le bruit de fond sur les silences en début et fin d’enregistrement ce qui permet d’utiliser cette reconnaissance vocale sur des chantiers et autres environnements bruyants.

Il est à notre connaissance le seul service librement accessible à offrir une telle capacité d’adaptation et d’apprentissage. Mais attention, pour l’instant seuls les modèles dérivant de l’anglais, de l’allemand et du chinois sont disponibles. Pas de français donc pour le moment, ce qui limite sérieusement son intérêt.

Nous l’avons utilisé pour retranscrire des interviews réalisées en extérieur avec un relatif succès et un résultat plus probant qu’en utilisant l’API Bing ou d’autres APIs STT automatiques.

Pour l’instant, l’exploitation de cette API passe impérativement par les librairies JavaScript et C# livrées dans le SDK.

L’API REST devrait être disponible très prochainement. Ni l’API REST ni le Français n’étant encore accessibles publiquement, nous n’avons pu réaliser notre petit test lunaire sur cette API…

3 - Google API Cloud Speech

L’API de reconnaissance vocale de Google Cloud était en Preview depuis plusieurs mois et vient d’être officialisée en version 1.

Elle est assez similaire à celle de Bing Speech et s’utilise tout aussi facilement. L’accès depuis le Portail Google Cloud est trivial tout comme la mise en œuvre générale. Il ne faut guère plus d’une demi-heure pour créer son compte, activer l’API (ce qui vous attribue une API_KEY pour l’authentification), compulser l’aide en ligne (par ailleurs très claire) et lancer ses premières requêtes. Google a particulièrement soigné l’accessibilité de son API et propose des exemples didactiques en une flopée de langages : C#, Go, Java, Node.JS, PHP, Python et Ruby.

L’API de Google se distingue surtout par le nombre de langages supportés puisque nous avons recensé 80 variantes. Elle semble assez souple quant aux formats de fichiers audio que l’on peut lui injecter (FLAC, AMR, OGG et WAV notamment). On notera cependant que ces derniers doivent impérativement être stockés dans Google Cloud Storage. Notez que l’API s’utilise aussi en mode streaming à condition de passer par des appels gRPC. Ces derniers sont plus riches que les appels REST et permettent notamment de passer au moteur des mots ou phrases pour donner un contexte à la reconnaissance et améliorer la reconnaissance.

L’appel de l’API REST s’effectue en passant un fichier JSON qui spécifie l’URI du fichier audio, son format ainsi que la langue parlée.

Appel :

{

    "config": {

        "encoding": "LINEAR16",

        "languageCode": "fr-FR"

    },

    "audio": {

        "uri": "gs://voicesloic/exemple.wav"

    }

}

Puis :

curl -v --request POST –url "https://speech.googleapis.com/v1/speech:recognize?key=<API_Key>"--header "Content-Type: application/json"--data-binary @exemple.json"

Résultat : 10 fautes

les futurs d'explorateur pourront-ils se désaltérer avec l'eau de lune
selon des travaux publiés lundi dans la revue Nature Geoscience les profondeurs de l'astre serait étonnamment riches sont nous
nous avons trouvé la signature de l'eau partout dans les profondeurs de la lune en utilisant des données satellitaires expliqua la FP swahili de l'Université drone à Providence aux Etats-Unis équateur de l'étude
pendant longtemps on aperçut la Lune comme un astre aride d'une magnifique désolation ou encore complètement sèche mais la présence d'eau sur l'instru me fait maintenant plus débat.

A venir

Dans la deuxième partie de ce dossier, nous nous pencherons sur les APIs de IBM vs HPE vs Speechmatics vs Nuance Cloud

Pour approfondir sur API