Режим на детекторе речи вместо диаризации
Диаризация занимала 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:
co-authored by
Claude Opus 5
parent
b2bad9d8e6
commit
5d576dd3c4
@@ -52,6 +52,15 @@ threads = 0
|
||||
# в очередь вместо параллельной работы. Каждый процесс держит свою копию
|
||||
# моделей, это около 1 ГБ памяти на процесс.
|
||||
workers = 1
|
||||
# Разделять ли запись по голосам (pyannote). На записи с одним микрофоном
|
||||
# на столе голоса не расходятся: метка говорящего оказывается случайной
|
||||
# в семи случаях из восьми. Роли всё равно расставляет LLM по смыслу текста,
|
||||
# поэтому по умолчанию работает только детектор речи.
|
||||
# Замер на 205 минутах реальных записей: без диаризации в 4,3 раза быстрее
|
||||
# (x16 -> x60), слов на 1,8 % меньше. Семь записей из восьми в пределах
|
||||
# +-4 %, на одной теряется 19 % - там голоса очень тихие. true - если такие
|
||||
# записи для вас типичны или нужны метки говорящих.
|
||||
diarize = false
|
||||
# Ожидаемое число говорящих в записи. 0 = определять автоматически
|
||||
# (на реальных звонках работает плохо, для диалога ставьте 2).
|
||||
speakers = 2
|
||||
@@ -106,6 +115,7 @@ class Settings:
|
||||
workers: int = 0
|
||||
speakers: int = 2
|
||||
normalize: bool = True
|
||||
diarize: bool = False
|
||||
recover_gaps: bool = True
|
||||
max_upload_mb: int = 500
|
||||
keep_results_hours: float = 72.0
|
||||
@@ -193,6 +203,7 @@ def load_settings(config_path: Path | None = None) -> Settings:
|
||||
workers=int(proc.get("workers", 1)),
|
||||
speakers=int(proc.get("speakers", 2)),
|
||||
normalize=bool(proc.get("normalize", True)),
|
||||
diarize=bool(proc.get("diarize", False)),
|
||||
recover_gaps=bool(proc.get("recover_gaps", True)),
|
||||
max_upload_mb=int(proc.get("max_upload_mb", 500)),
|
||||
keep_results_hours=float(proc.get("keep_results_hours", 72)),
|
||||
|
||||
Reference in New Issue
Block a user