LINUX.ORG.RU

Избранные сообщения buddhist

Распознавание речи, ч.2: OpenAI whisper

Форум — Talks

Доброго времени суток

10 лет назад безуспешно искал варианты распознавания речи. Не нашел, смирился

Сегодня решил вернуться к вопросу. Вспомнил, что в новостях проскакивал RTranslator 2.0.0 и 2.0.1
В описании сказано, что он использует модель ИИ «OpenAI whisper». Так, становится все интереснее :)

Идем в официальный репозиторий openai/whisper . Где-то рядом лежит инструкция, как скачать языковые модели

Итак, поехали

  1. Запускаю игровой комп с нормальной видюхой (вообще не обязательно, но для quick start пусть так)
  2. создаем venv (раньше это называлось virtualenv. среда, в которую изолированно ставятся пакеты, чтобы не разводить бардак)
router@europe:venv$ python3 -m venv whisper
router@europe:venv$ . whisper/bin/activate
(whisper) router@venv:venv$ cd whisper/
  1. теперь скачиваем whl пакеты. Т.к. они очень большие. Чтобы в следующий раз не качать
    Пакет с openai whisper называется «openai-whisper» (не путать с другими из кучи мусора pypi)
(whisper) router@venv:venv$ mkdir distribs
(whisper) router@venv:venv pip3 download openai-whisper -d distribs/ -v
[...]

(whisper) router@venv:venv$ pip3 download setuptools wheel -d distribs/ -v
[...]
  1. отлично, теперь эти же пакеты же устанавливаем (в venv «whisper»)
(whisper) router@europe:venv$ pip3 install --no-index --find-links distribs/  openai-whisper
  1. скачиваем языковые модели
    Ссылки можно взять из whisper/lib64/python3.11/site-packages/whisper/__init__.py (см выше ссылку на обсуждение в github)
    Я выбрал модели tiny (хватит даже интеграшки) и turbo (хорошая видюха позволяет)
    После скачивания нужно положить в ~/.cache/whisper/
# в 2024 году лучше скачивать не от нас
# хотя не проверял, может и не блокировали...
curl -x socks5h://127.0.0.1:5555 -O 'https://openaipublic.azureedge.net/main/whisper/models/d3dd57d32accea0b295c96e26691aa14d8822fac7d9d27d5dc00b4ca2826dd03/tiny.en.pt'
curl -x socks5h://127.0.0.1:5555 -O 'https://openaipublic.azureedge.net/main/whisper/models/aff26ae408abcba5fbf8813c21e62b0941638c5f6eebfb145be0c9839262a19a/large-v3-turbo.pt'
# актуальные ссылки нужно брать из __init__.py пакета openai-whisper
  1. берем видеофайл и выдираем из него звук
    (опять же, пока это первое знакомство. возможно, whisper сам бы это сделал, не знаю)
ffmpeg -i 01.Introduction.mp4 -vn -ar 44100 -ac 2 -b:a 192k 01.Introduction.mp3

  1. пробуем
# сначала модель tiny
(whisper) router@europe:test$ whisper 01.Introduction.mp3 --model tiny.en
/opt/venv/whisper/lib/python3.11/site-packages/whisper/__init__.py:150: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
  checkpoint = torch.load(fp, map_location=device)
[00:00.000 --> 00:07.400]  In my 20-plus years, working in and around this industry, you start to pick up a couple
[00:07.400 --> 00:08.560]  of things.
[00:08.560 --> 00:10.920]  Like for example, the pace of technology.
[00:10.920 --> 00:15.560]  It is sort of an established fact here in IT that the pace of the things that we work

[...]


# и с моделью turbo
(whisper) router@europe:test$ whisper 01.Introduction.mp3 --model turbo
[...]
Detecting language using up to the first 30 seconds. Use `--language` to specify the language
Detected language: English
[00:00.000 --> 00:07.400]  In my 20-plus years working in and around this industry, you start to pick up a couple
[00:07.400 --> 00:08.400]  of things.
[00:08.400 --> 00:10.920]  Like, for example, the pace of technology.
[00:10.920 --> 00:15.560]  It is sort of an established fact here in IT that the pace of the things that we work

  1. в другом терминале смотрю загрузку видюхи
# это с моделью tiny
router@europe:~$ nvidia-smi
[...]
|   0  NVIDIA GeForce RTX 3060        On  | 00000000:01:00.0 Off |                  N/A |
| 51%   45C    P2              40W / 170W |   1858MiB / 12288MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
[...]
|    0   N/A  N/A      5777      C   /opt/venv/whisper/bin/python3              1782MiB |

