
Обновление (2024-05-28): я только что объединил в крупном переписывании WhisperWriter! Мы мигрировали от использования tkinter на использование PyQt5 для пользовательского интерфейса, добавили новое окно «Настройки для конфигурации», новый режим непрерывной записи, поддержку локального API и многое другое! Пожалуйста, будьте терпеливы, так как я выпускаю любые ошибки, которые могли быть введены в процессе. Если вы столкнетесь с какими -либо проблемами, откройте новую проблему!
WhisperWriter-это небольшое приложение для речи в тексте, которое использует Whisper Model Openai для автоматических записей от микрофона пользователя в активное окно.
После начала сценарий работает в фоновом режиме и ожидает нажатого сочетания клавиатуры ( ctrl+shift+space по умолчанию). Когда ярлык нажимается, приложение начинает записывать с вашего микрофона. Есть четыре режима записи на выбор:
continuous (по умолчанию): запись остановится после достаточно долгой паузы в вашей речи. Приложение будет расшифровать текст, а затем начнет записывать снова. Чтобы прекратить слушать, нажмите сочетание клавиатуры снова.voice_activity_detection : запись остановится после достаточно долгой паузы в вашей речи. Запись не начнется до тех пор, пока сочетание клавиатуры не будет нажат снова.press_to_toggle остановится, когда нажат сочетание клавиатуры. Запись не начнется до тех пор, пока сочетание клавиатуры не будет нажат снова.hold_to_record будет продолжаться до тех пор, пока не будет выпущен сочетание клавиатуры. Запись не начнется до тех пор, пока сочетание клавиатуры не будет удержана снова. Вы можете изменить сочетание клавиатуры ( activation_key ) и режим записи в параметрах конфигурации. Во время записи и транскрибирования отображается небольшое окно состояния, которое показывает текущую стадию процесса (но это можно отключить). После завершения транскрипции транскрибированный текст будет автоматически записан в активное окно.
Транскрипция может быть выполнена локально через пакет Python с быстрее Python или через запрос на API Openai. По умолчанию приложение будет использовать локальную модель, но вы можете изменить ее в параметрах конфигурации. Если вы решите использовать API, вам нужно будет либо предоставить свой ключ OpenAI API, либо изменить конечную точку базового URL.
Забавный факт: почти весь первоначальный выпуск проекта был спроектирован с парой с CATGPT-4 и GitHub Copilot с использованием кода VS. Практически каждая строка, в том числе большая часть этой Readme, была написана ИИ. После того, как первоначальный прототип был закончен, WhisperWriter использовался, чтобы написать много подсказок!
Прежде чем вы сможете запустить это приложение, вам нужно будет установлено следующее программное обеспечение:
3.11 : https://www.python.org/downloads/ Если вы хотите работать faster-whisper на графическом процессоре, вам также нужно установить следующие библиотеки NVIDIA:
Ниже было взято непосредственно из faster-whisper :
Примечание. Последние версии ctranslate2 поддерживают только CUDA 12. Для CUDA 11 текущий обходной путь понижается до версии ctranslate2 3.24.0 (это можно сделать с помощью pip install --force-reinsall ctranslate2==3.24.0 ).
Есть несколько способов установить библиотеки NVIDIA, упомянутые выше. Рекомендуемый способ описан в официальной документации NVIDIA, но мы также предлагаем другие методы установки ниже.
Библиотеки (Cublas, Cudnn) установлены в этих официальных изображениях Nvidia cuda Docker: nvidia/cuda:12.0.0-runtime-ubuntu20.04 или nvidia/cuda:12.0.0-runtime-ubuntu22.04 .
pip (только Linux) На Linux эти библиотеки могут быть установлены с помощью pip . Обратите внимание, что LD_LIBRARY_PATH должен быть установлен перед запуском Python.
pip install nvidia-cublas-cu12 nvidia-cudnn-cu12
export LD_LIBRARY_PATH= ` python3 -c ' import os; import nvidia.cublas.lib; import nvidia.cudnn.lib; print(os.path.dirname(nvidia.cublas.lib.__file__) + ":" + os.path.dirname(nvidia.cudnn.lib.__file__)) ' ` ПРИМЕЧАНИЕ . Версия 9+ nvidia-cudnn-cu12 , по-видимому, вызывает проблемы, связанные с его зависимостью от CUDNN 9 (быстрее-то, что в настоящее время не поддерживает CUDNN 9). Убедитесь, что ваша версия пакета Python предназначена для Cudnn 8.
Whisper-Standalone-Win Purfview предоставляет необходимые библиотеки Nvidia для Windows & Linux в одном архиве. Распал архив и поместите библиотеки в каталог, включенный в PATH .
Чтобы настроить и запустить проект, выполните следующие действия:
git clone https://github.com/savbell/whisper-writer
cd whisper-writer
python -m venv venv
# For Linux and macOS:
source venv/bin/activate
# For Windows:
venvScriptsactivate
pip install -r requirements.txt
python run.py
При первом запуске должно появиться окно настроек. После настройки и сохранения откроется другое окно. Нажмите «Пуск», чтобы активировать слушатель клавиатуры. Нажмите клавишу активации ( ctrl+shift+space по умолчанию), чтобы начать запись и транскрибировать в активное окно.
WhisperWriter использует файл конфигурации для настройки своего поведения. Чтобы настроить конфигурацию, откройте окно «Настройки»:

