- Загрузчики
- FabricNeoForgeForgeQuilt
- Скачиваний на Modrinth
- 29,6 тыс.
- Подписчиков на Modrinth
- 70
- версий
- 88
- Обновлён
- 14 мая 202614 мая
- Опубликован
- в 2023
Коротко о моде
Ставится только в игру; на сервер ставить не нужно
Документация пользователя мода Microphone Text Input
Architectury 2.x

Введение
Microphone Text Input Mod — это мод для Fabric, предназначенный для клиента Minecraft. Он предоставляет функцию ввода с помощью распознавания речи и автоматически преобразует произнесённые слова в текстовые сообщения чата, улучшая внутриигровое общение.
Возможности
- Несколько режимов: Поддерживает различные режимы работы, включая
AUTO_SEND,RELEASE_KEY_TO_SENDиRELEASE_KEY_TO_INPUT. - Расширенная настройка: Позволяет пользователям настраивать дополнительные параметры, связанные с библиотекой Whisper, такие как количество потоков, размер аудиоконтекста и стратегия сэмплирования.
Зависимости
| Название зависимости | Fabric | NeoForge |
|---|---|---|
| Java | 21 | 21 |
| Fabric API | см. fabric.mod.json | ❌ |
| Architectury API | ❌ | см. neoforge.mods.toml |
| MidnightLib | см. fabric.mod.json | см. neoforge.mods.toml |
Настройка
Привязка клавиш
| Название привязки | Распознавание |
|---|---|
| Категория | key.category.minecraft.mcmti |
| Ключ перевода | key.mcmti.recognize |
| Клавиша по умолчанию | V |
Общие настройки
| Настройка | Ключ перевода | Поле | Тип | Значение по умолчанию | Описание |
|---|---|---|---|---|---|
| GGML Whisper Model | mcmti.midnightconfig.model | me.jaffe2718.mcmti.config.McmtiConfig.model | String | "" | Путь к модели GGML Whisper. |
| Язык | mcmti.midnightconfig.language | me.jaffe2718.mcmti.config.McmtiConfig.language | String | "en" | Язык для распознавания речи. |
| Режим | mcmti.midnightconfig.mode | me.jaffe2718.mcmti.config.McmtiConfig.mode | me.jaffe2718.mcmti.config.McmtiConfig.Mode | "RELEASE_KEY_TO_SEND" | Режим работы мода. |
| Цикл записи (мс) | mcmti.midnightconfig.recordCycleMs | me.jaffe2718.mcmti.config.McmtiConfig.recordCycleMs | int | 5000 | Цикл записи в миллисекундах. |
| Размер буфера записи (байт) | mcmti.midnightconfig.recordBufferSize | me.jaffe2718.mcmti.config.McmtiConfig.recordBufferSize | int | 1024 | Размер буфера записи в байтах. |
| Префикс | mcmti.midnightconfig.prefix | me.jaffe2718.mcmti.config.McmtiConfig.prefix | String | "⌈Speech Input⌋" | Префикс, добавляемый к распознанному тексту. |
| Черновой ввод | mcmti.midnightconfig.draftInput | me.jaffe2718.mcmti.config.McmtiConfig.draftInput | boolean | false | Включить черновой ввод. Если включено, распознанный текст будет отображаться в строке ввода как черновик. |
| Исправление кодировки | mcmti.midnightconfig.encodingRepair | me.jaffe2718.mcmti.config.McmtiConfig.encodingRepair | boolean | false | Включить исправление кодировки. |
| Исходная кодировка | mcmti.midnightconfig.srcEncoding | me.jaffe2718.mcmti.config.McmtiConfig.srcEncoding | String | Charset.defaultCharset().displayName() | Исходная кодировка текста. Применяется только если включено исправление кодировки. |
| Целевая кодировка | mcmti.midnightconfig.dstEncoding | me.jaffe2718.mcmti.config.McmtiConfig.dstEncoding | String | Charset.defaultCharset().displayName() | Целевая кодировка текста. Применяется только если включено исправление кодировки. |
Расширенные настройки
| Настройка | Ключ перевода | Поле | Тип | Значение по умолчанию | Описание |
|---|---|---|---|---|---|
| Включить расширенную конфигурацию | mcmti.midnightconfig.advancedConfig | me.jaffe2718.mcmti.config.McmtiConfig.advancedConfig | boolean | false | Включить расширенную конфигурацию. |
| nThreads | mcmti.midnightconfig.nThreads | me.jaffe2718.mcmti.config.McmtiConfig.nThreads | int | 0 | Количество потоков, используемых для работы модели Whisper. 0 — максимальное число ядер. |
| audioCtx | mcmti.midnightconfig.audioCtx | me.jaffe2718.mcmti.config.McmtiConfig.audioCtx | int | 0 | Размер аудиоконтекста для модели Whisper. 0 — использовать значение по умолчанию. |
| nMaxTextCtx | mcmti.midnightconfig.nMaxTextCtx | me.jaffe2718.mcmti.config.McmtiConfig.nMaxTextCtx | int | 16384 | Максимальное количество токенов из прошлого текста, используемых как подсказка для декодера. |
| offsetMs | mcmti.midnightconfig.offsetMs | me.jaffe2718.mcmti.config.McmtiConfig.offsetMs | int | 0 | Смещение в мс, с которого начинать запись. |
| durationMs | mcmti.midnightconfig.durationMs | me.jaffe2718.mcmti.config.McmtiConfig.durationMs | int | 0 | Длительность обрабатываемого аудио в мс. 0 — использовать значение по умолчанию. |
| translate | mcmti.midnightconfig.translate | me.jaffe2718.mcmti.config.McmtiConfig.translate | boolean | false | Переводить текст на язык по умолчанию. |
| noTimestamps | mcmti.midnightconfig.noTimestamps | me.jaffe2718.mcmti.config.McmtiConfig.noTimestamps | boolean | false | Не создавать временные метки. |
| initialPrompt | mcmti.midnightconfig.initialPrompt | me.jaffe2718.mcmti.config.McmtiConfig.initialPrompt | String | "" | Изначальный текст, используемый как подсказка для whisper. |
| noContext | mcmti.midnightconfig.noContext | me.jaffe2718.mcmti.config.McmtiConfig.noContext | boolean | true | Не использовать прошлую транскрипцию (если есть) как изначальную подсказку для декодера. |
| singleSegment | mcmti.midnightconfig.singleSegment | me.jaffe2718.mcmti.config.McmtiConfig.singleSegment | boolean | false | Принудительно выводить один сегмент (полезно для стриминга). |
| printSpecial | mcmti.midnightconfig.printSpecial | me.jaffe2718.mcmti.config.McmtiConfig.printSpecial | boolean | false | Выводить специальные токены. |
| printProgress | mcmti.midnightconfig.printProgress | me.jaffe2718.mcmti.config.McmtiConfig.printProgress | boolean | true | Выводить информацию о прогрессе. |
| printRealtime | mcmti.midnightconfig.printRealtime | me.jaffe2718.mcmti.config.McmtiConfig.printRealtime | boolean | false | Выводить результаты из whisper.cpp (избегайте этого, используйте callback). |
| printTimestamps | mcmti.midnightconfig.printTimestamps | me.jaffe2718.mcmti.config.McmtiConfig.printTimestamps | boolean | true | Выводить временные метки для каждого текстового сегмента при выводе в реальном времени. |
| suppressBlank | mcmti.midnightconfig.suppressBlank | me.jaffe2718.mcmti.config.McmtiConfig.suppressBlank | boolean | true | Опция декодера. |
| suppressNonSpeechTokens | mcmti.midnightconfig.suppressNonSpeechTokens | me.jaffe2718.mcmti.config.McmtiConfig.suppressNonSpeechTokens | boolean | true | Опция токенизатора. | | temperature | mcmti.midnightconfig.temperature | me.jaffe2718.mcmti.config.McmtiConfig.temperature | float | 0.0f | Начальная температура декодирования. | | maxInitialTs | mcmti.midnightconfig.maxInitialTs | me.jaffe2718.mcmti.config.McmtiConfig.maxInitialTs | float | 1.0f | Максимальная начальная временная метка. | | lengthPenalty | mcmti.midnightconfig.lengthPenalty | me.jaffe2718.mcmti.config.McmtiConfig.lengthPenalty | float | -1.0f | Штраф за длину. | | temperatureInc | mcmti.midnightconfig.temperatureInc | me.jaffe2718.mcmti.config.McmtiConfig.temperatureInc | float | 0.4f | Приращение температуры. | | entropyThold | mcmti.midnightconfig.entropyThold | me.jaffe2718.mcmti.config.McmtiConfig.entropyThold | float | 2.4f | Порог энтропии (аналогично "compression_ratio_threshold" у OpenAI). | | logprobThold | mcmti.midnightconfig.logprobThold | me.jaffe2718.mcmti.config.McmtiConfig.logprobThold | float | -1.0f | Порог логарифмической вероятности. | | noSpeechThold | mcmti.midnightconfig.noSpeechThold | me.jaffe2718.mcmti.config.McmtiConfig.noSpeechThold | float | 0.6f | Порог отсутствия речи. | | greedyBestOf | mcmti.midnightconfig.greedyBestOf | me.jaffe2718.mcmti.config.McmtiConfig.greedyBestOf | int | -1 | Специфично для стратегии жадной выборки. | | beamSearchBeamSize | mcmti.midnightconfig.beamSearchBeamSize | me.jaffe2718.mcmti.config.McmtiConfig.beamSearchBeamSize | int | 2 | Специфично для стратегии лучевого поиска. | | beamSearchPatience | mcmti.midnightconfig.beamSearchPatience | me.jaffe2718.mcmti.config.McmtiConfig.beamSearchPatience | float | -1.0f | Специфично для стратегии лучевого поиска. | | grammar | mcmti.midnightconfig.grammar | me.jaffe2718.mcmti.config.McmtiConfig.grammar | String | "" | Путь к файлу грамматики. Пусто — грамматика не используется. | | grammarPenalty | mcmti.midnightconfig.grammarPenalty | me.jaffe2718.mcmti.config.McmtiConfig.grammarPenalty | float | 100.0f | Штраф за токены, не соответствующие грамматике. | | whisperSamplingStrategy | mcmti.midnightconfig.whisperSamplingStrategy | me.jaffe2718.mcmti.config.McmtiConfig.whisperSamplingStrategy | io.github.freshsupasulley.whisperjni.WhisperSamplingStrategy | BEAM_SEARCH | Перечисление WhisperContext для настройки стратегии сэмплирования whisper. | | vad | mcmti.midnightconfig.vad | me.jaffe2718.mcmti.config.McmtiConfig.vad | boolean | false | Включить VAD (обнаружение голосовой активности). | | vadmax_speech_duration_s | `mcmti.midnightconfig.vadmax_speech_duration_s |me.jaffe2718.mcmti.config.McmtiConfig.vadmax_speech_duration_s |float |0f` | Максимальная длительность речевого сегмента до принудительного начала нового. | | vadmin_silence_duration_ms | mcmti.midnightconfig.vad__min_silence_duration_ms | me.jaffe2718.mcmti.config.McmtiConfig.vad__min_silence_duration_ms | int | 0 | Минимальная длительность тишины для завершения речи. | | vadmin_speech_duration_ms | `mcmti.midnightconfig.vadmin_speech_duration_ms |me.jaffe2718.mcmti.config.McmtiConfig.vad__min_speech_duration_ms |int |0` | Минимальная длительность допустимого речевого сегмента. |
| vadsamples_overlap | `mcmti.midnightconfig.vadsamples_overlap |me.jaffe2718.mcmti.config.McmtiConfig.vadsamples_overlap |float |0f` | Перекрытие в секундах при копировании аудиосэмплов из речевого сегмента. | | vadspeech_pad_ms | mcmti.midnightconfig.vad__speech_pad_ms | me.jaffe2718.mcmti.config.McmtiConfig.vad__speech_pad_ms | int | 0 | Отступ, добавляемый до и после речевых сегментов. | | vadthreshold | `mcmti.midnightconfig.vadthreshold |me.jaffe2718.mcmti.config.McmtiConfig.vad__threshold |float |0f | Порог вероятности для распознавания речи. |
| vad_model_path |mcmti.midnightconfig.vad_model_path |me.jaffe2718.mcmti.config.McmtiConfig.vad_model_path |String |"" | Путь к модели VAD. Пустая строка означает использование модели по умолчанию. |
| useCustomDynamicLib |mcmti.midnightconfig.useCustomDynamicLib |me.jaffe2718.mcmti.config.McmtiConfig.useCustomDynamicLib |boolean |false | Включить использование пользовательской динамической библиотеки для Whisper. |
| customDynamicLibDir |mcmti.midnightconfig.customDynamicLibDir |me.jaffe2718.mcmti.config.McmtiConfig.customDynamicLibDir |String |""` | Каталог пользовательской динамической библиотеки для Whisper. |
- Подробнее см. WhisperFullParams.java
ВНИМАНИЕ: Включение расширенной конфигурации изменит параметры конфигурации модели Whisper по умолчанию, что критически повлияет на результаты распознавания речи. Неправильная настройка расширенных параметров может привести к таким проблемам, как сбой распознавания речи, высокая нагрузка на ресурсы компьютера и падение программы. Пожалуйста, используйте с осторожностью.
Использование
- Установите мод и скачайте модель GGML Whisper.
- Настройте мод под свои нужды в меню конфигурации.
- Используйте назначенную клавишу (по умолчанию
V), чтобы начать запись и распознавание речи. - Если режим установлен на
AUTO_SEND, распознанный текст будет автоматически отправлен как сообщение в чат. Если установленRELEASE_KEY_TO_SENDилиRELEASE_KEY_TO_INPUT, следуйте соответствующему действию — отпустите клавишу.
Использование VAD
Если вы хотите использовать VAD (Voice Activity Detection), вам нужно скачать модель VAD, включить расширенную конфигурацию и указать vad_model_path в меню конфигурации как путь к модели VAD.
Пользовательская динамическая библиотека
- Скачайте пользовательскую динамическую библиотеку с Jaffe2718/whisper-jni и распакуйте файлы.
- Включите расширенную конфигурацию и установите
useCustomDynamicLibвtrueв меню конфигурации. - Укажите
customDynamicLibDirв меню конфигурации как каталог, где находится пользовательская динамическая библиотека. Если вы хотите использовать динамическую библиотеку с поддержкой vulkan, проверьте, что на вашем компьютере установлены драйверы и библиотеки для работы Vulkan.
vulkaninfoЕсли вы хотите использовать CUDA, проверьте, что на вашем компьютере установлены драйверы и библиотеки для работы CUDA.
nvidia-smiДля Linux вам нужно установить
CUDA Toolkit >= 12.4.0и настроить переменные окружения. Для Windows, если игра падает, вам придётся заставить игру использоватьJava >= 25, см. Jaffe2718/whisper-jni/v0.5.6
Устранение неполадок
- Краш при запуске: Проверьте совместимость и версию используемой вами динамической библиотеки. Можно отключить расширенную конфигурацию и установить
useCustomDynamicLibвfalse, чтобы использовать стандартную динамическую библиотеку (версию для CPU). - Не удалось загрузить устройство аудиоввода: Проверьте, есть ли у Java доступ к устройству аудиоввода.
- Не удалось загрузить модель Whisper: Убедитесь, что путь к модели GGML Whisper указан верно.
Участие в разработке
Если вы хотите внести свой вклад в этот проект, не стесняйтесь создавать issues или pull requests на GitHub.
Частые вопросы
Как установить Microphone Text Input?
Установите Fabric под свою версию Minecraft, скачайте Microphone Text Input под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть Microphone Text Input?
У Microphone Text Input есть сборки для Minecraft 1.19.2–1.20.2, 1.20.4–1.21.1, 1.21.4–26.1.2.
Нужен ли Microphone Text Input на сервере?
Ставится только в игру; на сервер ставить не нужно