# а это с моделью turbo
[...]
|   0  NVIDIA GeForce RTX 3060        On  | 00000000:01:00.0 Off |                  N/A |
| 82%   53C    P2             123W / 170W |   5542MiB / 12288MiB |     86%      Default |
[...]
|    0   N/A  N/A      5777      C   /opt/venv/whisper/bin/python3              5466MiB |

Текст в обоих случаях распознался одинаково, можно не насиловать видюху самой тяжелой моделью, а взять самую простую

Вот они, эти ваши нейросети. 10 лет назад я о таком мог только мечтать. А сейчас оно просто работает :)

Теперь надо для очистки совести завернуть этот в какой-нибудь sandbox и перенести на свой ноут. Хотя можно и забить - на игровом компе чувствительных данных нет, можно там гонять

 , , ,

router
()

Подходящая структура данных для изменяемой 2D карты.

Форум — Development

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

Выглядит это как-то так:

       
     | 
 |   o 
 | | o 
 | o | 
 o | | 
 |   o 
 | | | 
 o |   
 | o   
   |   

Начало и старт отрезка изначально заданы в микросекундах, положение точки также задаётся в микросекундах.

Однако для отображения такая точность не нужна, нужна лишь правильная очерёдность событий и отрезков. Другими словами, если собрать все позиции во времени, отсортировать и последовательно пронумеровать их, то получим подходящие координаты для отображения на этой карте.

Проблема в том, что мне нужно уметь вставить новые отрезки и точки в уже существующую карту и оставить всё отсортированным. Кроме того хочется уметь быстро менять местами столбцы.

Подумав я наговнякал такую структуру:

map = {
  columnsOrder: [colId1, colId2, ...],
  columns: {
    colId1: {
      segments: [
        // yOffset -- отступ относительно конца предыдущего отрезка в столбце
        //
        // points содержит набор точек внутри этого отрезка,
        // с Y координатами относительно начала отрезка
        {id, at, yOffset, yLength, points},
        ...
      ]
    }
  }
}

Отрезки имеют длину, но не имеют абсолютных координат. То же самое для точек, нет абсолютный координат, есть лишь относительные. Для того чтобы вставить новую точку нужно

  • последовательно пройтись по всем столбцам, вычислить их абсолютные координаты.
  • найти подходящие координату после которой можно вставить точку
  • сдвинуть вниз все точки внутри отрезков внутри которых находится эта координата
  • увеличить длину отрезка на 1
  • вставить точку в отрезок

Вроде должно работать, но выглядит как-то криво и переусложнённо. Я пробовал поискать что-то похожее на gamedev форумах (всё-таки 2D), но чёт не нашёл. Может быть есть какая-то стандартная структура данных для таких вещей?

Киньте в меня книгой или статьёй, или хотя бы ключевыми словами по которым стоит погулить.

 , ,

vladimir-vg
()

Глюкофон и трубофон

Форум — Talks

Это не новый телефон отечественного производства, это музыкальные инструменты.
Глюкофон: https://youtu.be/EjDEEB1c5BE
Ханг: https://youtu.be/EDQgU1CPpis
Диджериду: https://youtu.be/oXBGZoBYaLY
Yaybahar: https://youtu.be/_aY6TxC1ojA
Трубофон: https://youtu.be/mdMW-ht9wrc

Более технологичные вещи. Это уже трудно назвать просто инструментами.
Launchpad: https://youtu.be/3vC5TsSyNjU
AlphaSphere: https://youtu.be/EZdgr6sLQ1Q
Reactable: https://youtu.be/CCMtw-ATPko

И на последок очень похожая на линукс Marble Machine:
https://youtu.be/IvUU8joBb1Q

 

andregin
()

BSoD - экстремизм и насилие

Форум — Talks

!Ъ: https://youtu.be/F4DmZA_txy4?t=1m46s

Ъ: В Омске у детей в школах был не огороженный доступ в интернет с экстремистскими сайтами и запрещённой информацией. Нанесён вред духовному и нравственному развитию проверяющих.

А причём здесь BSoD и оффтопик? Смотрите видео.

Линукс здесь при том что огораживающие фильтры работают под линуксом. А ещё его модно ставить в школы.

P.S: сам знаю что тупняк.

 , , , ,

StReLoK
()

Классика на свободных движках

Форум — Games

