Il s'agit d'un exemple d'implémentation WebApp d'Openai Whisper, un système automatique de reconnaissance vocale (ASR), en utilisant Next.js.
Il enregistre automatiquement les données audio et télécharge les données audio sur le serveur pour la transcription / la traduction, puis renvoie le résultat à l'avant. Il est également possible de lire l'audio enregistré pour vérifier la sortie.
MISE À JOUR: Si vous souhaitez utiliser
Next 13avec une fonctionnalité expérimentale activée (APPDIR), veuillez consulter Openai-Whisper-API à la place. Réglez simplement l'indicateur pour utiliser le module Whisper Python au lieu de l'API Whisper.
Utilisation de l'API OpenAI Speech to SMS, veuillez consulter Openai-Whisper-API
Si vous recherchez l'application de chat vocale en utilisant Whisper , veuillez consulter Openai-Whisper-Talk.
Pour la version Nuxt.js , veuillez consulter Openai-ChatterBox.
Il a été dit que Whisper lui-même n'est pas conçu pour prendre en charge les tâches de streaming en temps réel en soi, mais cela ne signifie pas que nous ne pouvons pas essayer, vain aussi, lol.
Ce projet est donc ma tentative de faire une application Web de transcripteur presque en temps réel à l'aide d'Openai Whisper . L'efficacité dépend de la vitesse à laquelle le serveur peut transcrire / traduire l'audio.
J'ai utilisé Next.js pour ne pas avoir à créer des applications de backend et de frontend distinctes.
Quant au backend, j'ai utilisé exec pour exécuter la commande shell invoquant Whisper . Je n'ai pas encore trouvé de moyen de l' import en tant que module node.js Tous les exemples d' import semblent utiliser python Server.
import { exec } from 'child_process'
exec ( `whisper './ ${ filename } ' --model tiny --language Japanese --task translate` , ( err , stdout , stderr ) => {
if ( err ) {
console . log ( err )
} else {
console . log ( stdout )
console . log ( stderr )
}
} ) Remarquez que j'utilise simplement le modèle tiny pour effectuer une tâche de transcription super rapide. C'est tout ce que mon système peut gérer, sinon il arrivera à un stand.

J'ai changé le comportement de l'application à partir de la version précédente. Avant, l'application enregistrera les données audio en continu d'un certain intervalle de temps, par défaut 5S. À l'heure actuelle, il ne commencera à enregistrer que s'il peut détecter le son.
Il existe un paramètre de seuil pour éliminer le bruit de fond du déclenchement de la capture audio. Par défaut, il est défini sur -45dB (0db est le son le plus fort). Ajustez la variable minDecibels dans Settings si vous souhaitez le définir à plus bas ou supérieur en fonction de vos besoins.
Dans une conversation humaine normale, il est dit que nous avons tendance à faire une pause, en moyenne, environ 2 secondes entre chaque phrase. En gardant cela à l'esprit, si le son n'est pas détecté pendant plus de 2 secondes, l'enregistrement s'arrêtera et les données audio seront envoyées au backend pour la transcription. Vous pouvez modifier cela en modifiant la valeur de maxPause , par défaut définie sur 2500ms .

Il est possible de lire l'audio téléchargé et de suivre la sortie du texte depuis la période de temps.
Quant au code lui-même, j'ai utilisé class component (je sais, je sais ...) parce que j'ai eu du mal à accéder state variables à l'aide de crochets lorsque je développais.

Mis à part minDecibels et maxPause , vous pouvez également modifier plusieurs options Whisper telles que language , model et task à partir de la boîte de dialogue Settings . Veuillez vérifier le référentiel GitHub de Whisper pour l'explication des options.
Il y a encore beaucoup de choses à faire pour que ce projet soit toujours un travail en cours ...
Tout d'abord, vous devez installer Whisper et ses dépendances Python
$ pip install git+https://github.com/openai/whisper.git Vous avez également besoin ffmpeg installé sur votre système
# macos
$ brew install ffmpeg
# windows using chocolatey
$ choco install ffmpeg
# windows using scoop
$ scoop install ffmpeg À ce moment-là, vous pouvez tester Whisper en utilisant la ligne de commande
$ whisper myaudiofile.ogg --language Japanese --task translateSi cela réussit, vous pouvez procéder à l'installation de cette application.
Cloner le référentiel et installer les dépendances
$ git clone https://github.com/supershaneski/openai-whisper.git myproject
$ cd myproject
$ npm install
$ npm run dev Ouvrez votre navigateur à http://localhost:3006/ pour charger la page de demande.
Vous voudrez peut-être exécuter cette application à l'aide du protocole https . Ceci est nécessaire si vous souhaitez utiliser un périphérique séparé pour la capture audio et utiliser votre machine comme serveur.
Pour ce faire, préparez le certificate et les fichiers key appropriés et modifiez server.js au répertoire racine.
Puis courez
$ node server.js Maintenant, ouvrez votre navigateur à https://localhost:3006/ pour charger la page.