From fc8df87ee46f25464ed323ced0a95898c75a0c27 Mon Sep 17 00:00:00 2001 From: ed0ss Date: Fri, 26 Jun 2026 12:49:12 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BC=D0=B0=D1=80=D0=BA=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D0=B0=20=D1=81=D0=BF=D0=B8=D0=BA=D0=B5=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=20=E2=80=94=20=D0=BB=D0=B5=D0=B2=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=BA=D0=B0=D0=BD=D0=B0=D0=BB=20=3D=20callee,=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D1=8B=D0=B9=20=3D=20caller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + README.md | 4 ++-- aligner/aligner.py | 4 ++-- folders.txt | 18 ++++++++++++++++++ main.py | 4 ++-- 5 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 folders.txt diff --git a/.gitignore b/.gitignore index 91fe893..6f18bf5 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ build/ downloads/ temp/ .DS_Store +folders.txt diff --git a/README.md b/README.md index af6209e..c881ec2 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Novofon DATA API ──► call-to-text ──► Directus (Postgres) - Звонки получаются через JSON-RPC API (`get.calls_report`) - Аудио скачивается по прямой ссылке -- Стерео-файлы разделяются на каналы: левый = caller, правый = callee +- Стерео-файлы разделяются на каналы: левый = callee, правый = caller - Каждый канал транскрибируется через faster-whisper на CUDA - Результат сохраняется в Directus (коллекции `calls` / `calls_*`) @@ -239,7 +239,7 @@ docker compose down -v 1. `get.calls_report` получает звонки чанками по 90 дней (максимум API) 2. Скачивается аудио по `full_record_file_link` или `call_records` 3. FFmpeg конвертирует в WAV: 16 кГц, pcm_s16le, моно или стерео -4. Если каналы разные (реальное стерео) — левый = caller, правый = callee +4. Если каналы разные (реальное стерео) — левый = callee, правый = caller 5. Каждый канал транскрибируется faster-whisper на CUDA (float16) 6. Сегменты выравниваются по времени и маркируются спикером 7. Результат сохраняется в Directus diff --git a/aligner/aligner.py b/aligner/aligner.py index 5301048..343fdb5 100644 --- a/aligner/aligner.py +++ b/aligner/aligner.py @@ -8,7 +8,7 @@ def align(left_segments: list[dict], right_segments: list[dict]) -> list[dict]: merged.append({ "start": seg["start"], "end": seg["end"], - "speaker": "caller", + "speaker": "callee", "text": seg["text"].strip(), }) @@ -16,7 +16,7 @@ def align(left_segments: list[dict], right_segments: list[dict]) -> list[dict]: merged.append({ "start": seg["start"], "end": seg["end"], - "speaker": "callee", + "speaker": "caller", "text": seg["text"].strip(), }) diff --git a/folders.txt b/folders.txt new file mode 100644 index 0000000..2dc32b1 --- /dev/null +++ b/folders.txt @@ -0,0 +1,18 @@ +Отправленные +Архив +Вход +ГБУ Малый бизнес +Запись разговоров +Исходящие +Регистрации +Спам +Старые +Удаленные +Черновики +Черновики|template +INBOX +Mailspring +Mailspring|Snoozed +Support +Templates +hh.ru diff --git a/main.py b/main.py index 1f3d749..43e788d 100644 --- a/main.py +++ b/main.py @@ -112,7 +112,7 @@ def _transcribe_stereo(wav_path: str, meta: dict) -> dict: click.echo(" Real stereo, splitting channels...") left_wav, right_wav = split_stereo_channels(wav_path, config.TEMP_DIR) - click.echo(" Transcribing left channel (caller)...") + click.echo(" Transcribing left channel (callee)...") left_segments, left_text = transcribe( left_wav, model_size=config.WHISPER_MODEL_SIZE, @@ -120,7 +120,7 @@ def _transcribe_stereo(wav_path: str, meta: dict) -> dict: compute_type=config.WHISPER_COMPUTE_TYPE, ) - click.echo(" Transcribing right channel (callee)...") + click.echo(" Transcribing right channel (caller)...") right_segments, right_text = transcribe( right_wav, model_size=config.WHISPER_MODEL_SIZE,