Здравствуйте, любители свежей олдятинки!
Провёл ревизию и выяснил, что есть вполне живые и работоспособные движки к классическим игрушкам. Вот некоторые примеры:

  • openKB - движок для King's Bounty - идейного прародителя Heroes Of Might & Magic, Warlords, Disciples, Age Of Wonders.
  • FHeroes2 - Heroes of Might & Magic 2 - прошёл 2 больших карты против AI, всё вполне работоспособно, быстро, красиво, поддерживается вся серия HOMM2, смена разрешений, в настройках можно добавлять плюшки из HOMM3.
  • VCMI - Heroes of Might & Magic 3 - играл против AI, тестировал новые версии движка, испавлял баги, добавлял города. Поддерживаются WOG и ERA, но можно играть и на чистых HOMM3 (поддерживается вся серия). Также много плюшек, новых артефактов, городов, юнитов, героев, смена разрешений и другие вкусности.
  • Dune Legacy - Dune 2 - прошёл несколько миссий за разные дома, играл скирмиши, всё прекрасно работает. Движок вполне современный, взято много идей из последующих игр серии, например выделение множества объектов, очереди строительства, векторы движения, естественно, есть смена разрешений и куча приятных настроек. Также поддерживаются моды.
  • War1gus - движок для Warcraft I, основан на Stratagus.
  • Wargus+Aleona's Tales - свободный движок для Warcraft II + свободные ресурсы (можно играть и с оригинальными) - тоже вполне играбельно и удобно, основа движка - Stratagus, возможность выделять множество объектов, векторы движения, разные разрешения...
  • Stargus - движок для Starcraft I, основан на Stratagus.
  • 7KAA - движок для своеобразной стратегии Seven Kingdoms.
  • OpenRedAlert - движок для Red Alert 1, написанный на C++, в отличие OpenRA (Mono).
  • OpenRA - модифицированный движок для Red Alert, Command & Conquer и Dune 2000 (Achtung! Mono!).
  • OpenXcom - UFO: Enemy Unknown - прохожу капманию, всё работает, с каждой новой версией всё лучше. Также с версии 1.0 поддерживается мод с Ктулху.
  • FreeSynd - Syndicate - тоже вполне играбельно, наконец-то починили радар.
  • Syndicate Wars Port - движок для Syndicate Wars, продолжения Syndicate.
  • GemRB - движок для Baldur's Gate, Icewind Dale и Planescape: Torment. Вполне рабочий, я почти прошёл Baldur's Gate.
  • Micropolis - Свободный движок для SimCity.
  • ECWolf - модернизированный движок для Wolfenstein 3D, Spear of Destiny и Super 3D Noah's Ark, основанный на кодах Wolf4SDL и ZDoom.
  • Cytadela - движок для Cytadela, стрелялки от первого лица для Amiga.
  • Rise of the Triad - движок для уникальной для своего времени игры Rise of the Triad, основанной на сильно модифицированном движке для Wolfenstein 3D.
  • ZDoom+FreeDoom - Модифицированный и современный движок для Doom, Doom 2, Heretic, HeXen, Strife + свободные ресурсы. Множество улучшений: свободный обзор, прицел, приседания и прыжки, объекты больше не имеют бесконечную высоту, высокое разрешение. Также есть замечательный мод BrutalDoom, привносящий моря кровищщи, горы кишок и ультранасилие.
  • GZDoom - OpenGL-форк ZDoom.
  • Doomsday - модифицированный OpenGL-движок для Doom I&2, Heretic, Hexen, HacX, Chex с поддержкой трёхмерных моделей вместо спрайтов.
  • uHexen2 - SDL/OpenGL движок для Hexen II: Hammer of Thyrion.
  • DarkPlaces + Quake Revitalization Project - модифицированный OpenGL-движок для Quake I + обновлённые текстуры.
  • Yamagi Quake II - модифицированный движок для Quake II, также поддерживает дополнения Mission Pack 1 'The Reckoning' и Mission Pack 2 'Ground Zero'.
  • ioquake3 - модифицированный движок для Quake III.
  • Eduke32+HRP - Модифицированный SDL/OpenGL движок для Duke Nukem 3D (свободный обзор, прицел, прыжки, приседания, высокое разрешение) + набор свободных трёхмерных текстур. Прошёл всего Дюка с трёхмерными текстурами и продвинутой отрисовкой Polymer.
  • eRampage - движок для стрелялок Redneck Rampage, Suckin' Grits on Route 66, Redneck Rampage Rides Again и Redneck Deer Huntin'. Основан на EDuke32.
  • BloodCM + HRP for BloodCM - Blood на движке EDuke32 + текстуры в высоком разрешении. Готовы 2 эпизода игры, третий в разработке.
  • Aleph One - модифицированный движок для Marathon, Marathon 2: Durandal и Marathon Infinity. Также сообществом разработаны новые игры Marathon: EVIL, Tempus Irae, Marathon RED, Marathon: Eternal, Marathon: Rubicon X, Marathon: Phoenix. Ещё есть отдельная игра Excalibur: Morgana's Revenge. Эти игры особенно придутся по душе латентным, активным и пассивным любителям Macintosh, ибо изначально Marathon разрабатывался исключительно под эту платформу.
  • Xash3D - свободный движок для Half-Life (аналог GoldSource).
  • D2X-XL - OpenGL движок для трёхмерной леталки-стрелялки Descent. Также разработан редактор уровней DLE.
  • DXX-Rebirth - SDL/OpenGL движок для трёхмерных леталок-стрелялок Descent 1&2.
  • ForsakenX - движок для трёхмерной леталки-стрелялки Forsaken, клона Descent.
  • OpenTTD - свободный движок для Transport Tycoon Deluxe + свободная графика и звуки.
  • JA2-Stracciatella - Jagged Alliance 2. Несмотря на периодические приостановки, проект до сих пор жив и недавно снова вошёл в активную фазу.
  • ScummVM - набор свободных движков в основном для игр в жанре quest (приключение), например от Lucas Arts, Sierra, Westwood, Coktel Vision, The Neverhood Inc., The Dreamers Guild, Revolution Software, Psygnosis, Infocom, Delphine Software International, Adventure Soft, также и для некоторых ролевых игр: Eye of the Beholder I&II, Lands of Lore: The Throne of Chaos. На данном этапе ведутся работы по поддержке таких замечательных игр, как Myst, Riven: The Sequel to Myst, Gabriel Knight, Gabriel Knight 2: The Beast Within, King's Quest VII, Phantasmagoria I&II, Police Quest IV, Police Quest: SWAT, Quest for Glory IV, Space Quest 6: The Spinal Frontier, Leisure Suit Larry 7, Broken Sword 2.5...
  • ResidualVM - движки для трёхмерных игр Grim Fandango и Escape from Monkey Island от Lucas Arts, также добавлена поддержка для Myst 3 Exile. Для Grim Fandango разработан 'point & click интерфейс'.
  • Pentagram - движок для Ultima VIII с поддержкой разных разрешений, разных звуковых систем, миникарты, TrueType.
  • Exult - движок для Ultima VII с поддержкой разных разрешений, разных звуковых систем, статусбаров, Exult Studio для разработки своих игр.
  • Nuvie - движок для Ultima VI.
  • XU4 - движок для Ultima IV с поддержкой VGA и 16-bit графики, смешивание заклинаний как в Ultima V.
  • OpenMW - The Elder Scrolls III: Morrowind. Проект активно развивается, добавляется новый функционал, поддержка модификаций, но на данном этапе поиграть пока не удастся.
  • Lord of the Rings game engine - движок для ролевой игры Lord of the Rings.
  • Arx Libertatis - движок для трёхмерной ролевой игры Arx Fatalis.
  • FS2Open - движок для космического симулятора FreeSpace 2. Также есть fsport - адаптация кампаний FreeSpace 1 для FS2Open.
  • CorsixTH + CorsixTH-Graphics - движок для симулятора больницы Theme Hospital и набор новой свободной графики.
  • Abysmal Engine - движок для System Shock 1 и Ultima Underworld. Проект жив, потихоньку развивается.
  • OpenAge - движок для Age of Empires II. Проект на начальной стадии, ещё сырой. Разработчики пока толком не определились с технологиями, хотят для изометрической графики задействовать OpenGl и шейдеры.
  • Antares - движок для космической стратегии Ares. Трепещите, латентные, активные и пассивные любители Macintosh, игра изначально разрабатывалась исключительно под эту платформу.
  • CaesarIA - симулятор Римской Империи и Цезаря в частности Caesar III.
  • Falltergeist - свободный движок для Fallout 1&2, разрабатываемый на C++ с использованием SDL2. Проект на начальной стадии, но активно развивается.
  • freeablo - свободный движок для Diablo 1 с использованием SDL2. Проект на начальной стадии, готов начальный посёлок с нейтральными персонажами и пара случайно генерируемых подземных уровней.
  • Abuse - аркадная стрелялка-платформер, сюжет вдохновлён вариациями на тему «Хищник против Чужих». Движок использует отрисовку через SDL или OpenGL (на выбор), работает на 32-bit и 64-bit платформах. К игре прилагаются освобождённые ресурсы.
  • New RAW - интерпретатор для аркадной игры Another World.
  • Bermuda Syndrome - SDL-движок для аркадного приключения Bermuda Syndrome.
  • REminiscence - SDL-движок для аркадного приключения Flashback.
  • f2bgl - SDL/OpenGL-движок для трёхмерного приключения Fade To Black.
  • Igor - SDL-движок для испанского квеста Igor: Objetivo Uikokahonia.
  • Carlos - SDL-движок для платформера Carlos.
  • xBaK - движок для уникальной для своего времени ролевой игры Betrayal at Krondor. Относительно играбельно, но некоторых важных функций может не оказаться. Проект, к сожалению, заброшен. Форкайте, господа, пилите для ScummVM.
  • bstone - движок для стрелялки от первого лица Blake Stone: Planet Strike.
  • CatacombSDL - SDL2-движок для фентези-стрелялки Catacomb II.
  • NXEngine - SDL-движок для платформера Doukutsu Monogatari (также известного как Cave Story).
  • Commander Genius - движок для серии платформеров Commander Keen.
  • The Ur-Quan Masters + Ur-Quan Masters HD - движок для космического аркадного ролевого стратегического квеста Star Control II + текстуры в высоком разрешении.
  • OpenJK - движок для Jedi Knight II: Jedi Outcast и Jedi Knight III: Jedi Academy с минимальными измененями, максимально близкий к оригинальному.
  • JediOutcastLinux - ещё один движок для Jedi Knight II: Jedi Outcast.
  • JediAcademyLinux - ещё один движок для Jedi Knight III: Jedi Academy.
  • SDL Sopwith - SDL/GTK+ движок для классического аркадного авиасимулятора Sopwith.
  • Ultimate Stunts - OpenGL движок для классического гоночного симулятора Stunts.
  • Freeserf - SDL-движок для классического симулятора поселенцев The Settlers 1 «Serf City».
  • Return to the Roots - OpenGL-движок для для классического симулятора поселенцев The Settlers II Gold Edition.
  • OpenRaider - OpenGL-движок для серии приключенческих игр Tomb Raider (1-5). 5-я игра серии пока не полностью работоспособна.
  • OpenTomb - ещё один OpenGL-движок для серии приключенческих игр Tomb Raider (1-5).
  • Privateer - Gemini Gold - OpenGL-движок для Wing Commander, основан на кодовой базе Vega Strike.
  • ET: Legacy - модифицированный движок для многопользовательской игры Wolfenstein: Enemy Territory.
  • Zod Engine - движок для уникальной стратегии Z.

