Christophe Casalegno

Joshua : la puissance de GPT-3, en bash, dans votre console

Bon, j’avais prévu de vous mettre en ligne une tout autre version que celle que j’ai faite durant la vidéo éponyme. Pour ceux ou celles qui ne l’ont pas regardé : c’est par ici !

Joshua sait parler, mais vous pouvez remplacer espeak par quelque chose de plus sexy. Cependant, je souhaitais volontairement le laisser très robotique pour ressembler au Joshua du film Wargames.

Néanmoins, en conséquence des plus de 150 messages (sic !) que j’ai reçus via différentes plateformes, je vous ai mis en ligne la première version de la vidéo. Je mettrai en ligne la seconde plus tard ;)

Pour le télécharger c’est ici : joshua.sh ou depuis la page contributions.

Pensez à renseigner votre clef API dans le fichier secret.cfg comme indiqué au début de joshua.sh. Vous pouvez régler de nombreux paramètres concernant la pertinence de la réponse attendue. Il n’y a pas (encore) de code permettant de quitter joshua, attention : dans ses paramètres par défaut, il peut se mettre à parler durant des pages, faites attention ;)


Christophe Casalegno
Vous pouvez me suivre sur : Twitter | Facebook | LinkedIn | Telegram | YouTube | Twitch

6 Commentaires

  1. « Pensez à renseigner votre clef API dans le fichier secret.cfg »
    ATTENTION, pour que ça fonctionne, le fichier secret.cfg DOIT être de type exécutable de type:

    #!/bin/bash

    api_key= »sk-xxxxxxxxxxxxxxxxxxxxxxxx »

    ************************

    pour avoir une voix de qualité, j’utilise ce code:

    function text_to_speech() {
    gtts-cli -l fr -o /tmp/audio.mp3 « $1 »
    sox /tmp/audio.mp3 -p pitch 90 tempo 1.25 | sox – /tmp/isaaudio.mp3
    play -q /tmp/isaaudio.mp3
    }

    ******************

    code pour quitter joshua :

    while true; do
    read -p « >  » prompt
    response_text=$(get_response « $prompt »)
    if [[ -n « $response_text » ]]; then
    text_to_speech « $response_text » &
    display_text « $response_text »
    if [[ « $prompt » == « au revoir » ]] || [[ « $prompt » == « bye » ]]; then
    sleep 2
    exit 0
    fi
    fi
    done

    ***************
    il suffit de taper au prompt : « au revoir » ou « bye » et le script joshua se fermera après la réponse reçue !!

    perso, j’ai ajouté dans ma barre de lancement le script en tant qu’application dans un terminal, avec le lien vers le script, comme ça, je lance le script depuis une icone !!

    • #correction du code de sortie pour que la réponse ait le temps d’être dite en entier

      code pour quitter joshua :

      while true; do
      read -p  » >  » prompt
      response_text=$(get_response  » $prompt « )
      if [[ -n  » $response_text  » ]]; then
      text_to_speech  » $response_text  » &
      display_text  » $response_text  »
      if [[ « $prompt » == « au revoir » ]] || [[ « $prompt » == « bye » ]]; then

      display_text « $response_text »&
      text_to_speech « $response_text »&&
      sleep 1
      exit 0
      else
      text_to_speech « $response_text »&
      display_text « $response_text »
      fi
      fi
      done

    • Hello, Alansan2019 : pas du tout concernant secret.cfg :

      11:45:46-brain@mcp:~/Coding/WOPR$ ls -latr secret.cfg
      -rw-r–r– 1 brain brain 62 15 janv. 02:25 secret.cfg

      11:46:04-brain@mcp:~/Coding/WOPR$ grep bash secret.cfg
      11:46:39-brain@mcp:~/Coding/WOPR$ grep -i bash secret.cfg

      11:47:00-brain@mcp:~/Coding/WOPR$ cat secret.cfg |cut -d ‘ »‘ -f1
      api_key=

      Il y a seulement l’api_key de renseigné.

      amicalement

      • merci pour la précision ;-)

        autre chose de récent: le script, ou l’api ne se connecte plus ?!
        le modèle utilisé dans le script n’est plus valide ?

  2. Merci pour ce post. Qu’il y a t-il de plus sexy que espeak pour linux qui se rapprocherait de la voix humaine ?

    • Hello drpteck, un autre commentaire qui vient d’être publié indique justement du code pour obtenir une meilleure voix. Une autre personne avait aussi utilisé quelque chose d’autre qu’espeak, mais je dois retrouver l’email qu’il m’avait envoyé. Grosse étape dans ma vie en cours de finalisation, je reviens bientôt ;)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *