-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
387 deploy whisper #388
387 deploy whisper #388
Conversation
app/audio_recognizer.py
Outdated
url = "http://whisper:9000/asr" | ||
params = { | ||
'task': 'transcribe', | ||
'language': 'ru', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
сделайте язык параметром (чтобы на будущее можно было его менять )
requirements.txt
Outdated
@@ -29,3 +29,5 @@ pysndfx | |||
python-i18n | |||
python-pptx ==0.6.19 | |||
odfpy ==1.4.1 | |||
requests | |||
librosa |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Добавьте версии для библиотек requests и librosa
2ad78da
to
6884eab
Compare
app/audio_recognizer.py
Outdated
'output': 'json' | ||
} | ||
headers = {'accept': 'application/json'} | ||
files = {'audio_file': (file_name, open(file_name, 'rb'), 'audio/mpeg')} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Не будет ли проблем с размером файла, если кто-то наговорит на пару часов? (условная 413 client request body or request entity is too large
)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Не совсем понимаю, как это можно проверить в коде, и нужно ли?
Я немного переписал эту часть кода — добавил закрытие файла после прочтения, теперь посылаю не дескриптор, а буфер, в который файл был считан
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Тут скорее вопрос (на исследование/проверку) - какого максимального размера аудио можно отправить в asr?
И можно ли защититься от ошибок со слишком большими файлами (разбивать их на более мелкие / др) - в vosk, например, данные отправлялись кусками по сокету, поэтому теоретически происходила обработка аудио любого размера
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Пока что удалось установить, что верхний предел у Whisper всё же существует
- 2 часа 15 минут тишины весом в 309 мб удалось обработать
- 1 час 30 минут разговорного подкаста весом 213 мб тоже удалось обработать
- 2 часа 30 минут тишины весом в 344 мб обработать не удалось -- вышли за лимиты по памяти
Аудио загружались в tiny модель с характеристиками, указанными по дефолту в docker compose
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Вынесите свои исследования в https://github.com/OSLL/web_speech_trainer/wiki
tests/test_whisper.py
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Как вы предполагаете автоматизированный запуск подобного теста?
- функции тестов для pytest не принимают каких-либо параметров - аргумент "file" передать не удастся
- для проверки корректности транскрибация нужны две вещи 1) аудио-запись 2) верная транскрибация (для оценки результата работы)
- у вас есть код, использующий в проекте (class WhisperAudioRecognizer) - тестировать стоит его/через него, а не какой-то код для взаимодействия с whisper (в коде этого файла может не быть проблем, а в том, что используется в системе, задействован в проверках - всё ломается и не работает, к примеру)
- в конце концов вам необходимо проверить даже не работу самого whisper (это уже делали до вас его создатели и пользователи), а кода, который вы реализовали для взаимодействия с ним, но допустим пока обойдемся без mock
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Соглашусь, такой код для тестирования не подойдёт. Хотелось бы узнать, стоит ли вообще писать тест для Whisper, и если да, то что именно нужно протестировать?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Добавьте тестирование своего класса WhisperAudioRecognizer (пусть даже он частично будет общаться с whisper-контейнером, и это будет уже не совсем unit-тестирование)
- тестовые аудио есть в /tests - можно сопоставить истинные результаты с возвращаемыми классом (лучше параметризуйте через pytest входной файл и данные)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Возникли трудности с написанием тестов, дело в том, что на данный момент tiny модель "Добрый день, все хорошо. Я сижу дома" распознаёт так, как показано на фото. Первая строка результат распознавания после применений denoiser, перегона в wav, а на второй строке результат распознавания необработанной записи
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Давайте пока оставим тесты в том виде в котором есть (с печатью распознанных слов)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А по поводу wav и denoiser - посмотрите, насколько они нужны при работе с whisper (создал задачу - #401 ) - wav нужен был для vosk, возможно, сейчас от него можно избавиться?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Аналогичное замечание про ОЗУ - https://github.com/OSLL/web_speech_trainer/pull/388/files#r1515013316
- локально у меня могло "съесть" неконтролируемо до 5+ ГБ
Добавил/освежил Github CI для более простой проверки интеграции К комментарию - #388 (comment), сейчас падают только ваши тесты
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Оставил последние комментарии - остальное ок
app/audio_processor.py
Outdated
|
||
end_time = time.time() | ||
processing_time = end_time - start_time | ||
logger.info(f'audio processing time: {processing_time} s') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Добавьте в сообщение длительность аудио (вы её получаете выше) - так будут более полезные логи (длина записи + время её обработки)
docker-compose.yml
Outdated
cpuset: ${WHISPER_CPU:-0,1} | ||
mem_limit: 5g | ||
volumes: | ||
- ./whisper_asr_model_cache:/root/.cache/whisper |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Чтобы не засорять хост/папку репо (и не трогать docker/gitignore) - сделайте docker volume ( https://docs.docker.com/compose/compose-file/07-volumes/ )
docker-compose.yml
Outdated
- ASR_ENGINE=${WHISPER_ASR_ENGINE:-openai_whisper} | ||
restart: always | ||
cpuset: ${WHISPER_CPU:-0,1} | ||
mem_limit: 5g |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Вынесите параметр по аналогии в env
Используется контейнер с Whisper, поскольку так изначально посоветовал Марк Маркович. На данный момент не могу сказать, какой из подходов будет более предпочтительным в тренажере |
Да, пока этот вопрос снимаю - обсуждаю с ММ |
…ut for resend audio
…nto whisper_deploy
6a41804
to
90684a6
Compare
This reverts commit 5be8e9c.
Update image (Ubuntu/Python/requirements)
No description provided.