Реалізація голосового бота (Voice Bot) у мобільному додатку

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

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Реалізація голосового бота (Voice Bot) у мобільному додатку
Складний
від 1 тижня до 3 місяців
Часті запитання

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

Етапи розробки

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

  • 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

Реалізація голосового бота (Voice Bot) у мобільних додатках

Голосовий бот — це конвеєр з трьох ланок: Speech-to-Text → NLP/LLM → Text-to-Speech. Кожна ланка додає затримку. Загальна затримка менше 1,5 секунди — це межа прийнятного для розмовного UX. Якщо перевищити — користувач думає, що бот зависнув.

Оптимізація затримки: де втрачається час

Типовий розподіл затримки:

Етап Хмарний варіант Оптимізований
STT (транскрипція) 400–800ms 200–400ms (streaming)
NLP / LLM відповідь 500–2000ms 150–400ms (streaming + кеш)
TTS (синтез) 300–600ms 100–200ms (streaming)
Мережа (2x) 100–300ms
Всього 1,3–3,7s ~1s зі streaming

Ключ до низької затримки — скрізь, де можливо, не чекати повного завершення попереднього кроку:

  • STT з shouldReportPartialResults = true — починаємо обробку до завершення фрази
  • LLM streaming — як тільки перші токени прибули, починаємо синтез
  • TTS streaming — починаємо відтворення, поки решта фрази ще синтезується

Speech-to-Text: вибір ядра

Вбудовані API. iOS — SFSpeechRecognizer, Android — SpeechRecognizer. Безплатно, офлайн-підтримка (обмежена). Точність для російської мови — прийнятна для коротких команд, гірша для розгорнутих фраз.

Whisper API (OpenAI). Найкраща якість транскрипції на російській, особливо з професійною термінологією. Затримка — 200–500ms для запису 5–15 секунд. Модель whisper-1, language: "ru".

Google Cloud Speech-to-Text. API потокової передачі дозволяє отримувати часткові результати в реальному часі. StreamingRecognizeRequest + gRPC — мінімальна затримка серед хмарних варіантів.

Yandex SpeechKit. Найкращі результати для російської серед усіх варіантів (навчена на російськомовному корпусі). Потокове розпізнавання через gRPC. Якщо бот працює тільки з російськомовними користувачами — перший вибір.

// iOS: AVAudioEngine → Yandex SpeechKit streaming
class VoiceBotRecorder {
    private let audioEngine = AVAudioEngine()
    private var recognitionStream: RecognitionStream?

    func startRecording() throws {
        let inputNode = audioEngine.inputNode
        let format = AVAudioFormat(commonFormat: .pcmFormatInt16,
                                   sampleRate: 16000,
                                   channels: 1,
                                   interleaved: false)!

        recognitionStream = speechKitClient.createStream(config: streamConfig)

        inputNode.installTap(onBus: 0, bufferSize: 4096, format: format) { [weak self] buffer, _ in
            guard let pcmData = buffer.int16ChannelData?[0] else { return }
            let bytes = Data(bytes: pcmData, count: Int(buffer.frameLength) * 2)
            try? self?.recognitionStream?.send(audio: bytes)
        }

        audioEngine.prepare()
        try audioEngine.start()
    }
}

Text-to-Speech: синтез мовлення

ElevenLabs. Найкраща якість мовлення, підтримує російську. API потокової передачі через WebSocket або HTTP chunked response. Клонування голосу — якщо бот повинен говорити специфічним голосом бренду.

OpenAI TTS. tts-1 (швидкий) та tts-1-hd (якісний). Потокова передача через HTTP range requests. Голоси alloy, echo, nova та інші — для російської nova звучить найприродніше.

Yandex SpeechKit TTS. Для російської мови — один із найкращих варіантів за природністю. Голоси alena, filipp, jane. Потокова передача через gRPC.

Вбудований синтез. iOS — AVSpeechSynthesizer, Android — TextToSpeech. Безплатно, працює офлайн, але якість значно нижча, ніж у хмарних варіантах — робот-подібне звучання.

Управління аудіо на мобільному

iOS. Категорія AVAudioSession повинна бути .playAndRecord з опцією .defaultToSpeaker. При відтворенні TTS потрібно деактивувати мікрофон — інакше бот почує сам себе (еха). AVAudioSession.setActive(false) перед відтворенням, true після.

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

Android. AudioManager.requestAudioFocus() перед відтворенням, abandonAudioFocus() після. Bluetooth-навушники потребують окремої обробки через профіль BluetoothHeadset.

Переривання розмови. Користувач починає говорити, поки бот ще відповідає (barge-in). Потрібно: виявити початок мовлення користувача → зупинити відтворення TTS → почати запис. VAD (Voice Activity Detection) — або вбудований через AudioRecord.getMaxAmplitude(), або більш точний через WebRTC VAD.

Wake word та режим hands-free

Для сценаріїв hands-free (навігація за кермом, розумні пристрої) — детектування wake word: «Привіт, асистент» активує бота без натискання. Рішення: Porcupine (Picovoice) з підтримкою кастомних wake words, OpenWakeWord (open source). Працюють повністю on-device, без мережевих запитів.

Процес впровадження

Вибір STT/TTS ядер за вимогами (мова, точність, затримка, бюджет).

Розробка аудіо-конвеєру: захоплення, кодування, потокова передача.

NLP/LLM логіка для розуміння голосових команд.

Оптимізація затримки: потокова передача на всіх етапах, кешування часто використовуваних відповідей.

UI: візуалізація станів (слухає / думає / говорить), анімація звукової хвилі.

Тестування в умовах фонового шуму, з різними акцентами та швидкістю мовлення.

Часові орієнтири

Голосовий бот із вбудованими STT/TTS — 1 тиждень. З хмарними ядрами (Yandex SpeechKit / ElevenLabs), потоковою передачею та оптимізацією затримки — 3–5 тижнів. З wake word та режимом hands-free — плюс 1–2 тижні.