use_api : переключить, чтобы выбрать, использовать ли API OpenAI или локальную модель шепота для транскрипции. (По умолчанию: false )
common : варианты, общие как для API, так и для локальных моделей.
language : языковой код для транскрипции в формате ISO-639-1. (По умолчанию: null )temperature : контролирует случайность выходного сигнала транскрипции. Более низкие значения делают выходные данные более сфокусированными и детерминированными. (По умолчанию: 0.0 )initial_prompt : строка, используемая в качестве первоначальной подсказки для условия транскрипции. Более подробная информация: Руководство по подсказке OpenAI. (По умолчанию: null ) api : параметры конфигурации для API OpenAI. Смотрите документацию API OpenAI для получения дополнительной информации.
model : модель для использования для транскрипции. В настоящее время доступен только whisper-1 . (По умолчанию: whisper-1 )base_url : базовый URL для API. Можно изменить, чтобы использовать локальную конечную точку API, такую как Localai. (По умолчанию: https://api.openai.com/v1 )api_key : ваш ключ API для API OpenAI. Требуется для нелокального использования API. (По умолчанию: null ) local : параметры конфигурации для локальной модели шепота.
model : модель для использования для транскрипции. Большие модели обеспечивают лучшую точность, но медленнее. См. Доступные модели и языки. (По умолчанию: base )device : устройство для запуска локальной модели шепота. Используйте cuda для графических процессоров NVIDIA, cpu для обработки только для ЦП, или auto чтобы позволить системе автоматически выбирать лучшее доступное устройство. (По умолчанию: auto )compute_type : The Compute Type для использования для локальной модели Whisper. Более подробную информацию о квантовании здесь. (По умолчанию: default )condition_on_previous_text : установите на true для использования ранее транскрибированного текста в качестве подсказки для следующего запроса транскрипции. (По умолчанию: true )vad_filter : Установите в true для использования фильтра обнаружения голосовой активности (VAD) для удаления тишины из записи. (По умолчанию: false )model_path : путь к местной модели шепота. Если не указано, модель по умолчанию будет загружена. (По умолчанию: null ) activation_key : сочетание клавиатуры для активации процесса записи и транскрибирования. Отдельные ключи с + . (По умолчанию: ctrl+shift+space )input_backend : бэкэнд ввода для обнаружения нажатий клавиш. auto постарается использовать лучший доступный бэкэнд. (По умолчанию: auto )recording_mode : режим записи для использования. Параметры включают continuous (автоматическую записи после паузы в речи, пока клавиша активации не будет нажата снова), voice_activity_detection (перестать записывать после паузы в речи), press_to_toggle (прекратить запись, когда клавиша активации снова нажимается), hold_to_record (остановить запись, когда клавиша активации выпускается). (По умолчанию: continuous )sound_device : числовой индекс звукового устройства для использования для записи. Чтобы найти номера устройств, запустите python -m sounddevice . (По умолчанию: null )sample_rate : скорость дискретизации в Гц для использования для записи. (По умолчанию: 16000 )silence_duration : продолжительность в миллисекундах, чтобы дождаться молчания, прежде чем остановить запись. (По умолчанию: 900 )min_duration : минимальная продолжительность в миллисекундах для обработки записи. Записи короче, чем это будут отброшены. (По умолчанию: 100 ) writing_key_press_delay : задержка в секундах между каждой клавиш нажмите при написании транскрибированного текста. (По умолчанию: 0.005 )remove_trailing_period : установите в true для удаления периода следа из транскрибированного текста. (По умолчанию: false )add_trailing_space : установите в true , чтобы добавить пространство к концу транскрибированного текста. (По умолчанию: true )remove_capitalization : установите в true , чтобы преобразовать транскрибированный текст в нижний регистр. (По умолчанию: false )input_method : метод для моделирования ввода клавиатуры. (По умолчанию: pynput ) print_to_terminal : установите на true для печати статуса скрипта и транскрибированного текста на терминал. (По умолчанию: true )hide_status_window : установите на true , чтобы скрыть окно состояния во время работы. (По умолчанию: false )noise_on_completion : установить в true для воспроизведения шума после печати транскрипции. (По умолчанию: false )Если какой -либо из параметров конфигурации недействителен или не предоставлена, программа будет использовать значения по умолчанию.
Вы можете увидеть все зарегистрированные проблемы и их текущий статус в нашем трекере. Если вы столкнетесь с проблемой, пожалуйста, откройте новую проблему с подробным описанием и этапами воспроизведения, если это возможно.
Ниже приведены функции, которые я планирую добавить в ближайшее время:
Ниже приведены функции, которые в настоящее время не запланированы:
Реализованные функции можно найти в измене.
Взносы приветствуются! Я создал этот проект для своего личного использования и не ожидал, что он получит много внимания, поэтому я не приложил особого усилия для тестирования или облегчения внесения вклад другим. Если у вас есть идеи или предложения, не стесняйтесь открыть запрос на тягу или создать новую проблему. Я сделаю все возможное, чтобы просмотреть и ответить, как позволяет время.
Этот проект лицензирован по общедоступной лицензии GNU. Смотрите файл лицензии для получения подробной информации.