Штатная кнопка микрофона в bb не работает: BB_TRANSCRIPTION=codex/gpt-transcribe, а плагин provider-codex выключен → voiceTranscriptionEnabled: false.
Делаем свой плагин voice-ink — локальное распознавание речи на сервере, по мотивам MyInk (форк VoiceInk).
Устройство
server.ts — регистрация AI-сервиса myink (kind voice) + настройки.
src/host.ts — обработчик ai.voice.transcribe.
- Python-воркер с резидентной моделью faster-whisper (модель не выгружается между запросами).
- Своя кнопка микрофона в композере (
composer.customize({ actions })) с потоковой обработкой чанков во время записи — обходит лимит ядра в 10 секунд на запрос.
Модель
Замеры на сервере (15 секунд русской речи, 4 ядра Xeon, прогретая модель): medium int8 + батч — 7.6 с (лучший текст), small — 3.0 с (теряет слова), large-v3-turbo — 10–12 с и деградация от int8-квантизации. Берём medium с батч-режимом; опционально движок Groq по ключу.
Готово, когда
- Кнопка в композере пишет и вставляет распознанный текст, задержка после «стоп» не больше 3 секунд на типичной фразе.
- Штатная кнопка bb тоже работает (
BB_TRANSCRIPTION=myink/...).
- Модель качается сама при первом запуске, в git не лежит.
Штатная кнопка микрофона в bb не работает:
BB_TRANSCRIPTION=codex/gpt-transcribe, а плагинprovider-codexвыключен →voiceTranscriptionEnabled: false.Делаем свой плагин
voice-ink— локальное распознавание речи на сервере, по мотивам MyInk (форк VoiceInk).Устройство
server.ts— регистрация AI-сервисаmyink(kindvoice) + настройки.src/host.ts— обработчикai.voice.transcribe.composer.customize({ actions })) с потоковой обработкой чанков во время записи — обходит лимит ядра в 10 секунд на запрос.Модель
Замеры на сервере (15 секунд русской речи, 4 ядра Xeon, прогретая модель): medium int8 + батч — 7.6 с (лучший текст), small — 3.0 с (теряет слова), large-v3-turbo — 10–12 с и деградация от int8-квантизации. Берём medium с батч-режимом; опционально движок Groq по ключу.
Готово, когда
BB_TRANSCRIPTION=myink/...).