fix: исправлена маркировка спикеров — левый канал = callee, правый = caller
This commit is contained in:
parent
7f03949593
commit
fc8df87ee4
5 changed files with 25 additions and 6 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -11,3 +11,4 @@ build/
|
|||
downloads/
|
||||
temp/
|
||||
.DS_Store
|
||||
folders.txt
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
18
folders.txt
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
Отправленные
|
||||
Архив
|
||||
Вход
|
||||
ГБУ Малый бизнес
|
||||
Запись разговоров
|
||||
Исходящие
|
||||
Регистрации
|
||||
Спам
|
||||
Старые
|
||||
Удаленные
|
||||
Черновики
|
||||
Черновики|template
|
||||
INBOX
|
||||
Mailspring
|
||||
Mailspring|Snoozed
|
||||
Support
|
||||
Templates
|
||||
hh.ru
|
||||
4
main.py
4
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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue