LINUX.ORG.RU

whisper.cpp 1.7.4

 , , , ,

whisper.cpp 1.7.4

4

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)

Компактная модель, в самой большой версии ~3.9 GB памяти. А с русским языком у неё как.

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

так а че «поддерживать», бери модель с русским и используй, сам виспер просто интерфейс

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

Если это тот же виспер, что и оригинальый на пистоне, то все отлично, распознает на ура. В самой большой модели даже с пунктуацией.

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

А с русским языком у неё как.

Вот, например: https://ru.wikipedia.org/wiki/Википедия:Список_аудиостатей.

Я взял https://ru.wikipedia.org/wiki/Файл:Ru-African_buffalo_(intro).ogg.
У меня сабж скомпилирован с поддержкой Vulkan.

$ ffmpeg -y -i Ru-African_buffalo_\(intro\).ogg -ar 16000 -ac 1 -c:a pcm_s16le out16.wav
$ ./whisper-cli --language ru -m models/ggml-medium-q8_0.bin out16.wav

system_info: n_threads = 4 / 8 | AVX = 1 | AVX2 = 1 | AVX512 = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | SSE3 = 1 | SSSE3 = 1 | VSX = 0 | COREML = 0 | OPENVINO = 0 |

main: processing 'out16.wav' (2278927 samples, 142.4 sec), 4 threads, 1 processors, 5 beams + best of 5, lang = ru, task = transcribe, timestamps = 1 ...


[00:00:00.000 --> 00:00:13.980]   африканский буйвол
[00:00:13.980 --> 00:00:22.460]   африканский или кафрский буйвол, в латинском sincerus cafer, это вид быков широко
[00:00:22.460 --> 00:00:27.300]   распространенной в африке. Будучи типичным представителем подсемейства
[00:00:27.300 --> 00:00:32.400]   быков, африканский буйвол, однако, весьма своеобразен и выделяется в отдельный
[00:00:32.400 --> 00:00:38.640]   род sincerus с единственным видом. Этот вид также единственный из подсемейства
[00:00:38.640 --> 00:00:42.440]   быков, обитающие в африке.
[00:00:42.440 --> 00:00:55.740]   Африканский буйвол - это крупнейший из современных быков. Вес взрослых самцов,
[00:00:55.740 --> 00:01:01.760]   крупных подвидов, часто превышает одну тонну, а экземпляры весом 900 килограмм
[00:01:01.760 --> 00:01:11.040]   нередкость. Изредка встречаются старые быки весом даже 1300 килограмм. Высота в
[00:01:11.040 --> 00:01:20.200]   холке у взрослых самцов до 1,8 метра при длине тела от 3 до 3,4 метра.
[00:01:20.200 --> 00:01:26.540]   При этом некоторые подвиды африканского буйвола много меньше. Вообще лесные
[00:01:26.540 --> 00:01:32.440]   буйволы значительно меньше тех буйволов, которые обитают в саванне.
[00:01:32.440 --> 00:01:37.960]   Популяция буйволов в африке сохранилась по сравнению с поголовьем других крупных
[00:01:37.960 --> 00:01:43.560]   животных континента достаточно хорошо, хотя и испытывает сильное давление со
[00:01:43.560 --> 00:01:46.400]   стороны человека.
[00:01:50.200 --> 00:02:08.760]   Википедия - свободная энциклопедия, которую может
[00:02:08.760 --> 00:02:19.320]   редактировать каждый. Адрес в интернете ru.wikipedia.org
[00:02:20.200 --> 00:02:23.200]   Редактор субтитров А.Олзоева Корректор А.Кулакова


whisper_print_timings:     load time = 47871.96 ms
whisper_print_timings:     fallbacks =   0 p /   0 h
whisper_print_timings:      mel time =   189.98 ms
whisper_print_timings:   sample time =  1354.03 ms /  2144 runs (    0.63 ms per run)
whisper_print_timings:   encode time = 15359.93 ms /     6 runs ( 2559.99 ms per run)
whisper_print_timings:   decode time =    17.33 ms /     1 runs (   17.33 ms per run)
whisper_print_timings:   batchd time = 25472.85 ms /  2119 runs (   12.02 ms per run)
whisper_print_timings:   prompt time =  1854.66 ms /   708 runs (    2.62 ms per run)
whisper_print_timings:    total time = 92298.40 ms
dataman ★★★★★
() автор топика
Ответ на: комментарий от Zhbert

Да, и даже «не редкость» вместо «нередкость».
И даже быстрее получилось:

whisper_print_timings:     load time = 18934.96 ms
whisper_print_timings:     fallbacks =   0 p /   0 h
whisper_print_timings:      mel time =   184.15 ms
whisper_print_timings:   sample time =  1286.67 ms /  2104 runs (    0.61 ms per run)
whisper_print_timings:   encode time = 34451.09 ms /     8 runs ( 4306.39 ms per run)
whisper_print_timings:   decode time =    38.82 ms /     8 runs (    4.85 ms per run)
whisper_print_timings:   batchd time =  6286.73 ms /  2065 runs (    3.04 ms per run)
whisper_print_timings:   prompt time =   786.46 ms /  1116 runs (    0.70 ms per run)
whisper_print_timings:    total time = 62219.11 ms
dataman ★★★★★
() автор топика
Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от One

А с русским языком у неё как.

Распознавание диктофонной записи вполне уверенное

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

У меня сабж скомпилирован с поддержкой Vulkan

Если не сложно собери пожалуйста без вулкана, только на CPU, на сколько медленнее будет?

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

А что за PC?

CPU: Intel(R) Core(TM) i7-7700HQ (8) @ 3.80 GHz
GPU 1: NVIDIA GeForce GTX 1050 Mobile [Discrete]
GPU 2: Intel HD Graphics 630 @ 1.10 GHz [Integrated]
dataman ★★★★★
() автор топика

