LINUX.ORG.RU

whisper.cpp 1.7.4

 , , , ,

whisper.cpp 1.7.4

5

3

6 января состоялся выпуск 1.7.4 высокопроизводительной системы автоматического распознавания речи whisper.cpp, реализующей модель Whisper от OpenAI, написанной на языках C и C++ и распространяемой по лицензии MIT.

В проекте используется авторская тензорная библиотека машинного обучения GGML, написанная на языке C и оптимизированная для использования различных бэкендов (CUDA, Vulkan, BLAS, SYCL, OpenCL и др.).

Список изменений:

  • Переименования исполняемых файлов:
main	   -> whisper-cli
bench	   -> whisper-bench
stream	   -> whisper-stream
command	   -> whisper-command
server	   -> whisper-server
talk-llama -> whisper-talk-llama
  • Удалены примеры talk и talk.wasm.
  • В whisper-server добавлена опция подавления неречевых лексем.
  • Параметр suppress_non_speech_tokens переименован в suppress_nst.
  • В API и утилиты добавлена опция no_speech_thold для задания вероятности отсутствия речи на уровне сегмента при транскрипции.
  • В whisper-cli добавлена опция --suppress_nst.
  • Другие улучшения и исправления ошибок.

>>> Список изменений версии 1.7.4 на GitHub

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от question4

И какие значения доступны для GGML_BLAS_VENDOR помимо OpenBLAS?

https://cmake.org/cmake/help/latest/module/FindBLAS.html#blas-lapack-vendors

Если MKL — Intel Math Kernel Library

Да, она.

Gentoo оно не считается вариантом BLAS

А в Debian/Devuan считается, CMake именно MKL предлагает.

То есть выигрыш примерно на четверть.

Хорошо же.


Ещё я заметил, что сама GGML поддерживает OpenCL, но в сабже эти исходники почему-то отсутствуют.

dataman ★★★★★
() автор топика
Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от serg002

А распознавать надо ~500gb

Какими командами делаешь?

dataman ★★★★★
() автор топика
Ответ на: комментарий от serg002

То есть всего 2 месяца распознавать. Приступай. Раньше начнёшь, раньше кончишь.

А если произношение чёткое и звук качественный, можно взять модель поменьше. Если у turbo с BLAS соотношение проигрывание:распознавание 1:3, то у tiny 2:1, у small 1:2.

Хотя при распознавании телесериалов она склонна излишне концентрироваться на «смехе зрителей».

question4 ★★★★★
()
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от dataman

Ещё я заметил, что сама GGML поддерживает OpenCL, но в сабже эти исходники почему-то отсутствуют.

Починили: https://github.com/ggerganov/whisper.cpp/pull/2737.

Можно попробовать с -DGGML_OPENCL=ON -DGGML_OPENCL_USE_ADRENO_KERNELS=OFF.

dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

Если осилю, то добавлю использование miniaudio в сабж (вместо dr_wav.h от того же автора). Тогда не нужно будет конвертировать исходные файлы.

@Andrew-R, @IIIypuk, @question4 – можно тестировать мою ветку miniaudio.
Поддерживаются форматы flac, mp3, ogg и wav без необходимости конвертирования с ffmpeg.

Чтобы не возиться с git, можно добавить/заменить эти файлы в своей копии исходников whisper.cpp:
examples/addon.node/addon.cpp
examples/cli/cli.cpp
examples/common.cpp
examples/common.h
examples/miniaudio.h
examples/stb_vorbis.c

README.md пока не редактировал, там нужно будет убрать упоминания о конвертировании.

dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

Поддерживаются форматы flac, mp3, ogg и wav без необходимости конвертирования с ffmpeg.

Как насчёт MP4 со звуковой дорожкой в AAC?

И будет ли поддержка OGG работать с контейнерами MKV и WebM?

question4 ★★★★★
()
Ответ на: комментарий от question4

Как насчёт MP4 со звуковой дорожкой в AAC?

Нет, там нужно будет адаптировать к более новой версии ffmpeg.

И будет ли поддержка OGG работать с контейнерами MKV и WebM?

Нет, по той же причине, т. к. miniaudio может декодировать только аудиофайлы.

dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

Понятно. То есть для создания субтитров к видео ffmpeg всё равно необходим.

question4 ★★★★★
()
Ответ на: комментарий от dataman

С OpenCL там непонятки ибо вендора всего два, INTEL_GPU и ADRENO_GPU. На интеле не работает, с тупыми правками отпиливающими проверку вендора на ROCm крашится.

Ну и слайды (Ryzen 9 5900X/Radeon 6800XT).

./build.cpu/bin/whisper-cli -t 8 --language ru -m models/ggml-base.bin ~/tmp/buffalo.wav

whisper_print_timings:     load time =    41.09 ms
whisper_print_timings:     fallbacks =   0 p /   0 h
whisper_print_timings:      mel time =    60.80 ms
whisper_print_timings:   sample time =   455.41 ms /  2171 runs (    0.21 ms per run)
whisper_print_timings:   encode time =  2743.33 ms /     6 runs (  457.22 ms per run)
whisper_print_timings:   decode time =     5.23 ms /     2 runs (    2.62 ms per run)
whisper_print_timings:   batchd time =  1824.51 ms /  2142 runs (    0.85 ms per run)
whisper_print_timings:   prompt time =   508.34 ms /   960 runs (    0.53 ms per run)
whisper_print_timings:    total time =  5683.54 ms
./build.blas/bin/whisper-cli -t 8 --language ru -m models/ggml-base.bin ~/tmp/buffalo.wav

