Blah S Peech- t Ext позволяет вам ввести текст BLA (h) ST из речи на Linux, с сочетаниями клавиш и Whisper.cpp. Запустите свой микрофон и выполните высокоязычное многоязычное распознавание речи в автономном режиме. Расширенные локальными LLMS, он становится мощным инструментом для общения с вашим компьютером Linux.
Blahst, вероятно, самый худой инструмент для ввода речи в тексте на основе Whisper для Linux, сидя на вершине Whisper.cpp.
wsimlИспользуя низкие ресурсы, оптимизированные инструменты командной строки, ввод разговорного текста происходит очень быстро. Вот демонстрационное видео (пожалуйста, включите звук) с некоторыми локальными функциями LLM (AI Assistant, Translator, Praduller, Guide CLI на этапе тестирования):
В приведенном выше видео звук начинается с того, что система, разжигающая экраны (мой расширение Gnome "Voluble" говорит Outloud на все уведомления на рабочем столе GNOME), за которыми следуют множество видов ввода/распознавания речи. В конце продемонстрировано одна из «функций ИИ», в котором используется текст, транскрибированный блахст (Whisper.cpp), форматирует его в подсказку LLM и отправляет его местному многоязычному LLM (llama.cpp или Llamafile), который возвращает китайский перевод в качестве текста, а также говорит о нем, используя Нейрарный ТТ. Орчестнируя это из командной строки с Lean Executables, оставляет систему на удивление резким (из видео вы можете видеть, что ПК едва ломает любое пот - температуры остаются низкими.)
Вышеупомянутое видео (нерешительно, пожалуйста) демонстрирует использование Blooper, измененного от WSI для транскрибирования в цикле, пока пользователь не завершит ввод речи с более длинной паузой (~ 3SEC как предусмотренная). С использованием Xdotool (или Ydotool для пользователей Wayland) текст автоматически встает на любую паузу (или на перерыве с горячими классами). Для видео выше речь генерируется синтетическим голосом и собирается микрофоном. Это позволяет мне редактировать текст одновременно (многозадачные, не пробуйте его дома :). В конце концов, значок микрофона верхнего сэмпта должен исчезнуть, указывая на выход программы. Этого не происходит в видео, потому что утилита Screencast также имеет претензию на значок.
Идея с Blahst состоит в том, чтобы стать программным обеспечением без UI, эквивалентным монгольскому рейду; Короткий и мощный всплеск действия процессора/графического процессора, а затем он полностью исчез, с только текстовыми следами в буфер обмена и относительным миром рабочего стола. Просто используйте пару горячих клавиш, чтобы запустить и прекратить запись из микрофона и отправьте записанную речь в Whisper.cpp [Server], который выпускает транскрибированный текст в буфер обмена (если вы не передаете его локальным LLM до этого). Универсальный подход, который должен работать в большинстве рабочих средств и распределений Linux.
Работа выполняется одним из сценариев:
Распознавание речи выполняется Whisper.cpp, которая должна быть предварительно сработана по вашей системе Linux или доступна в качестве экземпляра сервера в вашей локальной сети или Localhost. Alternativelly, вы можете просто загрузить и использовать фактически портативный исполняемый файл (со встроенной моделью шепота) Whisperfile, теперь является частью репозитория ламафиль.
Когда ввод речи инициируется горячей клавишами, в верхней панели появляется индикатор микрофона (по крайней мере, в GNOME) и показан на протяжении всей записи (можно перекрыть с другой горячей клавиш). Исчезновение значка микрофона из верхней панели указывает на завершение, а транскрибированный текст может быть вставлен из буфера обмена. В более медленных системах может быть небольшая задержка после того, как значок микрофона исчезнет, и до того, как текст достигнет буфера обмена из -за более длительного времени транскрипции. На моем компьютере, через API Shepper.cpp Server, он составляет менее 150 мс (300 мс с локальной Wepper.cpp) для среднего абзаца разговорного текста.
Для работы только для клавиатуры, например, со стандартным CTRL+V , стандартный буфер обмена будет использоваться под x11 и Wayland ( wsi или wsiml ), в то время как wsi -p (или wsiml -p ) использует первичную продажу, а текст вставлена кнопкой средней мыши). Для левой пасты можно отдать запись речи до горячих клавиш, запускаемых правой рукой. ** Например, я настраиваю неиспользованные клавиши «+» («Запуск записи») и «Вставить» (Stop) на цифровой клавиатуре.


