LINUX.ORG.RU

whisper.cpp 1.7.0

 , , , ,

whisper.cpp 1.7.0

0

2

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

В проекте используется авторская тензорная библиотека машинного обучения GGML, написанная на языке C.

Основные изменения:

  • устранены сбои при большом количестве лучей (beams);
  • сокращено общее использование VRAM;
  • оптимизирована производительность кодировщика.

>>> Подробности

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)

Скрипт $ models/download-ggml-model.sh загружает модели с https://huggingface.co/ggerganov/whisper.cpp.

Usage: ./download-ggml-model.sh <model> [models_path]

Available models:
  tiny tiny.en tiny-q5_1 tiny.en-q5_1
  base base.en base-q5_1 base.en-q5_1
  small small.en small.en-tdrz small-q5_1 small.en-q5_1
  medium medium.en medium-q5_0 medium.en-q5_0
  large-v1 large-v2 large-v2-q5_0 large-v3 large-v3-q5_0 large-v3-turbo large-v3-turbo-q5_0

В прошлой версии моделей *turbo* не было, надо попробовать.

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

Зависит от модели.
$ ffmpeg -i my_record.m4a -ar 16000 -ac 1 -c:a pcm_s16le output.wav
$ ./main -m models/ggml-base.bin -f output.wav -l ru

[00:00:00.000 –> 00:00:08.720] Раз, два, три, четыре, пять, вышел зайчик погулять.

И переводит на английский:

$ ./main -m models/ggml-base.bin -f output.wav -l ru -tr

[00:00:00.000 –> 00:00:08.640] 1 2 3 4 5 left side to walk.

$ ./main -m models/ggml-medium.bin -f output.wav -l ru -tr

[00:00:00.000 –> 00:00:06.840] 1, 2, 3, 4, 5, out, bunny, for a walk.

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

на каком оборудовании

На сравнительно старом. :)

CPU: Intel(R) Core(TM) i7-7700HQ (8) @ 3.80 GHz
GPU 1: NVIDIA GeForce GTX 1050 Mobile
GPU 2: Intel HD Graphics 630 @ 1.10 GHz [Integrated]


сколько времени распознавание этого файла заняло?

$ ./main -m models/ggml-base.bin -f output.wav -l ru

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

whisper_print_timings:     load time =  2399.71 ms
whisper_print_timings:     fallbacks =   0 p /   0 h
whisper_print_timings:      mel time =    15.64 ms
whisper_print_timings:   sample time =    74.12 ms /   106 runs (    0.70 ms per run)
whisper_print_timings:   encode time =  1212.67 ms /     1 runs ( 1212.67 ms per run)
whisper_print_timings:   decode time =     0.00 ms /     1 runs (    0.00 ms per run)
whisper_print_timings:   batchd time =   248.99 ms /   104 runs (    2.39 ms per run)
whisper_print_timings:   prompt time =     0.00 ms /     1 runs (    0.00 ms per run)
whisper_print_timings:    total time =  3992.42 ms

$ ./main -m models/ggml-medium.bin -f output.wav -l ru

whisper_print_timings:     load time = 26630.36 ms
whisper_print_timings:     fallbacks =   0 p /   0 h
whisper_print_timings:      mel time =    15.55 ms
whisper_print_timings:   sample time =    75.74 ms /   108 runs (    0.70 ms per run)
whisper_print_timings:   encode time = 10509.87 ms /     1 runs (10509.87 ms per run)
whisper_print_timings:   decode time =   123.52 ms /     2 runs (   61.76 ms per run)
whisper_print_timings:   batchd time =  1878.87 ms /   104 runs (   18.07 ms per run)
whisper_print_timings:   prompt time =     0.00 ms /     1 runs (    0.00 ms per run)
whisper_print_timings:    total time = 39598.84 ms
dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

А что такое load_time, который забирает основное время? Его влияние на более длинных фразах будет нивелироваться?

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

А что такое load_time

Думаю, что это время загрузки модели.

$ ls -1sh models/ggml*.bin

142M models/ggml-base.bin
142M models/ggml-base.en.bin
1.6G models/ggml-large-v3-turbo.bin
1.5G models/ggml-medium.bin
466M models/ggml-small.en-tdrz.bin

Его влияние на более длинных фразах будет нивелироваться?

Наверное. :)

dataman ★★★★★
() автор топика
21 декабря 2024 г.
Ответ на: комментарий от pihter

А он великий и могучий понимает?

По идее, на многоязычных моделях даже должен автоматически опознавать язык каждого слова. Попробовал с large-v3-turbo-q8_0 — не вышло, большинство слов принимает за английские. Когда явно задал русский — нормально распознало.

question4 ★★★★★
()

Кстати, я так собираю:
$ cmake -B "/dev/shm/build-rel" -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DWHISPER_CURL=ON -DWHISPER_SDL2=ON -DGGML_STATIC=ON

$ cd /dev/shm/build-rel

$ ninja

Тогда бинарники можно скопировать куда угодно.

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

я своего голосового помощника 'bongo' запилил (лесом идут реальные имена) на vosk, есть такой же проект 'ирина' русскую модель используют 4gb озу хватает и целерона.

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