Tu m’entends quand je te parle ? (partie 2)

Suite

Dans la continuité de l’article précédent : ici. L’idée est d’essayer de faire une application mobile qui intègre les possibilités d’écoute d’un utilisateur.

Point de départ

Afin de partir d’un existant, je suis partie d’une application réalisée suite au tuto suivant : https://devdactic.com/ionic-realtime-socket-io/. D’ailleurs, pour info, le tuto est super intéressant et montre une fonctionnalité intéressante de socket.io. Une fois n’est pas coutume, tout fonctionne du premier coup !

En terme de reprise, l’idée est de reprendre l’application, la navigation etc… Par contre, je vais enlever toute la partie Socket … A ce demander pourquoi je l’ai repris en fait … Bref …

SpeechToText

Mise en place

Pour faire cela, j’ai repris le plugin vu lors de la première partie : ici et . L’installation est assez simple 🙂


$ ionic cordova plugin add cordova-plugin-speechrecognition
$ npm install --save @ionic-native/speech-recognition

Au niveau de l’utilisation, il faut suivre la documentation dans laquelle je trouve qu’il ne manque qu’une seule chose: l’enregistrement dans les modules. Mais bon c’est pas complique :

  • Ajout d’un import import { SpeechRecognition } from '@ionic-native/speech-recognition';
  • Ajout d’un provider : SpeechRecognition

Voici le code pour lancer l’écoute :

    listenUserMessage() {
        let options : SpeechRecognitionListeningOptions = {
            language: 'fr-FR'
            , matches: 1
            , prompt: ''
            , showPopup: false
            , showPartial: false
        }

        this.speechRecognition.startListening(options)
            .subscribe(
                (matches: Array) => {
                    this.zone.run(() => { 
                        this.sendMessage(this.nickname, matches[0]); 
                        this.answer(matches[0])
                    });
                },
                (onerror) => console.error('error:', onerror)
            )
    }

Quelques petits soucis 🙂

Normal ! Les voicis :

Matches

Une option doit permettre de limiter le nombre de retour : matches. Bon de mon côté, il s’en moque totalement … Pour des phrases, il m’en retourne 5 qui est la valeur par défaut … Bon, je prends le premier résultat.

Mise à jour de l’écran

A la réception des données, l’interface ne se mettait pas à jour. J’ai cru comprendre que c’était un souci d’évènement que je remonte mal. Pour résoudre le souci à court terme : this.zone.run()

TextToSpeech

La même chose mais avec un autre plugin !

Il faut utiliser : ici & qui s’installe comme le premier :


$ ionic cordova plugin add cordova-plugin-tts
$ npm install --save @ionic-native/text-to-speech

Code

Simple à faire peur :

 this.tts.speak({
                text: answer
                , locale: 'fr-FR'
                , rate: 0.85
            })

.

Un truc assez fort !

Si le texte contient « 15:34 », on entend 15 heures 34. Fort quand même …

Bilan

Je suis content, j’ai une application qui fonctionne 🙂 Elle écoute et réponds à quelques questions. Comme vu la dernière fois, ce n’est pas là que se passe les choses. il faudrait maintenant la pluguer vers quelque chose d’intelligent. Mais cela c’est autre demain !