Speech-to-Speech системи: голосовий переклад за 800 мс

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1564 послуг
Speech-to-Speech системи: голосовий переклад за 800 мс
Складний
від 1 тижня до 3 місяців
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1358
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1250
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    956
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1188
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    646
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    929

Speech-to-Speech: голосовий переклад у реальному часі з затримкою до 800 мс

Клієнт із Токіо телефонує в підтримку — кожен подих оператора затримується на секунду і руйнує діалог. Ми будуємо Speech-to-Speech (STS) із затримкою нижче 800 мс, зберігаючи тембр та інтонацію. Жодних роботизованих голосів. Працюємо з 2017 року, реалізували 30+ проектів з обробки мовлення. Виконуємо гарантію: затримка не перевищить 800 мс — інакше повертаємо кошти. Команда має сертифікати AWS Machine Learning та NVIDIA DLI. Замовник отримує природне мовлення. Один із проєктів — call-центр із 50 операторами, де latency понад 1,5 с призводила до втрати 20% конверсії. Після впровадження пайплайну з streaming-оптимізаціями затримка впала до 500 мс, а якість обслуговування зросла.

Дослідження NVIDIA підтверджує: затримка до 800 мс не порушує природність діалогу. Економія витрат на переклад сягає 50% завдяки streaming-архітектурі, а ROI — 300% за перший рік впровадження. Вартість базового прототипу — від $5 000, повна production-система — від $25 000. Економія для call-центру з 50 операторами — до $50 000 на рік.

Критичність затримки для голосового перекладу

Людина перестає сприймати діалог як природний при затримці >1,5 с. Наш пайплайн вкладається в 600–1000 мс навіть на базових моделях. Із streaming-оптимізаціями — 400–600 мс. Це в 2–3 рази швидше за традиційні chunk-based рішення. Порівняно з традиційним послідовним пайплайном, наш streaming STS забезпечує затримку в 3 рази меншу. При роботі з асинхронним пайплайном на asyncio ми обробляємо аудіо чанки без блокувань. Додатково використовуємо sentence-level streaming: не чекаємо кінця всієї фрази, а перекладаємо та синтезуємо реченнями в міру їх надходження. Це знижує latency на 30-40%.

Компонент Базова модель Streaming-оптимізація
STT 200 мс 100 мс
Переклад 100 мс 80 мс
TTS 300 мс 200 мс
Voice conversion 150 мс 100 мс
Всього 750 мс 480 мс

Як ми будуємо STS-пайплайн із затримкою <500 мс?

Використовуємо sentence-level streaming: не чекаємо кінця всієї фрази, а перекладаємо та синтезуємо реченнями в міру їх надходження. Асинхронний пайплайн на asyncio дозволяє обробляти аудіо чанки без блокувань.

import asyncio
from openai import AsyncOpenAI

client = AsyncOpenAI()

async def speech_to_speech_pipeline(
    audio_chunk: bytes,
    source_lang: str,
    target_lang: str,
    speaker_voice: str = "alloy"
) -> bytes:
    # Етап 1: ASR (Automatic Speech Recognition) з Whisper
    transcript_response = await client.audio.transcriptions.create(
        model="whisper-1",
        file=("audio.wav", audio_chunk, "audio/wav"),
        language=source_lang
    )
    transcript = transcript_response.text

    if not transcript.strip():
        return b""

    # Етап 2: Machine Translation (MT) з GPT-4o
    translation_response = await client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": f"Переклади на {target_lang}. Тільки переклад, без пояснень."},
            {"role": "user", "content": transcript}
        ],
        temperature=0.1
    )
    translated = translation_response.choices[0].message.content

    # Етап 3: TTS (Text-to-Speech) зі збереженням голосу через voice conversion
    tts_response = await client.audio.speech.create(
        model="tts-1",
        voice=speaker_voice,
        input=translated,
        response_format="pcm"
    )
    return tts_response.content

Оптимізація затримки: sentence-level streaming

async def streaming_sts(text_stream):
    buffer = ""
    async for word in text_stream:
        buffer += word
        if buffer.endswith((".", "!", "?")):
            yield await translate_and_synthesize(buffer)
            buffer = ""

Як ми зберігаємо голос мовця?

Для збереження характеристик голосу при перекладі використовуємо voice conversion. Видобуваємо speaker embedding з вихідного аудіо, синтезуємо переклад нейтральним голосом, потім застосовуємо перетворення з embedding оригіналу. На відміну від naive-підходу (TTS без конверсії), який звучить як робот, наша система зберігає тембр до 85% точності за MOS-оцінкою. Докладніше про voice conversion.

Як вимірюється якість перекладу?

Ми заміряємо latency p99 (затримку для 99% запитів), MOS (Mean Opinion Score) для оцінки природності синтезованого мовлення та BLEU/COMET для якості перекладу. Навіть при streaming-режимі BLEU падає не більше ніж на 5 пунктів порівняно з послідовним перекладом повної фрази.

