Выравнивание громкости перед обработкой
Ключевая находка по записям с микрофоном на столе: без выравнивания тихий дальний участник сливается с громким и разделение разваливается. Замер на трёх разговорах: доля второго участника выросла с 1.8 до 24.3 процента, переключений между репликами - с 21 до 71 процента. Работает только выравнивание: шумоподавление, полосовой фильтр и компандер не дали ничего. Параметры подобраны замером, f=400:g=3 давал 8.6 процента вместо 43.2. На распознавание не влияет - расшифровки фрагментов совпали дословно. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
e6e10dddd1
commit
eda6fa143a
+4
-3
@@ -63,11 +63,12 @@ def _process(job_id: str, worker: Pipeline, pool) -> None:
|
||||
# задачи выстраиваются в очередь вместо параллельной работы.
|
||||
from app.worker import run_job
|
||||
|
||||
result = pool.submit(run_job, str(upload), speakers, worker.ffmpeg).result()
|
||||
result = pool.submit(run_job, str(upload), speakers, worker.ffmpeg,
|
||||
settings.normalize).result()
|
||||
else:
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
wav = Path(tmp) / "audio.wav"
|
||||
to_wav16k(upload, wav, worker.ffmpeg)
|
||||
to_wav16k(upload, wav, worker.ffmpeg, settings.normalize)
|
||||
result = worker.transcribe(wav, num_speakers=speakers)
|
||||
result["filename"] = job["filename"]
|
||||
store.mark_done(job_id, result)
|
||||
@@ -325,7 +326,7 @@ async def benchmark(file: UploadFile = File(...)) -> dict:
|
||||
while chunk := await file.read(1 << 20):
|
||||
out.write(chunk)
|
||||
wav = Path(tmp) / "audio.wav"
|
||||
to_wav16k(src, wav, pipeline.ffmpeg)
|
||||
to_wav16k(src, wav, pipeline.ffmpeg, settings.normalize)
|
||||
samples = read_wav(wav)
|
||||
|
||||
return run_benchmark(samples, models_dir=settings.models_dir,
|
||||
|
||||
Reference in New Issue
Block a user