Esta es una implementación de la aplicación web de muestra de Openai Whisper, un sistema de reconocimiento de voz automático (ASR), utilizando Next.js.
Registra datos de audio automáticamente y carga los datos de audio al servidor para transcribir/traducir y luego enviar el resultado al extremo frontal. También es posible reproducir el audio grabado para verificar la salida.
ACTUALIZACIÓN: Si desea usar
Next 13con funciones experimentales habilitadas (AppDir), consulte OpenAI-Whisper-API en su lugar. Simplemente configure la bandera para usar el módulo Whisper Python en lugar de Whisper API.
Usando el discurso OpenAI a la API de texto, consulte Operai-Whisper-Api
Si está buscando una aplicación de chat de voz con Whisper , consulte Operai-Whisper-Talk.
Para la versión Nuxt.js , consulte Operai-Chatterbox.
Se ha dicho que Whisper en sí no está diseñado para apoyar las tareas de transmisión en tiempo real per se, pero no significa que no podamos intentarlo, por vano que sea, jajaja.
Entonces, este proyecto es mi intento de hacer una aplicación web de transcriptor casi en tiempo real utilizando OpenAI Whisper . Cuya eficacia depende de qué tan rápido el servidor pueda transcribir/traducir el audio.
Usé Next.js para no tener que hacer aplicaciones separadas de backend y frontend.
En cuanto al backend, utilicé exec para ejecutar el comando shell invocando Whisper . Todavía no he encontrado una manera de import como un módulo node.js Todos los ejemplos con import parecen estar usando el servidor python .
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 )
}
} ) Observe que solo estoy usando el modelo tiny para realizar una tarea de transcripción súper rápida. Esto es todo lo que mi sistema puede manejar, de lo contrario se detendrá.

Cambié el comportamiento de la aplicación de la versión anterior. Antes, la aplicación grabará datos de audio continuamente en algún intervalo de tiempo, por defecto 5s. En este momento, solo comenzará a grabar si puede detectar el sonido.
Hay una configuración de umbral para eliminar el ruido de fondo para activar la captura de audio. Por defecto, se establece en -45dB (0dB es el sonido más fuerte). Ajuste las minDecibels variables en Settings si desea configurarlo en más bajo o más dependiendo de sus necesidades.
En una conversación humana normal, se dice que tendemos a hacer una pausa, en promedio, alrededor de 2 segundos entre cada oración. Teniendo esto en cuenta, si el sonido no se detecta durante más de 2 segundos, la grabación se detendrá y los datos de audio se enviarán al backend para la transcripción. Puede cambiar esto editando el valor de maxPause , de forma predeterminada establecida en 2500ms .

Es posible reproducir el audio cargado y seguir la salida de texto desde que se muestra el período de tiempo.
En cuanto al código en sí, utilicé class component (lo sé, lo sé ...) porque tuve dificultades para acceder a state variables usando ganchos cuando me estaba desarrollando.

Además de minDecibels y maxPause , también puede cambiar varias opciones Whisper , como language , model y task del diálogo Settings . Consulte el repositorio de GitHub de Whisper para ver la explicación de las opciones.
Todavía hay muchas cosas que hacer, por lo que este proyecto sigue siendo un trabajo en progreso ...
Primero, debe instalar Whisper y sus dependencias Python
$ pip install git+https://github.com/openai/whisper.git También necesita ffmpeg instalado en su sistema
# macos
$ brew install ffmpeg
# windows using chocolatey
$ choco install ffmpeg
# windows using scoop
$ scoop install ffmpeg En este momento, puede probar Whisper usando la línea de comandos
$ whisper myaudiofile.ogg --language Japanese --task translateSi eso es exitoso, puede proceder a instalar esta aplicación.
Clonar el repositorio e instalar las dependencias
$ git clone https://github.com/supershaneski/openai-whisper.git myproject
$ cd myproject
$ npm install
$ npm run dev Abra su navegador a http://localhost:3006/ para cargar la página de la aplicación.
Es posible que desee ejecutar esta aplicación usando el protocolo https . Esto es necesario si desea usar un dispositivo separado para la captura de audio y usar su máquina como servidor.
Para hacerlo, prepare el certificate y los archivos key adecuados y edite server.js en el directorio raíz.
Luego corre
$ node server.js Ahora, abra su navegador a https://localhost:3006/ para cargar la página.