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à. 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 & là 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 !