Реализация AI-перевода речи в реальном времени в мобильном приложении

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Реализация AI-перевода речи в реальном времени в мобильном приложении
Сложный
~1-2 недели
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Реализация AI-перевода речи в реальном времени в мобильном приложении

Перевод речи в реальном времени — это пайплайн из трёх независимых задержек: захват аудио → транскрипция → перевод → синтез голоса. Сквозная задержка от конца фразы до звука перевода в хорошей реализации — 1,5–3 секунды. В плохой — 8–15 секунд, и это уже неюзабельно для живого разговора.

Архитектура пайплайна

Микрофон → VAD → буфер 2-3 сек → STT API → исходный текст
                                              ↓
                                   Translation API → переведённый текст
                                              ↓
                                         TTS API → аудио → динамик

Каждый блок можно параллелить. Пока TTS синтезирует первое предложение, STT уже обрабатывает следующий фрагмент. Это называется pipeline parallelism и снижает сквозную задержку вдвое.

Выбор STT для стриминга

Whisper — нет. Deepgram Nova-2 или Google Speech-to-Text v2 с interim_results — да. Для перевода речи нужен потоковый STT, иначе придётся ждать полной паузы.

Deepgram с interim_results=true и utterance_end_ms=1200 даёт текст в течение 300–500 мс после окончания фразы. Это рабочее окно для запуска перевода.

Реализация на iOS

class SpeechTranslationPipeline {
    private let deepgramStreamer: DeepgramStreamer
    private let translator: TranslationService
    private let tts: AVSpeechSynthesizer

    func handleFinalTranscript(_ text: String, sourceLang: String, targetLang: String) async {
        // Запуск перевода сразу после получения финального utterance
        async let translated = translator.translate(text, from: sourceLang, to: targetLang)

        // Параллельно показываем исходный текст в UI
        await MainActor.run { sourceLabel.text = text }

        let translatedText = try? await translated
        guard let result = translatedText else { return }

        await MainActor.run { targetLabel.text = result }

        // TTS
        let utterance = AVSpeechUtterance(string: result)
        utterance.voice = AVSpeechSynthesisVoice(language: targetLang)
        utterance.rate = 0.52
        tts.speak(utterance)
    }
}

AVSpeechSynthesizer — системный TTS на iOS. Для русского голоса качество приемлемое, но заметно хуже ElevenLabs или OpenAI TTS. Если нужен естественный голос — меняем блок TTS на облачный с кэшированием синтезированного аудио.

Управление аудиосессией

При одновременном захвате микрофона и воспроизведении перевода — конфликт AVAudioSession. Нужна категория .playAndRecord с опцией .defaultToSpeaker:

try AVAudioSession.sharedInstance().setCategory(
    .playAndRecord,
    mode: .voiceChat,
    options: [.defaultToSpeaker, .allowBluetooth]
)

Режим .voiceChat активирует эхоподавление. Без него перевод из динамика попадёт обратно в микрофон и пойдёт на второй круг транскрипции.

Реализация на Android

class SpeechTranslationPipeline @Inject constructor(
    private val deepgramStreamer: DeepgramStreamer,
    private val translationRepo: TranslationRepository,
    private val tts: TextToSpeech
) {
    fun start(sourceLang: String, targetLang: String) {
        deepgramStreamer.onFinalTranscript = { text ->
            coroutineScope.launch {
                val translated = translationRepo.translate(text, targetLang)
                withContext(Dispatchers.Main) {
                    sourceTextView.text = text
                    targetTextView.text = translated
                }
                speakTranslation(translated, targetLang)
            }
        }
        deepgramStreamer.start()
    }

    private fun speakTranslation(text: String, lang: String) {
        tts.language = Locale.forLanguageTag(lang)
        tts.speak(text, TextToSpeech.QUEUE_FLUSH, null, null)
    }
}

AudioManager.MODE_IN_COMMUNICATION + AudioRecord с источником VOICE_COMMUNICATION — для корректной работы AEC (Acoustic Echo Canceler) на Android. Иначе на устройствах без хардварного AEC будет эхо.

Проблема перекрытия фраз

Пока TTS произносит перевод, пользователь может говорить следующую фразу. Если VAD это не учитывает, микрофон подхватит и голос из динамика. Решение:

  • Пауза VAD на время воспроизведения TTS
  • Или дополнительная фильтрация: игнорировать interim-результаты во время проигрывания аудио

На практике второй вариант надёжнее, так как не создаёт неловких пауз.

Провайдеры под разные языковые пары

Направление STT Translation TTS
ru → en Deepgram Nova-2 DeepL OpenAI TTS (alloy)
en → ru Deepgram Nova-2 DeepL/Google Yandex SpeechKit
zh → en Google STT Google Translate Google TTS
ar → en AssemblyAI GPT-4o ElevenLabs

Для русского синтеза голоса Yandex SpeechKit заметно лучше Google TTS и OpenAI по естественности. Это не мнение — это проверяемо на тестовом сете из 50 фраз.

Оффлайн-вариант

Для устройств без стабильного интернета: Whisper on-device (whisper.cpp через CoreML на iOS, ONNX на Android) + ML Kit Translate + системный TTS. Задержка 3–6 секунд вместо 1,5, но работает без сети.

Whisper tiny/base на iPhone 13 через CoreML — около 2 секунд на 5-секундный фрагмент. Приемлемо для туристического сценария.

Сроки

Потоковый перевод речи с облачными сервисами на одной платформе — 2–4 недели. Это включает интеграцию STT, translation, TTS, управление аудиосессией, обработку обрыва сети, базовый UI. Кросс-платформенная реализация на Flutter с нативными аудио-мостами — 3–5 недель.