Checklists activées à la voix avec VoiceAttack

3

13/01/2018 par Stephane

Inspiré par le post de Nico1854 sur le forum de VoiceAttack(VA) (https://voiceattack.com/SMF/index.php?topic=383.0), j’ai décidé de reprendre le même principe pour l’appliquer au Boeing 737, je vous propose donc ce petit tuto et explications.

Le but est d’utiliser VoiceAttack comme co-pilote virtuel pour les différentes checklist sans utiliser de clavier et pilotable à la voix.

Je souhaite:

– demander tel ou tel checklist
– avoir chaque élément de cette checklist énoncé par VA
– à chaque élément je souhaite pouvoir valider oralement celui-ci
– après validation de l’élément passer au suivant
– à la fin de la checklist avoir confirmation que la checklist est terminée

VA est vraiment un outil puissant avec des possibilités de programmation, de scripting et de scénarios, c’est ce que nous allons exploiter.

Je vous propose d’expliquer la checklist Before start, le principe sera appliqué identiquement aux autres checklists.

D’abord la logique:
– A chaque checklist est associée une variable. Pour la checklist Before start j’ai associé la variable BSC (ASC pour After start, BTOC pour Before TakeOff, etc…)
– Lors de l’appel de la checklist la variable est initialisée avec une valeur.(on peut mettre ce que l’on veut). Toutes les autres variable sont mise à 0.
– A chaque validation d’un check, la variable est incrémentée de 1 et on passe au check suivant et ainsi de suite jusqu’à la fin de la checklist

Ensuite le plan:
Le point de départ est un tableau dans lequel pour chaque checklist nous allons lister:
– l’élément de la checklist
– ce que le co-pilote va dire
– la réponse que nous devons dire pour passer à l’élément suivant
– La variable associée
– La valeur que doit avoir la variable pour ce check
– La valeur qu’aura la variable une fois le check validé (typiquement la valeur actuelle + 1)

Si l’on prend notre checklist BSC, voilà ce que cela donne pour l’appel de la checklist et l’exécution du check.

La première ligne contient:


– le nom de la checklist dans la colonne Action ‘Before Start Procedure « BSC »’. Cette colonne est pour information est n’est pas utilisé dans notre programmation VA.
– dans la colonne Pilot says, ce que l’on doit dire pour appeler la checklist: Before start [procedure; checklist;]
Ce qui signifie pour VA que l’on peut dire
‘Before start procedure’ ou ‘Before start checklist’
– dans la colonne Copilot says, ce que le copilote dit. Ici rien
– dans la colonne Variable, le nom de notre variable: BSC
– dans la colone Is set as, quelle valeur doit avoir la variable pour traiter la commande. Ici peut importe la valeur.
– dans la colonne Set to, quelle valeur nous stockons dans la variable. Ici on initialise à 1301

La deuxième ligne contient:


– le nom de l’action. Ici Doors.
Cette colonne est pour information est n’est pas utilisée dans notre programmation VA.
– Pour info la 2éme colonne contient l’endroit du cockpit où l’on doit faire la vérification/action. Cette colonne est aussi uniquement à titre informatif.
– dans la colonne Pilot says, ce que l’on doit dire. Ici rien car c’est au copilote à énoncer le nom de l’élément.
– dans la colonne Copilot says, ce que le copilote dit. Ici ‘Doors And Stairs’
– dans la colonne Variable, le nom de notre variable: BSC
– dans la colone Is set as, quelle valeur doit avoir la variable pour traiter la commande. Ici 1301. Donc si la variable n’est pas égal à 1301 cette commande/ligne n’est pas exécutée.
– dans la colonne Set to, quelle valeur nous stockons dans la variable. Ici rien car on incrémente (donc on passe au check suivant) uniquement lorsque nous avons oralement validé le check/action

La troisième ligne contient:


– dans la colonne Pilot says, ce que l’on doit dire. Ici ‘Closed; Locked’ Ce qui signifie que l’on peut dire soit ‘Closed’, soit ‘Locked’
– dans la colonne Copilot says, ce que le copilote dit. Ici rien car c’est nous qui validons le check.
– dans la colonne Variable, le nom de notre variable: BSC
– dans la colone Is set as, quelle valeur doit avoir la variable pour traiter la commande. Ici 1301. Donc si la variable n’est pas égal à 1301 cette commande/ligne n’est pas exécutée.
– dans la colonne Set to, quelle valeur nous stockons dans la variable. Ici on incrémente de 1, donc 1301+1 = 1302

On passe ensuite à la 4éme ligne qui est le check suivant et ainsi de suite jusqu’à la fin de la checklist.

On va ainsi définir chaque checklist et au final nous aurons notre plan que nous allons devoir programmer dans VA.

Toujours avec moi ?

Alors c’est partie pour la programmation dans VA.

Dans Voice Attack nous allons commencer par créer une commande correspondant à la checklist Before Start.
A chaque checklist correspond une commande de ce genre. C’est le point de départ de notre checklist.

Donc quand je dis ‘Before start procedure’ ou ‘Before start checklist’ cette commande est appelée.

Dans les actions à exécuter pour cette commande, si vous vous souvenez de ce qui a été écrit plus haut, nous allons initialiser notre variable checklist BSC et mettre à zéro toutes les autres variables des checklist. Ceci pour être sûr de ne pas exécuter les actions d’une autre checklist.
On en profite aussi pour ‘tuer’ la commande ‘Playsound’ dont nous parlerons après.

La dernière action à exécuter est l’appel à la commande ‘Playsound’

Les autres options de la commande sont définies comme ci-dessous

Passons maintenant à la commande ‘Play sound’. C’est la commande principale appelée par toutes les checklists. Cette commande va parcourir chaque variable, tester sa valeur et si le test est vraie, jouer le son correspondant.

La première ligne à exécuter de la commande doit commencer par Begin

et la dernière ligne doit se terminer par End Condition

Entre les 2, nous allons tester nos différentes variables avec des Else If
Pour la BSC on aura alors

Comme vous le constater on va tester chaque valeur possible de notre variable BSC et lui associer une action.
Par exemple si BSC vaut 1301 alors on va jouer le son DoorsandStairs.wav, on simule donc le copilote qui parle.

Si BSC vaut 1302 alors on va jouer le son fuel.wav
Etc…

Ensuite lorsque le son est joué on sort de la commande ‘Play sound’.

L’action Playsound qui joue le fichier wav est configurée comme ci-dessous

Pour ceux qui suivent 😉 , vous allez maintenant me demander mais comment fait-on pour passer au check suivant, autrement dit pour incrémenter la variable et continuer le déroulement de la checklist ?

Nous allons créer…….des commandes
Ces commandes correspondront aux réponses possibles des checks et pourront être utilisées par plusieurs checklists.
Par exemple la réponse ‘Check’ est reprise dans toutes les checklists.

Si on reprend le premier check de la checklist BSC

Nous venons de commencer la checklist et la variable BSC vaut 1301.
La commande ‘play sound’ est exécutée et joue le fichier DoorsandStairs.wav
Ensuite VA est en mode attente, donc à nous de répondre.

En regardant notre tableau on voit que les réponses possibles sont: Closed [and locked; and armed;]
En langage VA cela signifie que l’on peut dire ‘Closed’ ou ‘Closed and locked’ ou ‘Closed and armed’

Nous allons donc définir cette commande

Les actions à exécuter par la commande sont un kill de la commande ‘Play sound’ au cas ou elle serait toujours en cours.
Ensuite on regarde si la variable BSC vaut 1301 et dans ce cas on incrémente de 1 et on rappelle ‘Play sound’
Si jamais cette commande était appelée et que la variable BSC ne vaut pas 1301 alors on nous dit ‘Wrong’

La variable BSC vaut maintenant 1302 et dans l’exécution de ‘Play sound’ le son du prochain check est joué
Si vous vous souvenez le prochain est Fuel

Les réponses possibles sont
‘Check; checked; Pumps On’

Nous allons donc avoir une commande multipart comme ceci pour check

On voit que la commande est appelée par d’autres checklist il y a donc plusieurs conditions de testées.
On y retrouve aussi celles de la checklist BSC

On doit aussi créer la commande pour ‘Pumps on’

Et on continue ainsi de suite pour chaque checklist et chaque élément de checklist.

Cela peut paraître long et fastidieux mais beaucoup de commandes sont communes à plusieurs checklists et VA permet de faire des copier/coller de commandes et d’actions.

A l’utilisation c’est un plaisir de pouvoir parler pour appeller et exécuter les checklist.

Bien sur avant d’utiliser VA, ne pas oublier de faire l’entrainement Windows pour lui faire reconnaitres votre voix comme expliqué ici https://stephane737ng.com/2014/10/31/commandes-vocales-et-interactions/

Démonstration en vidéo

3 réflexions sur “Checklists activées à la voix avec VoiceAttack

  1. Eric dit :

    salut j ai installer pro atc x pour prepard 3dv4 et quand je part le jeux je ne peux ouvrir in flight alors je ne peux demander de clairance car je ne peut ouvrir le menu

    • Stephane dit :

      Hello, une fois P3D lancé et Pro atc x tu dois choisir ton vol dans pro atc and faire un click droit puis choisir Fly. A partir de là le menu pro atc devrait être accessible via la touche de raccourci configuré et tu pourras demander la clearance.

      • Frédéric de Preux dit :

        Bonjour Stéphane, félicitation pour votre site et vos travaux.
        J’ai également construit un simu de 737 (uniquement place de gauche) et votre expérience avec VoiceAttack m’intéresse beaucoup pour les checklists. N’étant pas très doué dans la bidouille informatique et trouvant votre travail remarquable, je me posais, bêtement, la question de savoir s’il vous est déjà arrivé de partager vos fichiers ou une partie de vos fichiers de programmation ? 🙂
        Quoi qu’il en soit, je vous souhaite une bonne fin de semaine et encore merci pour votre site très intéressant et vos tutos.

        Frédéric (suisse)

Répondre à Eric Annuler la réponse.