Faire une application de transcription en trois clics mais très précise semble difficile, mais ce n'est pas le cas. Présentons Whisper à AutoHotkey.
Whisper d'OpenAI est l'une des solutions les plus puissantes pour transformer votre voix en texte. Cependant, Whisper peut aussi être ennuyeux à utiliser, puisqu'il faut taper des commandes pour transcrire un fichier audio en texte. Mais pourquoi faire cela alors que nous avons AutoHotkey ?
Avec AutoHotkey, nous pouvons créer sans effort une interface graphique de base pour les applications en ligne de commande comme Whisper. Alors, faisons cela et voyons comment vous pouvez créer votre propre application de transcription en combinant les superpuissances de création d'interface graphique d'AutoHotkey avec Whisper d'OpenAI en tant que "cerveau" derrière les boutons.
Jeter les bases de Whisper et AutoHotkey
Vous pouvez créer des scripts sympas avec AutoHotkey, mais ce n'est pas tout ce qu'il peut faire. Pour ce projet, nous utiliserons AutoHotkey pour créer une interface graphique pour Whisper. Cela nous permettra d'utiliser l'outil d'intelligence artificielle de reconnaissance vocale d'OpenAI en cliquant sur des boutons et en personnalisant ses fonctionnalités à l'aide de menus au lieu de taper des commandes.
Cependant, cela signifie que vous devrez installer AutoHotkey et Whisper pour suivre.
Pour la première partie de l'équation, vous pouvez télécharger AutoHotkey depuis son site officiel, puis exécutez son programme d'installation et suivez les étapes présentées.
Notez que nous utiliserons l'ancienne version "v1" du langage de script, pas la nouvelle v2. C'est important car les deux versions utilisent une syntaxe quelque peu différente. Ce que nous verrons ici pourrait ne pas fonctionner si vous utilisez la nouvelle v2.
La deuxième partie est plus compliquée, mais vous pouvez apprendre à le faire en consultant notre article sur comment transformer votre voix en texte avec OpenAI's Whisper pour Windows.
Avec les deux installés, notre plan d'action est le suivant :
- Créez une interface graphique avec des éléments pour les variables et les valeurs de Whisper.
- Créez des fonctions pour saisir des valeurs à partir de l'interface, sélectionner des fichiers et des dossiers et assembler le tout dans une commande Whisper utilisable.
- Exécutez la commande Whisper pour produire des résultats.
Bien sûr, vous pouvez toujours utiliser le support intégré de Windows pour la saisie vocale, comme nous l'avons vu dans notre article sur comment démarrer la saisie vocale sur Windows 11. Pourtant, comme vous le verrez en l'utilisant, Whisper est beaucoup plus précis (mais aussi plus lent).
Sur une note plus personnelle, je dois préciser que je ne suis pas programmeur, et que ce projet est un "remix" d'une solution faite pour un usage personnel.
Comment créer un nouveau script AutoHotkey
La première étape consiste à créer un nouveau fichier de script vierge. Conservez-le dans son propre dossier, juste au cas où vous décideriez de le modifier ou de le développer, en créant plus de fichiers.
- Exécutez votre gestionnaire de fichiers préféré (ou appuyez sur Clé Windows + E pour lancer l'Explorateur Windows) et créez un dossier pour votre application de transcription où vous le souhaitez.
- Faites un clic droit sur un endroit vide de la fenêtre et sélectionnez Nouveau > Script de raccourci automatique pour créer un fichier de script vide.
- Maj + clic droit sur le fichier pour accéder au menu contextuel complet et sélectionnez pour l'ouvrir avec votre éditeur de code ou de texte préféré. propre à Windows Bloc-notes ça ira.
- Bien qu'il s'agisse d'un "script vide", votre fichier AHK sera déjà pré-rempli avec des "trucs". Ce sont des variables et des drapeaux AutoHotkey utiles qui définissent comment cela devrait fonctionner sur votre bureau. Ignorez-les, laissez-les tels quels et faites tout votre travail futur en dessous.
Apprendre à connaître les drapeaux de Whisper
Puisque nous créons une interface graphique pour une application en ligne de commande, il est pratique d'avoir une référence à ses principales variables et drapeaux que nous utiliserons dans notre projet. Vous pouvez les consulter en lisant la documentation de Whisper, en visitant sa page officielle Github, et l'exécuter dans votre terminal.
Nous énumérerons ceux que nous utiliserons dans ce projet pour plus de commodité. Nous vous suggérons de les ajouter à votre script sous forme de commentaires (sur des lignes séparées, chacune commençant par un caractère ";" suivi d'un espace).
; Drapeaux chuchotés: ; --initial_prompt PROMPT_TEXT; --output_format txt; -o OUTPUT_FOLDER; --model MODEL_TO_USE; --task TRANSCRIRE/TRADUIRE; --langue EN/EL
Création de l'interface graphique avec AutoHotkey
Nous vous suggérons de diviser votre script en sections en utilisant des commentaires comme nous l'avons fait pour le garder organisé. Nous commencerons par définir certaines variables, continuerons avec l'interface graphique actuelle et terminerons par la définition de ses fonctions.
Nous commençons par une section où nous définirons les variables que nous voudrons peut-être modifier à l'avenir, mais pas si souvent que nous aimerions les exposer via l'interface graphique, ce qui la compliquerait trop. Vous pouvez taper "Variable_Name = Contenu ou valeur de la variable" avec une paire variable et valeur par ligne.
Pour ce projet, nous avons défini un Format de sortie variable que nous définissons sur "SMS" valeur et un MurmureExécutable variable indiquant Nom du fichier exécutable de Whisper. De cette façon, si nous voulons utiliser la même solution à l'avenir pour créer des fichiers de sous-titres SRT au lieu de documents TXT ou mettre à niveau Chuchotez / passez à une application alternative, nous pouvons ajuster les valeurs de ces variables à cet endroit unique plutôt que tout au long de la scénario.
OutputFormat = txtWhisperExecutable = murmure
Configuration des options utilisateur
Lors de l'utilisation de Whisper en ligne de commande, trois de ses flags permettent de définir :
- Si vous faites traduction ou transcription
- Le fichier audio langue
- La langue modèle que vous souhaitez utiliser (différentes tailles sont disponibles, chacune affectant les performances par rapport à la qualité des résultats).
Le moyen le plus simple d'offrir la même fonctionnalité via une interface graphique consiste à utiliser des listes déroulantes éprouvées. La syntaxe pour ajouter une liste déroulante à une interface graphique AutoHotkey est la suivante :
Gui, Ajouter, DropDownList, xPosition yPosition wWidth hHeight vVariable_that_will_hold_selected_value, optionA|optionB|default_optionC||optionD|
Sur cette base, ajoutons trois listes déroulantes à notre script pour sélectionner la langue de Whisper (entre anglais/en et grec/el), modèle (tiny, base, small, medium, large) et type de tâche (transcrire ou traduire).
Gui, Ajouter, DropDownList, x5 y5 w165 h50 vSelectedLanguage, en||el
Gui, Add, DropDownList, x175 y5 w165 h100 vSelectedModel, minuscule|base|petit||moyen|grand|
Gui, Ajouter, DropDownList, x345 y5 w165 h100 vTaskType, transcrire||traduire|
Pour définir une option comme sélection par défaut, utilisez un symbole à double barre ("|") après celle-ci. Vous pouvez voir que, dans notre exemple, nous avons défini notre langue sur fr, Modèle sélectionné à petit, et TaskType à transcrire.
Comment guider Whisper
Étant donné que Whisper est basé sur l'IA, il n'y a aucun moyen d'avoir un contrôle absolu sur la façon dont Whisper transcrit l'audio. Il est libre de choisir ce qu'il considère comme optimal.
Cependant, comme d'autres solutions d'IA, Whisper peut accepter les invites de l'utilisateur. En créant une invite, vous pouvez "guider" la façon dont il transcrit votre audio.
La solution que nous proposons n'a-t-elle pas réussi à transcrire quelque chose correctement? Vous pouvez essayer "d'expliquer" à Whisper "de quoi parle le fichier vocal", y compris la syntaxe des mots, des acronymes et des phrases dans votre invite, tels que vous souhaitez qu'ils apparaissent dans la transcription. Pour cela, nous allons ajouter un champ AutoHotkey Text Edit.
La syntaxe n'est pas trop différente de celle que nous avons utilisée pour ajouter des listes déroulantes ci-dessus :
Gui, Ajouter, Modifier, x5 w505 h400 vPromptText, %PromptText%
Le "%PromptText%" à la fin "indique" à AHK d'afficher le contenu de la variable PromptText (si une valeur lui a déjà été attribuée) dans le champ de texte. Cela n'affichera rien dans le script que nous créons, mais considérez-le comme un espace réservé lorsque vous modifierez éventuellement le script à l'avenir également pour enregistrer et charger des invites !
Préférez-vous attribuer une valeur prédéfinie au Texte de l'invite variable? Ajoutez quelque chose comme ce qui suit au variables partie du scénario. N'oubliez pas de remplacer "Votre nom" par votre vrai nom.
PromptText = Transcription des notes de votre nom
Configuration des boutons d'action
Pour choisir des fichiers, des dossiers et exécuter Whisper après avoir tout configuré, il est préférable d'utiliser des boutons. Vous pouvez ajouter des boutons à une interface créée par AHK en utilisant ce qui suit :
Gui, Ajouter, Bouton, xPosition yPosition wWidth hHeight gFunction_To_Perform, Bouton Texte
Notez que contrairement aux variables dans les éléments de l'interface graphique, qui commencent par la lettre "v", les noms de fonction commencent par "g", pour "Aller (à cet endroit du script)".
Un seul bouton d'une interface AHK peut également être considéré comme "celui par défaut", qui sera activé si vous ne cliquez nulle part sur l'interface graphique et appuyez sur Entrer. Ceci est défini en ajoutant "défaut" dans la section coordonnées et fonction, comme vous le remarquerez dans notre bouton "OK":
Gui, Ajouter, Bouton, x5 w505 h50 gSelectFile, Charger FileGui, Ajouter, Bouton, x5 w505 h50 gSelectFolder, ChoisirSortir Dossier
Gui, ajouter, bouton, Défaut x5 w505 h50 gButtonSoumettre, OK
Avec ce qui précède, nous définissons trois boutons :
- Un étiqueté "Fichier de chargement" qui, une fois cliqué, lancera le Choisir le dossier fonction.
- Un étiqueté "Choisissez le dossier de sortie", qui exécutera le Sélectionner le dossier fonction.
- Un étiqueté "D'ACCORD", sélectionné par défaut, "appelant" le BoutonSoumettre fonction.
Comment afficher votre interface graphique
Notre interface graphique est prête mais n'apparaîtra pas sur notre écran car nous n'avons pas "indiqué" à AutoHotkey de l'afficher ou ce que chaque bouton doit faire.
Pour cela, ajoutez les deux lignes suivantes en dessous de celles qui définissent votre GUI :
Gui, AfficherRetour
La première ligne "indique" à AHK d'afficher la fenêtre de l'interface graphique, tandis que la seconde marque la fin de la section.
Les fonctions et fonctionnalités de notre application
Bien que nous ayons terminé la section GUI, si vous essayez d'exécuter le script, il se bloquera. C'est parce que nous y faisons référence à des fonctions inexistantes. Donc, notre prochaine étape consiste à créer ces fonctions.
Les trois fonctions que nous voulons sont :
- Sélectionnez un fichier d'entrée.
- Sélectionnez le dossier de sortie où le fichier transcrit sera stocké.
- Créez une commande qui "assemblera" toutes les variables dans une commande Whisper utilisable, semblable à ce que nous taperions nous-mêmes dans un terminal, puis exécutez-la.
Sélection du fichier d'entrée
La première fonction, que nous avons déjà nommée "Choisir le dossier" lorsque nous avons ajouté son bouton à l'interface graphique, est :
Choisir le dossier:FichierSélectionnerFichier, SelectedFileReturn
FichierSélectionnerFichier est une fonction AutoHotkey qui affiche un demandeur de fichier typique, permettant à l'utilisateur de sélectionner un fichier. FichierSélectionné est la variable de notre script qui "contiendra" le chemin d'accès au fichier sélectionné par l'utilisateur.
Cependant, comme vous le verrez dans nos captures d'écran, nous avons également ajouté la ligne suivante juste au-dessus du "return" de fin de fonction :
MsgBox, %SelectedFile%
Cela aura AHK montrer un Messagerie avec le fichier sélectionné après l'avoir choisi, ce qui est utile lors du dépannage de votre script. Si cette boîte de message affiche le chemin et le nom du fichier sélectionné, ce n'est pas votre bouton ou fonction de sélection de fichier qui nécessite une correction.
Sélection du dossier de sortie
La fonction de sélection d'un dossier est presque identique, seuls le nom et la variable de la commande changent, pour montrer que nous avons affaire à des dossiers au lieu de fichiers :
SelectFolder: FileSelectFolder, SelectedFolderMsgBox, %SelectedFolder%Retour
La fonction finale
La fonction finale sera la plus compliquée. Mappé sur le bouton OK, cela "rassemblera" toutes les valeurs variables de l'interface graphique, les transformera en une commande utilisable, puis l'exécutera.
Nous commençons par indiquer le début et la fin de la fonction :
BoutonSoumettre :Retour
Pour "saisir" toutes les valeurs de l'interface graphique, ajoutez ce qui suit sous le BoutonSoumettre doubler:
Gui Submit, nohide
La ligne suivante crée une nouvelle variable appelée "WhisperDrapeaux". Il y ajoute ensuite toutes les variables de l'interface graphique en tant qu'indicateurs pour la commande Whisper.
WhisperFlags = --initial_prompt "%PromptText%" --task %TaskType% --model %SelectedModel% --language %SelectedLanguage% --output_format %OutputFormat% -o "%DossierSélectionné%""%FichierSélectionné%"
Ensuite, nous "dirons" à AHK d'utiliser le terminal par défaut (CMD.exe) pour exécuter l'exécutable de Whisper (que nous avons défini avec le MurmureExécutable variable) avec les variables de l'interface graphique (qui sont maintenant "assemblées" dans le seul WhisperDrapeaux variable).
RunWait, cmd.exe /c %WhisperExecutable% %WhisperFlags%
Pour un dépannage encore plus simple, nous avons également ajouté une msgbox, comme précédemment, mais également ajouté la ligne suivante :
Presse-papiers = %WhisperExecutable% %WhisperFlags%
Cela copiera dans le Presse-papiers la commande complète envoyée à CMD. Ainsi, si quelque chose échoue, au lieu de ne voir la commande que dans l'une des boîtes de message d'AHK, vous l'aurez également disponible dans votre presse-papiers.
Ouvrez un terminal, collez la commande du Presse-papiers et vérifiez les erreurs qui s'affichent pour localiser les problèmes potentiels.
Par exemple, en travaillant sur le script, j'ai d'abord oublié de placer l'invite entre guillemets. Ainsi, la commande a échoué, car Whisper a essayé d'analyser l'invite sous forme d'indicateurs.
Tests et ajustements finaux
C'était tout - nous venons de créer une application de transcription utilisant les capacités de création d'interface graphique d'AutoHotkey et une solution de transcription AI prête à l'emploi.
Essayez d'exécuter votre script (double-cliquez sur son fichier) et vous devriez voir votre interface graphique sur votre écran.
- Modifiez les paramètres de Whisper à l'aide des listes déroulantes en haut.
- Tapez une courte description de votre transcription (et quelques termes) dans le Rapide champ.
- Clique le Fichier de chargement et choisissez le fichier audio que vous souhaitez transcrire.
- Clique le Choisissez le dossier de sortie et sélectionnez où le fichier texte produit doit être stocké.
- Cliquer sur D'ACCORD pour libérer Whisper, tel que configuré par votre interface graphique, sur votre fichier audio sélectionné, et enregistrez sa transcription sous forme de fichier texte dans le dossier que vous avez sélectionné.
Si tout a fonctionné, revenez à votre script et supprimez ou commentez (en ajoutant un ";" au début) toutes les fonctionnalités de dépannage (boîtes de message et lignes de copie dans le presse-papiers).
Pousser Whisper plus loin avec AutoHotkey
En définissant correctement les valeurs par défaut de votre interface graphique et en ajoutant peut-être une invite générique, vous pouvez transformer Whisper en un solution en trois clics pour transcrire: pas de paiement pour des solutions commerciales, des services tiers, des interfaces compliquées ou taper dans un terminal.