whisper_print_timings:     load time =    70.01 ms
whisper_print_timings:     fallbacks =   0 p /   0 h
whisper_print_timings:      mel time =    62.26 ms
whisper_print_timings:   sample time =   427.13 ms /  2017 runs (    0.21 ms per run)
whisper_print_timings:   encode time =  1821.34 ms /     5 runs (  364.27 ms per run)
whisper_print_timings:   decode time =     8.20 ms /     3 runs (    2.73 ms per run)
whisper_print_timings:   batchd time =  1721.86 ms /  1992 runs (    0.86 ms per run)
whisper_print_timings:   prompt time =   448.02 ms /   736 runs (    0.61 ms per run)
whisper_print_timings:    total time =  4599.84 ms
./build.vulkan/bin/whisper-cli -t 8 --language ru -m models/ggml-base.bin ~/tmp/buffalo.wav

whisper_print_timings:     load time =   105.51 ms
whisper_print_timings:     fallbacks =   0 p /   0 h
whisper_print_timings:      mel time =    60.78 ms
whisper_print_timings:   sample time =   457.40 ms /  2137 runs (    0.21 ms per run)
whisper_print_timings:   encode time =   169.19 ms /     6 runs (   28.20 ms per run)
whisper_print_timings:   decode time =    28.39 ms /    26 runs (    1.09 ms per run)
whisper_print_timings:   batchd time =  1950.60 ms /  2084 runs (    0.94 ms per run)
whisper_print_timings:   prompt time =    66.72 ms /   926 runs (    0.07 ms per run)
whisper_print_timings:    total time =  2866.23 ms
./build.hip/bin/whisper-cli -t 8 --language ru -m models/ggml-base.bin ~/tmp/buffalo.wav

whisper_print_timings:     load time =   266.28 ms
whisper_print_timings:     fallbacks =   0 p /   0 h
whisper_print_timings:      mel time =    60.94 ms
whisper_print_timings:   sample time =   474.34 ms /  2208 runs (    0.21 ms per run)
whisper_print_timings:   encode time =   122.39 ms /     6 runs (   20.40 ms per run)
whisper_print_timings:   decode time =     4.37 ms /     2 runs (    2.18 ms per run)
whisper_print_timings:   batchd time =  1463.70 ms /  2179 runs (    0.67 ms per run)
whisper_print_timings:   prompt time =    37.74 ms /   930 runs (    0.04 ms per run)
whisper_print_timings:    total time =  2463.48 m

P.S. Каждый раз проигрываю с «предсказуемости» результатов выхлопа в зависимости от бэкенда.

exception13 ★★★★★
()
Ответ на: комментарий от exception13

А вот еще слайды на окаменелости (i7 6500U/HD Graphics 520).

./build.cpu/bin/whisper-cli -t 2 --language ru -m models/ggml-base.bin ~/tmp/buffalo.wav

whisper_print_timings:     load time =   106.94 ms
whisper_print_timings:     fallbacks =   0 p /   0 h
whisper_print_timings:      mel time =   455.63 ms
whisper_print_timings:   sample time =  2467.62 ms /  2171 runs (    1.14 ms per run)
whisper_print_timings:   encode time = 21445.34 ms /     6 runs ( 3574.22 ms per run)
whisper_print_timings:   decode time =    20.58 ms /     2 runs (   10.29 ms per run)
whisper_print_timings:   batchd time = 10322.76 ms /  2142 runs (    4.82 ms per run)
whisper_print_timings:   prompt time =  3755.33 ms /   960 runs (    3.91 ms per run)
whisper_print_timings:    total time = 38728.41 ms
./build.blas/bin/whisper-cli -t 2 --language ru -m models/ggml-base.bin ~/tmp/buffalo.wav

whisper_print_timings:     load time =   131.97 ms
whisper_print_timings:     fallbacks =   0 p /   0 h
whisper_print_timings:      mel time =   433.73 ms
whisper_print_timings:   sample time =  2337.15 ms /  2049 runs (    1.14 ms per run)
whisper_print_timings:   encode time = 11096.97 ms /     5 runs ( 2219.39 ms per run)
whisper_print_timings:   decode time =    62.44 ms /     6 runs (   10.41 ms per run)
whisper_print_timings:   batchd time =  9765.27 ms /  2021 runs (    4.83 ms per run)
whisper_print_timings:   prompt time =  1883.94 ms /   736 runs (    2.56 ms per run)
whisper_print_timings:    total time = 25841.09 ms
./build.vulkan/bin/whisper-cli -t 3 --language ru -m models/ggml-base.bin ~/tmp/buffalo.wav

whisper_print_timings:     load time =   463.01 ms
whisper_print_timings:     fallbacks =   0 p /   0 h
whisper_print_timings:      mel time =   415.64 ms
whisper_print_timings:   sample time =  1875.46 ms /  2205 runs (    0.85 ms per run)
whisper_print_timings:   encode time =  7521.35 ms /     5 runs ( 1504.27 ms per run)
whisper_print_timings:   decode time =    18.91 ms /     1 runs (   18.91 ms per run)
whisper_print_timings:   batchd time = 17837.00 ms /  2182 runs (    8.17 ms per run)
whisper_print_timings:   prompt time =  1358.30 ms /   732 runs (    1.86 ms per run)
whisper_print_timings:    total time = 29657.38 ms

exception13 ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.