MIC-ASR-SEARCH.md: свои готовые библиотеки mic-kmp/asr-kmp/vad-kmp вместо кода микрофона из assistent
This commit is contained in:
+16
-14
@@ -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`.
|
||||
|
||||
Reference in New Issue
Block a user