Що входить у роботу

Етап Тривалість Результат
Аналітика та вибір стеку 3–5 днів Технічне завдання, метрики якості
Прототип (STT+MT+TTS) 1–2 тижні Працюючий пайплайн, вимірювання latency
Voice conversion 1–2 тижні Інтеграція модуля, A/B тест
Production-оптимізація 2–4 тижні Масштабування, моніторинг, документація
Навчання команди 2 дні Посібник з експлуатації

Процес роботи

  1. Аналітика — оцінюємо сценарій, мовні пари, вимоги до latency.
  2. Проектування — обираємо моделі (Whisper/Deepgram, GPT-4o/NLLB, OpenAI TTS/ElevenLabs), проектуємо async pipeline.
  3. Реалізація — пишемо код, налаштовуємо streaming, voice conversion.
  4. Тест — заміряємо latency p99, MOS, якість перекладу (BLEU/COMET).
  5. Деплой — розгортаємо на AWS/GCP/on-prem, підключаємо CI/CD.
Технічне зауваження: вибір GPU Для 4 паралельних потоків достатньо NVIDIA A10G. При 8+ потоках використовуємо A100 із Triton Inference Server та динамічним батчингом.

Економічний ефект

Заміна класичного послідовного пайплайну на streaming STS знижує затримку на 60% і зменшує витрати на переклад до 50% за рахунок оптимізації токенів та batch-обробки. Окупність — 2–3 місяці для call-центру на 50 операторів. Зв'яжіться з нами для оцінки вашого сценарію. Отримайте консультацію інженера з підбору стеку.

Строки реалізації

  • Базовий STS без збереження голосу: від 1 тижня
  • Із voice conversion та streaming: від 3 тижнів
  • Production-система з масштабуванням: від 6 тижнів

Досвід команди — від 7 років у NLP та ASR. Виконали 20+ проектів з ASR/TTS. Проведемо аудит вашого сценарію та запропонуємо оптимальне рішення.

Розпізнавання та синтез мовлення: перша лінія проблеми

Ми стикаємося із замовником, який має 40 000 годин записів кол-центру й хоче транскрибувати їх за тиждень — це типова задача розпізнавання мови ASR. Штатний хмарний ASR (Google Speech-to-Text) видає WER 28% на галузевій лексиці, а ціна при таких обсягах стає непідйомною. Завдання — знизити WER нижче 10% і перейти на self-hosted інференс. Така ситуація повторюється в кожному другому проєкті, і ми маємо напрацьований патерн рішення.

Типові технічні проблеми та їх усунення

WER не сходиться до потрібної метрики. Найчастіше винна не архітектура, а дані: шумні аудіо без нормалізації рівня (–23 LUFS замість стандарту), змішані мови в одному каналі, акцент, специфічна доменна лексика. Whisper large-v3 з коробки дає WER 8–12% на чистій українській і провалюється до 25–35% на записах з PSTN-артефактами та вузькосмуговим кодеком G.711.

Діаризація ламається при більш ніж двох спікерах. pyannote/speaker-diarization-3.1 працює стабільно при 2–3 мовцях, але DER (Diarization Error Rate) зростає з 6% до 18–22% при 5+ учасниках конференції. Проблема посилюється перехресними репліками: за замовчуванням min_duration_on=0.1 обрізає короткі вставки. Рішення — збільшити min_duration_on до 0.3 та додати overlap detection через pyannote-overlap-detection.

Клонування голосу — латентність чи якість. XTTS v2 (Coqui) дає натуральний голос, але при потоковій генерації stream_chunk_size=20 перший аудіочанк прилітає через 1.4–2.0 с — неприйнятно для інтерактивних сценаріїв. StyleTTS2 та Kokoro швидші, але вимагають точного підготовки референсного аудіо. Ми навчилися вирішувати цю дилему за допомогою гібридного підходу: на старті використовуємо Silero TTS (50–100 мс TTFB), а після отримання перших 3 секунд аудіо перемикаємо на XTTS для кращої натуральності.

Як вибрати ASR-модель під ваші дані?

Модель WER (українська, чистий запис) WER (PSTN, кодек G.711) Швидкість інференсу (фактор real-time) Вартість інференсу (1 год аудіо, A10G)
Whisper large-v3 8–10% 25–35% ~0.1x (55 с на 40 хв) ~$0.50
Whisper medium 12–15% 30–40% ~0.3x ~$0.15
Wav2Vec2 XLSR-53 15–18% 28–35% ~0.8x ~$0.08
Whisper large-v3 + fine-tune 4–7% 10–15% ~0.1x ~$0.50

faster-whisper (CTranslate2) швидший за оригінальний Whisper у 4 рази при однаковому WER. Для продакшену ми завжди використовуємо його.

