Это образец реализации WebApp of Openai Whisper, системы автоматического распознавания речи (ASR), используя Next.js.
Он записывает аудиоданные автоматически и загружают аудиоданные на сервер для транскрибирования/перевода, а затем отправляет результат на переднюю часть. Также возможно воспроизводить записанный звук, чтобы проверить вывод.
Обновление: если вы хотите использовать
Next 13с включенной экспериментальной функцией (AppDIR), пожалуйста, проверьте вместо этого Openai-Whisper-API. Просто установите флаг, чтобы использовать модуль Whisper Python вместо Whisper API.
Используя OpenAI Shight to Text API, пожалуйста, проверьте Openai-Whisper-API
Если вы ищете приложение с голосовой чатом, используя Whisper , проверьте Openai-Wisper-разговор.
Для версии Nuxt.js , пожалуйста, проверьте Openai-Chatterbox.
Было сказано, что сам Whisper не предназначен для поддержки потоковых задач в реальном времени как таковых, но это не значит, что мы не можем попробовать, как это может быть, лол.
Таким образом, этот проект является моей попыткой сделать почти в реальном времени веб-приложение для транскрибера с использованием Whisper Openai. Эффективность которого зависит от того, насколько быстро сервер может транскрибировать/перевести звук.
Я использовал Next.js , чтобы мне не приходилось делать отдельные приложения Backend и Frontend.
Что касается бэкэнда, я использовал exec для выполнения команды Shell, вызывая Whisper . Я еще не нашел способ import его как модуль node.js Все примеры с import , кажется, используют 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 )
}
} ) Обратите внимание, что я просто использую tiny модель для выполнения супер быстрой транскрибирования. Это все, что моя система может справиться, иначе она станет на месте.

Я изменил поведение приложения из предыдущей версии. Раньше приложение будет постоянно записывать аудиодатики через некоторое время, по умолчанию 5 с. Прямо сейчас он начнет записывать только в том случае, если сможет обнаружить звук.
Существует пороговая настройка, чтобы устранить фоновый шум от запуска аудио. По умолчанию он установлен на -45dB (0DB -самый громкий звук). Отрегулируйте переменную minDecibels в Settings , если вы хотите установить его на ниже или выше в зависимости от ваших потребностей.
В обычном человеческом разговоре говорят, что мы склонны останавливаться в среднем около 2 секунд между каждым предложением. Имея это в виду, если звук не будет обнаружен в течение более 2 секунд, запись остановится, а аудиоданные будут отправлены в бэкэнд для транскрибирования. Вы можете изменить это, редактируя значение maxPause , по умолчанию, установленному на 2500ms .

Можно воспроизводить загруженный звук и следить за выводом текста с тех пор, как показан период времени.
Что касается самого кода, я использовал class component (я знаю, я знаю ...), потому что мне было трудно получить доступ к state variables используя крючки, когда я развивался.

Помимо minDecibels и maxPause , вы также можете изменить несколько вариантов Whisper , таких как language , model и task из диалога Settings . Пожалуйста, проверьте репозиторий GitHub от Whisper для объяснения вариантов.
Есть еще много вещей, поэтому этот проект все еще находится в стадии разработки ...
Во -первых, вам нужно установить Whisper и его зависимости Python
$ pip install git+https://github.com/openai/whisper.git Вам также нужен ffmpeg , установленное в вашей системе
# macos
$ brew install ffmpeg
# windows using chocolatey
$ choco install ffmpeg
# windows using scoop
$ scoop install ffmpeg К этому времени вы можете проверить Whisper , используя командную строку
$ whisper myaudiofile.ogg --language Japanese --task translateЕсли это успешно, вы можете продолжить установить это приложение.
Клонировать репозиторий и установить зависимости
$ git clone https://github.com/supershaneski/openai-whisper.git myproject
$ cd myproject
$ npm install
$ npm run dev Откройте свой браузер на http://localhost:3006/ для загрузки страницы приложения.
Вы можете запустить это приложение с помощью https Protocol. Это необходимо, если вы хотите использовать отдельное устройство для захвата аудио и использовать свою машину в качестве сервера.
Для этого подготовьте надлежащий certificate и key файлы и редактировать server.js в корневом каталоге.
Затем беги
$ node server.js Теперь откройте свой браузер на https://localhost:3006/ для загрузки страницы.