install-wsi обрабатывает большинство из них).Отказ от ответственности: автор не берет на себя ответственность и не несет никакой ответственности за какой -либо результат, который может или не может возникнуть в результате взаимодействия с содержанием этого документа. Предлагаемые действия и автоматизации (например, местоположения установки и т. Д.) являются просто предложениями и основаны на выборе и мнении автора. Поскольку они могут не соответствовать вкусу или конкретной ситуации всех, пожалуйста, приспособьте по мере необходимости.
В папке по вашему выбору клонируйте репозиторий Blahst, а затем выберите метод установки снизу:
git clone https://github.com/QuantiusBenignus/BlahST.git
cd ./BlahST
(Предполагается, что Whisper.cpp установлен и «основной» исполняемый файл, составленный с «Make» в клонированном Whisper.cpp Repo. См. Раздел условий)
cd $HOME/.local/bin; chmod +x wsi wsiAI wsiml
$HOME/.local/bin/ (часть вашего пути $) с ln -s /full/path/to/whisper.cpp/main $HOME/.local/bin/transcribe
Если транскрибера не находится в вашем пути, либо отредактируйте призыв к нему в WSI , чтобы включить абсолютный путь, либо добавить его местоположение к переменной пути $. В противном случае сценарий потерпит неудачу. Если вы предпочитаете не собирать Whisper.cpp или в дополнение к этому, загрузите и установите исполняемый флаг подходящего Whisperfile, например:
cd $HOME/.local/bin
wget https://huggingface.co/Mozilla/whisperfile/resolve/main/whisper-tiny.en.llamafile
chmod +x whisper-tiny.en.llamafile
Внутри сценария wsi , wsiAI , wsiml или blooper , почти начало, существует четко обозначенный раздел с именем «Block пользовательского конфигурации» , где были собраны все склонные к пользователю переменные. Большинство из них можно оставить, как есть, но важными являются местоположение файлов модели (Whisper, LLM, TTS), которые вы хотели бы использовать во время транскрипции (или IP и номера порта для сервера Whisper.cpp). При использовании Whisperfile, пожалуйста, установите переменную Whisperfile на имя файла ранее загруженного исполняемого Whisperfile, то есть WHISPERFILE=whisper-tiny.en.llamafile (должен быть в пути $).
Чтобы начать и остановить ввод речи, как для ручной, так и для автоматической установки
/home/yourusername/.local/bin/wsi -p для использования кнопки средней мыши или изменить ее на .../wsi для использования буфера обмена.wsi выше wsiml и при использовании WhisperFile, добавьте флаг -w , то есть /home/yourusername/.local/bin/wsi -w ). Наконец, чтобы попробовать функции LLM, замените wsi wsiAI .Сценарий оркестратора имеет фильтр обнаружения молчания в вызове Sox (rec) и прекратит запись (в лучшем случае) на 2 секунд молчания. Кроме того, если кто -то не хочет ждать или имеет проблемы с порогом обнаружения молчания:
Для тех, кто хочет иметь возможность мешать записи вручную с комбинацией ключей, в духе великих хаков мы собираемся использовать встроенные функции системы:
pkill --signal 2 recЭто просто. Просто убедитесь, что новая привязка ключей еще не настроена на что-то другое. Теперь, когда сценарий записывает речь, его можно остановить с новой комбинацией ключей, и транскрипция начнет немедленную.
/home/yourusername/.local/bin/wsi -p или .../wsi для использования буфера обмена.wsi выше wsiml и при использовании WhisperFile, добавьте флаг -w , то есть /home/yourusername/.local/bin/wsi -w ). Наконец, чтобы попробовать функции LLM, замените wsi wsiAI .pkill --signal 2 rec ./home/yourusername/.local/bin/wsi /.local/bin/wsi или .../wsi -pwsi выше wsiml и при использовании WhisperFile, добавьте флаг -w , то есть /home/yourusername/.local/bin/wsi -w ). Наконец, чтобы попробовать функции LLM, замените wsi wsiAI .pkill --signal 2 rec .Пожалуйста, обратите внимание, что в вышеуказанных шагах могут быть небольшие изменения в зависимости от версии, установленной в вашей системе. Для многих других сред, таких как Mate, Cinnamon, LXQT, Deepin и т. Д., Шаги должны быть несколько похожи на примеры выше. Пожалуйста, проконсультируйтесь с документацией для вашей системы настольных компьютеров.
В прессе комбо Hotkey сценарий wsi -p будет записывать речь (остановленную с помощью горячей клавиши или обнаружения молчания), используйте локальную копию Whisper.cpp и отправьте транскрибированный текст в основной выбор под X11 или Wayland. Тогда все, что нужно сделать, это вставить его с кнопкой средней мыши везде, где они хотят. (Для людей, держащих мышь правой рукой, речевая запись горячих клавиш для левой руки имела бы смысл.)
При использовании wsi без флагов (подходы могут сосуществовать, просто настройте различный набор горячих клавиш), транскрибированный текст отправляется в буфер обмена (не основной выбор) под, либо X11, либо Wayland. Затем вставка происходит с CTRL+V ( CTRL+SHIFT+V для клеммы GNOME) или клавишами SHIFT+INSert как обычно. (Для большинства людей правые горячие клавиши будут работать хорошо.)
Если транскрибирование по сети с помощью wsi -n (выбран с собственной горячей клавишами), сценарий попытается отправить записанный звук на работающий, правильно установленный сервер Whisper.cpp (в локальной сети или localhost ). Затем он собирает текстовый ответ и отформатирует его для вставки с помощью клавиш CTRL+V ( CTRL+SHIFT+V для терминала GNOME) или клавиш SHIFT+INSert (для вставки с помощью кнопки средней мыши используйте wsi -n -p вместо этого).
При использовании Whisperfile вместо или в дополнение к скомпилированной Whisper.cpp, вызовите с wsi -w ... и скрипт будет использовать предустановку, фактически переносимый исполняемый файл со встроенной моделью выбора встроенной шепота.
Для многоязычных пользователей, в дополнение к функциям WSI, wsiml предоставляет возможность указать язык, например -l fr и возможность переводить на английский язык с -t . Пользователь может в принципе назначить несколько горячих классов на различные языки, которые они транскрибируют или переводят. Например, могут быть установлены два дополнительных горячих класса: один для транскрибирования, а другой для перевода с французского путем назначения команд wsiml -l fr и wsiml -l fr -t соответственно.
Экспериментальный: пользователи могут использовать поставленный сценарий Blooper для непрерывного автоматического ввода речи в тексте (не нужно нажимать CTRL+V или нажимать кнопку Middle Mouse.) Это продемонстрировано во втором видео выше. Пожалуйста, обратите внимание, что буфер обмена используется по умолчанию, текст будет автоматически подготовлен под клавиатурой, но в принципе можно настроить первичный выбор, нажимает кнопку средней мыши, и текст вставлен в текущую позицию указателя мыши в (несколько арбитрарный) время, когда текст доступен. Пожалуйста, обратите внимание, что это опирается на обнаружение молчания, которое зависит от вашей физической среды. В шумных средах используйте горячий ключ, чтобы остановить запись.
Мы не можем произвольно поднять порог, потому что, если кто -то последовательно снижает свой голос (исчезающий) в конце речи, он может быть отрезан, если порог высокий. Понизите его в этом случае до нескольких %.
Лучше всего попытаться сделать речь отличным от шума путем амплитуды (говорите четко, близко к микрофону), при этом минимизируя внешний шум (укрытое местоположение микрофона, оборудование для шумоподобного отмены и т. Д.) При хорошем уровне речевого сигнала, порог может быть более эффективным, поскольку SNR (отношение речи к нузом :-) эффективно увеличивается.
После того, как речь будет проиграна, она будет передана transcribe (Whisper.cpp) для распознавания речи. Это произойдет быстрее, чем в реальном времени (особенно с быстрым процессором или, если ваша установка Whisper.cpp использует CUDA). Можно отрегулировать количество потоков обработки, используемых путем добавления -tn в параметры командной строки транскрибиальной (пожалуйста, см. Документацию Whisper.cpp). Затем сценарий проанализирует текст для удаления артефактов, не являющихся речь, отформатируйте его и отправит его на основной выбор (буфер обмена), используя инструменты X11 или Wayland.
В принципе, Whisper (Whisper.cpp) является многоязычным , и с правильным файлом модели это приложение выведет текст UTF-8, транскрибированную на правильном языке. Сценарий wsiml посвящен многоязычному использованию, и с ним пользователь может выбрать язык для речевого ввода (используя флаг -l LC , где LC -это языковой код), а также может перевести речь на выбранном языке ввода на английский язык с флагом -t . Пользователь может назначить несколько горячих классов на различные языки, которые они хотят транскрибировать или перевести. Например, могут быть установлены два дополнительных горячих класса: один для транскрибирования, а другой для перевода с французского путем назначения команд wsiml -l fr и wsiml -l fr -t соответственно.
Пожалуйста, обратите внимание, что при использовании режима сервера у вас есть 2 варианта. Вы можете иметь либо предварительный сервер Whisper.cpp, либо загруженный Whisperfile (в режиме сервера) прослушивать на предварительно сконфигурированном хосте и номере порта. Сценарий оркестратора приближается к ним так же.
Транскрипция речи к тексту-это задача с интенсивностью памяти и процессора, а быстрое хранение для доступа к чтению и записи может только помочь. Вот почему WSI хранит временные и ресурсные файлы в памяти, для скорости и для уменьшения SSD/HDD «шлифование»: TEMPD='/dev/shm' . Эта точка монтирования типа «TMPFS» создается в ОЗУ (давайте предположим, что у вас достаточно, скажем, не менее 8 ГБ) и доступна ядра для приложений для пространства пользователя. Когда компьютер выключен, он автоматически уничтожен, что хорошо, поскольку нам не нужны промежуточные файлы. Фактически, для некоторых типов применений (глядя на вас электрон) было бы полезно (IMHO), чтобы в оперативной памяти также была сохранена точка монтажа по всей системе /TMP. Перемещение /TMP в ОЗУ может немного ускорить запуск приложения. Приятное ускорение для любого электронного приложения. В самой простой форме этот переход прост, просто запустите:
echo "tmpfs /tmp tmpfs rw,nosuid,nodev" | sudo tee -a /etc/fstab , а затем перезапустите свой компьютер Linux. По вышеупомянутым причинам, особенно если HDD является основной носителем хранения, можно также переместить файлы модели ASR, необходимые Whisper.cpp в том же месте (/dev/shm). Это большие файлы, которые могут быть переданы в это место в начале сеанса терминала (или при запуске системы). Это можно сделать с помощью вашего файла .profile , поместив в него что -то подобное:
([ -f /dev/shm/ggml-base.en.bin ] || cp /path/to/your/local/whisper.cpp/models/ggml* /dev/shm/)