fix: исправлена маркировка спикеров — левый канал = callee, правый = caller

This commit is contained in:
ed0ss 2026-06-26 12:49:12 +03:00
parent 7f03949593
commit fc8df87ee4
5 changed files with 25 additions and 6 deletions

1
.gitignore vendored
View file

@ -11,3 +11,4 @@ build/
downloads/
temp/
.DS_Store
folders.txt

View file

@ -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

View file

@ -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(),
})

18
folders.txt Normal file
View file

@ -0,0 +1,18 @@
Отправленные
Архив
Вход
ГБУ Малый бизнес
Запись разговоров
Исходящие
Регистрации
Спам
Старые
Удаленные
Черновики
Черновики|template
INBOX
Mailspring
Mailspring|Snoozed
Support
Templates
hh.ru

View file

@ -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,