Не ждите чудес от распознавания. Если у записи будет такое качество, где 90% букв и цифр невнятные, но слушатель примерно понимает что происходит, то whisper.cpp мало что сможет сделать.

sarumeister
()

Аппаратные хотелки?

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

$ ./whisper-cli-cpu --language auto -m models/ggml-large-v3-turbo-q8_0.bin out16.wav

system_info: n_threads = 4 / 8 | AVX = 1 | AVX2 = 1 | AVX512 = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | SSE3 = 1 | SSSE3 = 1 | VSX = 0 | COREML = 0 | OPENVINO = 0 |

main: processing 'out16.wav' (2278927 samples, 142.4 sec), 4 threads, 1 processors, 5 beams + best of 5, lang = auto, task = transcribe, timestamps = 1 ...

whisper_full_with_state: auto-detected language: ru (p = 0.999322)

[00:00:00.760 --> 00:00:14.640]   Африканский буйвол
[00:00:14.640 --> 00:00:19.880]   Африканский или кафрский буйвол, в латинском sincerus
[00:00:19.880 --> 00:00:24.600]   caffir - это вид быков, широко распространенный в Африке.
[00:00:24.600 --> 00:00:28.840]   Будучи типичным представителем подсемейства быков, африканский
[00:00:28.840 --> 00:00:32.420]   буйвол, однако, весьма своеобразен и выделяется в отдельный
[00:00:32.420 --> 00:00:35.660]   род sincerus с единственным видом.
[00:00:35.660 --> 00:00:40.080]   Этот вид, также единственный из подсемейства быков, обитающих
[00:00:40.080 --> 00:00:50.220]   в Африке.
[00:00:50.220 --> 00:00:53.480]   Африканский буйвол - это крупнейший из современных
[00:00:53.480 --> 00:00:54.480]   быков.
[00:00:54.480 --> 00:00:57.680]   Вес взрослых самцов, крупных подвидов, часто превышает
[00:00:57.680 --> 00:01:04.500]   1 тонну, а экземпляры весом 900 килограмм не редкость.
[00:01:04.500 --> 00:01:10.640]   Изредка встречаются старые быки весом даже 1300 килограмм.
[00:01:10.640 --> 00:01:16.300]   Высота в холке у взрослых самцов до 1,8 метра при длине
[00:01:16.300 --> 00:01:20.500]   тела от 3 до 3,4 метра.
[00:01:20.500 --> 00:01:24.420]   При этом некоторые подвиды африканского буйвола много
[00:01:24.420 --> 00:01:25.420]   меньше.
[00:01:25.420 --> 00:01:29.720]   Вообще лесные буйволы значительно меньше тех буйволов, которые
[00:01:29.720 --> 00:01:32.960]   обитают в саванне.
[00:01:32.960 --> 00:01:36.300]   Популяция буйволов в Африке сохранилась по сравнению
[00:01:36.300 --> 00:01:40.080]   с поголовьем других крупных животных континента достаточно
[00:01:40.080 --> 00:01:43.960]   хорошо, хотя и испытывает сильное давление со стороны
[00:01:43.960 --> 00:01:46.900]   человека.
[00:01:46.900 --> 00:02:09.780]   Википедия - свободная энциклопедия, которую может редактировать
[00:02:09.780 --> 00:02:21.780]   каждый.


whisper_print_timings:     load time =  7506.68 ms
whisper_print_timings:     fallbacks =   1 p /   0 h
whisper_print_timings:      mel time =   184.35 ms
whisper_print_timings:   sample time =  1416.46 ms /  1950 runs (    0.73 ms per run)
whisper_print_timings:   encode time = 187881.59 ms /     8 runs (23485.20 ms per run)
whisper_print_timings:   decode time =   576.40 ms /    41 runs (   14.06 ms per run)
whisper_print_timings:   batchd time =  8026.26 ms /  1873 runs (    4.29 ms per run)
whisper_print_timings:   prompt time =  4829.12 ms /  1426 runs (    3.39 ms per run)
whisper_print_timings:    total time = 210855.86 ms

whisper_print_timings:    total time = 210855.86 ms

а с Vulkan

whisper_print_timings:    total time = 62219.11 ms
dataman ★★★★★
() автор топика
Ответ на: комментарий от One

Потому что GGML использует свой формат GGUF.

GGUF is a file format for storing models for inference with GGML and executors based on GGML. GGUF is a binary format that is designed for fast loading and saving of models, and for ease of reading. Models are traditionally developed using PyTorch or another framework, and then converted to GGUF for use in GGML.

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

Даже относительно слабая видяха дает прирост в три раза, круто!

einhander ★★★★★
()

системы автоматического распознавания речи

Тест: все САРР обламываются на «двух болтливых бабах», говорящих одновременно.

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

Зависит от (не)культурных традиций.

dataman ★★★★★
() автор топика

Изучаю совершенно удивительную библиотеку miniaudio. Она поддерживает декодирование WAV, FLAC, MP3 и Vorbis (c stb_vorbis) без ffmpeg.
И tools/audioconverter работает быстрее, чем ffmpeg.
Немножко улучшил audioconverter в PR#925. Компиляция:

$ gcc -O3 -march=native audioconverter.c -o maconverter -lm

И для сабжа вместо:

$ ffmpeg -y -i <входной файл> -ar 16000 -ac 1 -c:a pcm_s16le <выходной.wav>

использую

$ maconverter <входной файл> <выходной.wav> s16 1 16000

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

dataman ★★★★★
() автор топика

Интересно, а несколько языков сможет задетектировать?

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