skillok meeting
57e443b222306e63eaf81d54fae10fa0a4f4ea1a
Перейти к файлу
Код
meeting scriptsfetch-models.sh
anc Разбор по голосам: «Спикер 1», «Спикер 2»… на компьютере, без сети - crates/voices: отпечаток голоса реплики (WeSpeaker ResNet34 через sherpa-onnx, статические сборки под Windows и macOS) и разбиение снизу вверх со средней связью. Из отпечатков вычитается средний по записи: без этого у подкаста любые две реплики были похожи на 0,5–0,8. - После распознавания реплики «Собеседников» и файла раскладываются по голосам; микрофон — «Я». Отпечатки и реплики — в voices.json рядом с записью: «Говорящих: N» пересобирает разбиение без новой расшифровки. - Ход работы: этап «Разделяю по голосам» с процентом; по ходу распознавания у реплик разбираемых дорожек ещё нет имени. - Исправлено: файл без смены говорящего ложился одним абзацем 00:00:00 (подкаст 1 ч 52 мин — 170 КБ одной строкой). Абзац теперь — реплики одного говорящего без пауз больше 1,5 с и не длиннее ~600 знаков. У реплики появился конец (из ответа Whisper или до следующей). - Модель (26 МБ) не в git: scripts/fetch-models.sh с проверкой SHA-256, в сборку — ресурсом. Windows — со статической средой C (+crt-static, явная libucrt): установщику не нужен VC++ Redistributable; crate-type ядра — только rlib (cdylib нужен лишь мобильным платформам). - Проверено на подкасте Kuji 230 (1 ч 52 мин, трое в студии): трое, 48 % / 36 % / 15 % речи, отпечатки 1184 реплик за ~3 мин. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> d0d9d7d 30 сентября 2026 г.
fetch-models.sh
#!/bin/sh
# Модель голосов для разбора «кто говорит» — WeSpeaker ResNet34 (VoxCeleb),
# сборка sherpa-onnx. Кладётся в models/voices.onnx и попадает в установщик
# ресурсом (src-tauri/tauri.conf.json → bundle.resources). В git её нет: 26 МБ.
# Лицензия модели — Apache-2.0 (https://github.com/wenet-e2e/wespeaker).
set -eu
cd "$(dirname "$0")/.."
url="https://github.com/k2-fsa/sherpa-onnx/releases/download/speaker-recongition-models/wespeaker_en_voxceleb_resnet34_LM.onnx"
sha="e9848563da86f263117134dfd7ad63c92355b37de492b55e325400c9d9c39012"
mkdir -p models
if [ -f models/voices.onnx ] && [ "$(shasum -a 256 models/voices.onnx | cut -d' ' -f1)" = "$sha" ]; then
  echo "models/voices.onnx уже на месте"
  exit 0
fi
curl -fL --retry 3 -o models/voices.onnx.part "$url"
got="$(shasum -a 256 models/voices.onnx.part | cut -d' ' -f1)"
if [ "$got" != "$sha" ]; then
  rm -f models/voices.onnx.part
  echo "контрольная сумма не совпала: $got" >&2
  exit 1
fi
mv models/voices.onnx.part models/voices.onnx
echo "models/voices.onnx скачана"