Esta é uma amostra de implementação do WebApp do OpenAi Whisper, um sistema automático de reconhecimento de fala (ASR), usando o Next.JS.
Ele registra dados de áudio automaticamente e carrega os dados de áudio para o servidor para transcrever/traduzir e envia de volta o resultado para o front end. Também é possível reproduzir o áudio gravado para verificar a saída.
ATUALIZAÇÃO: Se você deseja usar
Next 13com o recurso Experimental Ativado (APPDIR), verifique o OpenAI-Whisper-api. Basta definir o sinalizador para usar o módulo Python Whisper em vez da API Whisper.
Usando a API de fala OpenAI para texto, verifique o OpenAI-Whisper-Api
Se você está procurando um aplicativo de bate-papo por voz usando Whisper , verifique o OpenAi-Whisper-Talk.
Para versão Nuxt.js , verifique o OpenAI-ChatterBox.
Foi dito que Whisper em si não foi projetado para suportar tarefas de streaming em tempo real em si, mas isso não significa que não podemos tentar, como pode ser, lol.
Portanto, este projeto é minha tentativa de fazer um aplicativo Web de transcritores quase em tempo real usando o OpenAi Whisper . Cuja eficácia depende da rapidez com que o servidor pode transcrever/traduzir o áudio.
Eu usei Next.js para não precisar fazer aplicativos de back -end e front -end separados.
Quanto ao back -end, usei exec para executar o comando Shell Invocando Whisper . Ainda não encontrei uma maneira de import -lo como um módulo node.js Todos os exemplos com import parecem estar usando o 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 estou apenas usando o modelo tiny para executar uma tarefa de transcrição super rápida. Este é tudo o que meu sistema pode lidar, caso contrário, ele ficará parado.

Mudei o comportamento do aplicativo da versão anterior. Antes, o aplicativo gravará os dados de áudio continuamente em algum intervalo de tempo, por padrão 5s. No momento, ele só começará a gravar se puder detectar som.
Há uma configuração de limite para eliminar o ruído de fundo do desencadeamento da captura de áudio. Por padrão, ele está definido como -45dB (0db é o som mais alto). Ajuste a variável minDecibels nas Settings se você deseja defini -lo como menor ou mais alto, dependendo de suas necessidades.
Na conversa humana normal, diz -se que tendemos a pausar, em média, cerca de 2 segundos entre cada frase. Tendo isso em mente, se o som não for detectado por mais de 2 segundos, a gravação será interrompida e os dados de áudio serão enviados para o back -end para transcrever. Você pode alterar isso editando o valor do maxPause , por padrão definido para 2500ms .

É possível reproduzir o áudio carregado e seguir a saída de texto desde que o período é mostrado.
Quanto ao código em si, usei class component (eu sei, eu sei ...) porque tive dificuldade em acessar state variables usando ganchos quando estava desenvolvendo.

Além de minDecibels e maxPause , você também pode alterar várias opções de Whisper , como language , model e task da caixa de diálogo Settings . Por favor, verifique o repositório do Github da Whisper para obter a explicação sobre as opções.
Ainda há muitas coisas para fazer, então este projeto ainda é um trabalho em andamento ...
Primeiro, você precisa instalar Whisper e suas dependências Python
$ pip install git+https://github.com/openai/whisper.git Você também precisa ffmpeg instalado em seu sistema
# macos
$ brew install ffmpeg
# windows using chocolatey
$ choco install ffmpeg
# windows using scoop
$ scoop install ffmpeg A essa altura, você pode testar Whisper usando a linha de comando
$ whisper myaudiofile.ogg --language Japanese --task translateSe isso for bem -sucedido, você poderá instalar este aplicativo.
Clone o repositório e instale as dependências
$ git clone https://github.com/supershaneski/openai-whisper.git myproject
$ cd myproject
$ npm install
$ npm run dev Abra seu navegador para http://localhost:3006/ para carregar a página de aplicativo.
Você pode executar este aplicativo usando o protocolo https . Isso é necessário se você deseja usar um dispositivo separado para captura de áudio e usar sua máquina como servidor.
Para fazer isso, prepare o certificate e os arquivos key adequados e edite server.js no diretório raiz.
Em seguida, corra
$ node server.js Agora, abra seu navegador para https://localhost:3006/ para carregar a página.