feat(diarization): подготовлен стенд Intel-эксперимента
Зачем: - нужен воспроизводимый Intel-этап перед проверкой кандидатов на Ryzen - sherpa-onnx 1.13.6 открывает настройку шага окна Что: - добавлены строгий manifest v3, планировщик A/B и проверяемая приватная капсула - реализованы экспериментальные NME, модели эмбеддингов и режимы worker/session - версия sherpa-onnx поднята до 1.13.6, зависимости и тесты закреплены Проверка: - uv lock --check - uv run pytest -q - uv run ruff check для изменённых Python-файлов - uv build с проверкой состава wheel
This commit is contained in:
1 parent
7dc5723742
commit
bd0d7e6736
8 files changed
+5055
-62
No files matched your search
@@ -25,7 +25,7 @@ from tempfile import NamedTemporaryFile
|
||||
from typing import Any
|
||||
|
||||
SCHEMA_VERSION = 2
|
||||
EXPECTED_SHERPA_ONNX_VERSION = "1.13.5"
|
||||
EXPECTED_SHERPA_ONNX_VERSION = "1.13.6"
|
||||
SAMPLE_RATE = 16_000
|
||||
SAMPLE_WIDTH_BYTES = 2
|
||||
CHANNELS = 1
|
||||
@@ -133,7 +133,7 @@ class PeakRssSampler:
|
||||
def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser(
|
||||
description=(
|
||||
"Проверяет и запускает воспроизводимый CPU-benchmark из issue #25. "
|
||||
"Проверяет и запускает воспроизводимый CPU-benchmark диаризации. "
|
||||
"Приватные пути и результаты остаются вне Git."
|
||||
),
|
||||
epilog=(
|
||||
@@ -144,7 +144,7 @@ def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
|
||||
parser.add_argument(
|
||||
"--manifest",
|
||||
type=Path,
|
||||
help="manifest v2; относительные пути считаются от его каталога",
|
||||
help="manifest v2/v3; относительные пути считаются от его каталога",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--output",
|
||||
@@ -156,6 +156,15 @@ def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
|
||||
type=Path,
|
||||
help="каталог декодированных WAV и запросов дочерним процессам",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--capsule",
|
||||
type=Path,
|
||||
help="исходный ZIP приватной капсулы для проверки handoff",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--capsule-sha256",
|
||||
help="ожидаемый внешний SHA-256 ZIP-капсулы",
|
||||
)
|
||||
# Оставлено для воспроизводимости старых команд; значение входит в experiment_id.
|
||||
parser.add_argument(
|
||||
"--threads",
|
||||
@@ -201,6 +210,8 @@ def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
|
||||
missing.append("output")
|
||||
if missing:
|
||||
parser.error("обязательные параметры: " + ", ".join(missing))
|
||||
if (args.capsule is None) != (args.capsule_sha256 is None):
|
||||
parser.error("--capsule и --capsule-sha256 задаются вместе")
|
||||
if args.prepare_asr is not None:
|
||||
asr_missing = [
|
||||
name
|
||||
@@ -747,7 +758,7 @@ def select_threshold(
|
||||
|
||||
|
||||
def parse_stage_timings(stderr: str, sherpa_version: str) -> dict[str, float]:
|
||||
"""Строго разбирает недокументированный debug-контракт sherpa 1.13.5."""
|
||||
"""Строго разбирает недокументированный debug-контракт sherpa 1.13.6."""
|
||||
if sherpa_version != EXPECTED_SHERPA_ONNX_VERSION:
|
||||
raise ValueError(
|
||||
f"Неизвестный формат stage timing sherpa-onnx {sherpa_version}"
|
||||
@@ -1536,9 +1547,20 @@ def validation_summary(
|
||||
def main(argv: list[str] | None = None) -> None:
|
||||
args = parse_args(argv)
|
||||
if args.worker is not None:
|
||||
request = json.loads(args.worker.read_text(encoding="utf-8"))
|
||||
if request.get("worker_schema_version") == 3:
|
||||
from local_transcriber.benchmark_experiment import worker_main
|
||||
|
||||
worker_main(args.worker)
|
||||
return
|
||||
_worker_main(args.worker)
|
||||
return
|
||||
raw_manifest = json.loads(args.manifest.read_text(encoding="utf-8"))
|
||||
if raw_manifest.get("schema_version") == 3:
|
||||
from local_transcriber.benchmark_experiment import run_cli
|
||||
|
||||
run_cli(args, raw_manifest)
|
||||
return
|
||||
validate_manifest(raw_manifest, verify_files=False)
|
||||
manifest = resolve_manifest_paths(raw_manifest, args.manifest.parent)
|
||||
if args.threads is not None:
|
||||
|
||||
Reference in new issue
Block a user