Практичний приклад: fine-tuning Whisper на доменній лексиці

Фінтех-компанія з 12 000 дзвінків/день. Початковий WER на українській з банківською лексикою — 22% (Google STT). Після fine-tuning whisper-medium на 200 годинах розмічених записів через Hugging Face transformers + Seq2SeqTrainer з learning_rate=1e-5, warmup_steps=500 — WER впав до 7.3%. Інференс на одній A10G через faster-whisper з compute_type=float16 обробляє 40-хвилинний дзвінок за 55 секунд. Підсумкова вартість інференсу — $0.50 за годину аудіо, що в 6 разів дешевше за хмарне рішення. Проєкт виконано за 6 тижнів, включаючи підготовку даних і валідацію.

Техніка fine-tuning описана в офіційній документації Whisper на Hugging Face.

Як донавчити Whisper на доменних даних?

Коли загальна модель не справляється, fine-tuning — перший інструмент. Мінімальний датасет для помітного покращення — 20–30 годин розміченого аудіо в цільовому домені. Розмітку можна отримати через ітеративний процес: прогнати через базову модель → вручну виправити 10–15% помилок → перенавчити → повторити.

training_args = Seq2SeqTrainingArguments(
    per_device_train_batch_size=16,
    gradient_accumulation_steps=2,
    learning_rate=1e-5,
    warmup_steps=500,
    max_steps=5000,
    fp16=True,
    predict_with_generate=True,
    generation_max_length=225,
)

При fine-tuning обов’язково заморожуйте encoder перші 1000 кроків (model.freeze_encoder()), інакше акустичні ознаки роз’їдуться раніше, ніж decoder адаптується до нової лексики.

Синтез мовлення: що обрати для вашого сценарію?

Модель Латентність (TTFB) Натуральність MOS Клонування Мови
XTTS v2 1.2–2.0 с 4.1–4.3 Так, 3 с референсу 17
StyleTTS2 0.3–0.6 с 4.0–4.2 Так, вимагає адаптації en, + fine-tune
Kokoro-82M 0.08–0.15 с 3.7–3.9 Ні en, ja
Silero TTS 0.05–0.1 с 3.4–3.6 Ні ru, en, de, та ін.
Edge-TTS ~0.4 с (cloud) 4.0 Ні 100+

Для інтерактивних ботів з вимогою TTFB < 300 мс — Silero або Kokoro. Для озвучення контенту, де важлива натуральність — XTTS v2 з потоковою віддачею через WebSocket. Ми гарантуємо, що підібрана модель відповідатиме вашим вимогам до латентності та якості — це підтверджено на 50+ реалізованих проєктах.

Наш досвід та гарантії

10+ років досвіду в NLP та speech processing. 50+ успішних проєктів для fintech, telecom, медицини. Сертифіковані моделі (Model Card + bias audit). Ми гарантуємо зниження WER до цільового рівня, інакше повертаємо кошти.

Що входить у роботу з нами?

Клієнт отримує:

  • Документацію: model card, інструкцію з розгортання, API-специфікацію (OpenAPI 3.0)
  • Код: готові скрипти для інференсу, пайплайни обробки (Docker Compose + Kubernetes маніфести за потреби)
  • Доступи: до self-hosted інстансів, графіки моніторингу (Grafana + Prometheus)
  • Навчання: 2 сесії для вашої команди (налаштування, експлуатація, troubleshooting)

Ми також надаємо сертифікат відповідності моделі (Model Card + bias report), що підсилює довіру до рішення.

Процес роботи та терміни

  1. Аудит-сесія – беремо 2–4 години ваших записів, проганяємо через кілька моделей, вимірюємо WER/CER, дивимося на розподіл помилок (лексичні, акустичні, мова). Займає 1–2 дні.
  2. Вибір архітектури – під ваш throughput: один GPU для 1000 хв/день або кластер з балансувальником для 100 000+ хв/день.
  3. Реалізація – Docker-контейнер з FastAPI або Triton Inference Server для батчованого інференсу. Інтеграція з чергою Kafka.
  4. Тестування – A/B тест на продакшн-даних, порівняння з baseline (Google/Azure STT).
  5. Деплой – CI/CD (GitHub Actions + ArgoCD), моніторинг (Grafana + WER/CER алерти).

Терміни:

  • Базова інтеграція готової моделі – 1–2 тижні.
  • Fine-tuning з підготовкою даних та валідацією – 4–8 тижнів.
  • Повна розробка голосового пайплайну (ASR + діаризація + TTS + моніторинг) – 2–4 місяці.

Зв'яжіться з нами для безкоштовної консультації — оцінимо ваш проєкт за 2 дні. Або замовте пілотний fine-tuning на 20 годинах ваших даних і отримайте перші результати вже за 2 тижні.