MIC-ASR-SEARCH.md: свои готовые библиотеки mic-kmp/asr-kmp/vad-kmp вместо кода микрофона из assistent

This commit is contained in:
Porfiry
2026-09-19 01:57:18 +03:00
parent 2b65baa139
commit 57e7fe1d17
4 changed files with 198 additions and 19 deletions
+16 -14
View File
@@ -231,25 +231,24 @@ clipboardManager.setText(AnnotatedString(segment.code))
(`bold`/`italic`/`code`/`strikethrough`/`link`). Логику стилей держат в данных, а не
в Композе — удобно и переносимо.
## 4. Запись микрофона на десктопе — без единой библиотеки
## 4. Запись микрофона — код из assistent брать НЕ надо
**Где:** `client/src/main/kotlin/pw/binom/client/audio/MicrophoneRecorder.kt` (83 строки).
Всё на стандартной Java (`javax.sound.sampled`: `AudioFormat`, `AudioSystem`,
`DataLine`, `TargetDataLine`), формат PCM 16 бит / 16 кГц / моно, буфер 4096 байт.
Ценнейшая находка для нашей кнопки записи. Всё на стандартной Java:
**Но копировать это не нужно.** У нас есть своя готовая библиотека **`mic-kmp`**
(опубликована, версия `1.0.0`), которая делает то же самое, только лучше:
отмена структурная — микрофон освобождается сам через `finally`, без ручного `close()`.
```kotlin
import javax.sound.sampled.AudioFormat
import javax.sound.sampled.AudioSystem
import javax.sound.sampled.DataLine
import javax.sound.sampled.TargetDataLine
```
Здесь файл полезен **только как источник приёмов**:
Формат: **PCM 16 бит, 16 кГц, моно, little-endian**, буфер 4096 байт.
Наружу отдаёт `ReceiveChannel<ByteArray>` — чанки сразу уходят на распознавание,
без накопления файла. Микрофон — `AudioSystem.getLine(...) as TargetDataLine`.
- подтверждает формат, который ждёт распознавание: **16 кГц, моно, PCM 16 бит, little-endian**
(`AudioFormat.Encoding.PCM_SIGNED, sampleRate, 16, 1, 2, sampleRate, false`);
- показывает, что сторонние библиотеки для звука не нужны — хватает стандартной Java;
- отдаёт данные кусками (`ReceiveChannel<ByteArray>`), а не файлом — можно стримить.
**Почему важно:** сторонние библиотеки для звука не нужны вообще. Мы это
собирались решать позже, но приём уже есть и он рабочий.
Подробности и координаты библиотек — `MIC-ASR-SEARCH.md`.
---
@@ -295,5 +294,8 @@ import javax.sound.sampled.TargetDataLine
| Отрисовку Markdown (4 файла) | Экраны целиком (`ChatScreen`, `SettingsDialog`, …) |
| Приёмы: таблицы, ленивый список, автоскролл, полоса прокрутки | Модули `chat-*` и модели сообщений |
| Кликабельные ссылки, копирование кода, выделение текста | `MessageBubble` |
| Запись микрофона через `javax.sound` | `ChatViewModel`, `config/*`, `cache/*` |
| Приём записи звука (формат 16к/моно, `javax.sound`) | `ChatViewModel`, `config/*`, `cache/*` |
| Зависимость `ru.otpbank.ai:markdown:0.51.0` | Чужой дизайн и окна |
**Микрофон и распознавание — не из assistent.** У нас для этого есть свои
опубликованные библиотеки: `mic-kmp`, `asr-kmp`, `vad-kmp`. Разбор — `MIC-ASR-SEARCH.md`.