Статья на LOR Wiki.

 ,

toney
()

Tkinter + OpenGL киньте нормальным примером

Форум — Development

Приветсвую, киньте нормальным примером работы с OpenGL в Tkinter. Так, вот чтобы был нормальный фрейм, с скажем меню, туллбаром, виджетом OpenGL, статусбаром А то все примеры что находятся, какие-то обрубки-недописки, непонятные совсем :(

xterro
()

Задача на, видимо, комбинаторику, хотя не уверен

Форум — Talks

Придумал тут сам себе задачу, и теперь не могу заснуть.

Имеется множество элементов размера n. Из элементов можно составлять пары, при этом каждый элемент может участвовать в произвольном количестве пар.

Вопрос: какого минимальное количество пар, чтобы в произвольной выборке из m < n элементов нашлась хотя бы одна пара.

И обобщение задачи: заменяем пары на тройки, четверки, и тд: подмножества элементов размера k. n > m > k.

 

morse
()

Простой client/server в tcl (клиент) затыкается

Форум — Development

Клиент из баша (работает)

$ exec 3<>/dev/tcp/10.0.0.48/8888
$ cat <&3 &
[1] 7127
$
$ echo '=1+2+3$' >&3  --> запрос к серверу
$ =1+2+3 = 6          <-- ответ от сервера (вывел cat)
 

$ tclsh
% set chan [socket 10.0.0.48 8888]
sock21efb30
% puts $chan {=1+2+3$}
% flush $chan
% puts [gets $chan]
               Здесь висит gets ...

Не пойму в чем проблема?

Логи сервера одинаковые в обоих случаях: расчет сделан, ответ отослан.

sdio
()

Святые какашки, The Last Eichhof оказывается СПО!

Форум — Games

Случайно узнал, что Beer: The Last Eichhof оказывается ещё и свободная. Не сказать чтобы офигительная лицензия, да и писалось под проприетарастский борланд, но всё-равно приятно.

Goury
()

Build Your Own Lisp

Форум — Development

Learn C and build your own programming language in under 1000 lines of code!

Добрый автор поведает вам, как написать Lisp своей мечты на языке C.

 , ,

nerdogeek
()

Episode IV: When CCIEs get bored

Форум — Talks
traceroute -m 100 216.81.59.173

 

kernelpanic
()

Кому глаз вырвать, проходи по ссылке

Форум — Talks
abraziv_whiskey
()