Режим на детекторе речи вместо диаризации

Диаризация занимала 79 % времени, а её метку мы не используем: на записи
с одним микрофоном голоса не расходятся, роли расставляет LLM по смыслу.
Silero VAD решает единственную нужную задачу и делает это вчетверо быстрее.

Замер на 205 минутах: x16 -> x60, слов на 1,8 % меньше. Семь записей
из восьми в пределах +-4 %, на одной теряется 19 %.

Отдельно найдено: max_speech_duration у Silero по умолчанию 20 с, и на
таких кусках распознавание теряет текст. Снижение до 6 с даёт 6-8 п.п.
полноты бесплатно. Диаризация сохранена настройкой diarize.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Vladimir Bryzgalov
2026-08-17 13:36:01 +05:00
co-authored by Claude Opus 5
parent b2bad9d8e6
commit 5d576dd3c4
7 changed files with 132 additions and 14 deletions
+3 -1
View File
@@ -314,7 +314,9 @@ class TestSeparationNeverBreaksJob:
lambda *a: (_ for _ in ()).throw(RuntimeError("модель упала")))
monkeypatch.setattr("app.pipeline.read_wav", lambda _: np.zeros(16000 * 3, dtype=np.float32))
result = p.transcribe(tmp_path / "any.wav")
# Оценка разделения считается только при диаризации: в обычном режиме
# запись режет детектор речи, и разделять по голосам нечего.
result = p.transcribe(tmp_path / "any.wav", diarize=True)
assert result["stats"]["separation_quality"] == 0.0
assert result["turns"] # расшифровка на месте