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/
|
downloads/
|
||||||
temp/
|
temp/
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
folders.txt
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ Novofon DATA API ──► call-to-text ──► Directus (Postgres)
|
||||||
|
|
||||||
- Звонки получаются через JSON-RPC API (`get.calls_report`)
|
- Звонки получаются через JSON-RPC API (`get.calls_report`)
|
||||||
- Аудио скачивается по прямой ссылке
|
- Аудио скачивается по прямой ссылке
|
||||||
- Стерео-файлы разделяются на каналы: левый = caller, правый = callee
|
- Стерео-файлы разделяются на каналы: левый = callee, правый = caller
|
||||||
- Каждый канал транскрибируется через faster-whisper на CUDA
|
- Каждый канал транскрибируется через faster-whisper на CUDA
|
||||||
- Результат сохраняется в Directus (коллекции `calls` / `calls_*`)
|
- Результат сохраняется в Directus (коллекции `calls` / `calls_*`)
|
||||||
|
|
||||||
|
|
@ -239,7 +239,7 @@ docker compose down -v
|
||||||
1. `get.calls_report` получает звонки чанками по 90 дней (максимум API)
|
1. `get.calls_report` получает звонки чанками по 90 дней (максимум API)
|
||||||
2. Скачивается аудио по `full_record_file_link` или `call_records`
|
2. Скачивается аудио по `full_record_file_link` или `call_records`
|
||||||
3. FFmpeg конвертирует в WAV: 16 кГц, pcm_s16le, моно или стерео
|
3. FFmpeg конвертирует в WAV: 16 кГц, pcm_s16le, моно или стерео
|
||||||
4. Если каналы разные (реальное стерео) — левый = caller, правый = callee
|
4. Если каналы разные (реальное стерео) — левый = callee, правый = caller
|
||||||
5. Каждый канал транскрибируется faster-whisper на CUDA (float16)
|
5. Каждый канал транскрибируется faster-whisper на CUDA (float16)
|
||||||
6. Сегменты выравниваются по времени и маркируются спикером
|
6. Сегменты выравниваются по времени и маркируются спикером
|
||||||
7. Результат сохраняется в Directus
|
7. Результат сохраняется в Directus
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ def align(left_segments: list[dict], right_segments: list[dict]) -> list[dict]:
|
||||||
merged.append({
|
merged.append({
|
||||||
"start": seg["start"],
|
"start": seg["start"],
|
||||||
"end": seg["end"],
|
"end": seg["end"],
|
||||||
"speaker": "caller",
|
"speaker": "callee",
|
||||||
"text": seg["text"].strip(),
|
"text": seg["text"].strip(),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -16,7 +16,7 @@ def align(left_segments: list[dict], right_segments: list[dict]) -> list[dict]:
|
||||||
merged.append({
|
merged.append({
|
||||||
"start": seg["start"],
|
"start": seg["start"],
|
||||||
"end": seg["end"],
|
"end": seg["end"],
|
||||||
"speaker": "callee",
|
"speaker": "caller",
|
||||||
"text": seg["text"].strip(),
|
"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...")
|
click.echo(" Real stereo, splitting channels...")
|
||||||
left_wav, right_wav = split_stereo_channels(wav_path, config.TEMP_DIR)
|
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_segments, left_text = transcribe(
|
||||||
left_wav,
|
left_wav,
|
||||||
model_size=config.WHISPER_MODEL_SIZE,
|
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,
|
compute_type=config.WHISPER_COMPUTE_TYPE,
|
||||||
)
|
)
|
||||||
|
|
||||||
click.echo(" Transcribing right channel (callee)...")
|
click.echo(" Transcribing right channel (caller)...")
|
||||||
right_segments, right_text = transcribe(
|
right_segments, right_text = transcribe(
|
||||||
right_wav,
|
right_wav,
|
||||||
model_size=config.WHISPER_MODEL_SIZE,
|
model_size=config.WHISPER_MODEL_SIZE,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue