Розробка мобільних додатків з AI-генерацією звукових ефектів — задача, де на кону швидкість та якість. Уявіть: користувач описує звук «удар блискавки з гуркотом та відлунням» — і за секунду отримує готовий аудіофайл. За цим стоїть інтеграція API, оптимізація кешування та налаштування відтворення з мінімальною затримкою. Ми розберемо, як підключити ElevenLabs Sound Effects або open-source AudioGen, реалізувати LRU-кеш на 50 МБ та досягти latency в 10 мс на iOS.
Як працює ElevenLabs Sound Effects API
Інтеграція ElevenLabs Sound Effects API — прямий POST-запит з текстовим описом. Сервіс повертає бінарний mp3 за 2–8 секунд. Це найпростіший та якісний спосіб для коротких звуків (0.5-5 сек).
Приклад запиту
POST https://api.elevenlabs.io/v1/sound-generation
xi-api-key: <key>
Content-Type: application/json
{
"text": "A heavy metal sword hitting a stone floor with a sharp clang and short reverb",
"duration_seconds": 2.0,
"prompt_influence": 0.3
}
prompt_influence від 0 до 1: чим вище, тим буквальніша інтерпретація промпту. Для коротких ефектів (< 1 сек) ставимо 0.7–0.9.
Відповідь — бінарний mp3 у тілі відповіді (не JSON з URL). На мобілі:
Код iOS (Swift)
// iOS: пряме завантаження бінарної відповіді
func generateSoundEffect(description: String, duration: Double) async throws -> Data {
var request = URLRequest(url: URL(string: "https://api.elevenlabs.io/v1/sound-generation")!)
request.httpMethod = "POST"
request.setValue("audio/mpeg", forHTTPHeaderField: "Accept")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue(apiKey, forHTTPHeaderField: "xi-api-key")
request.httpBody = try JSONEncoder().encode(SoundGenRequest(
text: description, duration_seconds: duration, prompt_influence: 0.4
))
let (data, response) = try await URLSession.shared.data(for: request)
guard (response as? HTTPURLResponse)?.statusCode == 200 else {
throw SoundGenError.apiError
}
return data // mp3 bytes
}
Обробка помилок та ретраї
При мережевих збоях або перевищенні лімітів API (429 Too Many Requests) реалізуємо exponential backoff з jitter. Для ElevenLabs рекомендуємо не більше 10 запитів на хвилину, враховуючи обмеження free-тарифу.
Чому важливе кешування згенерованих звуків
Один і той самий звуковий ефект користувач може використовувати багаторазово — регенерувати щоразу дорого та повільно. Кеш за хешем промпту + тривалості:
Кеш на Android (Kotlin)
// Android
class SoundEffectCache(private val cacheDir: File) {
private fun cacheKey(prompt: String, duration: Double): String =
"${prompt.hashCode()}_${(duration * 10).toInt()}.mp3"
fun getCached(prompt: String, duration: Double): File? {
val file = File(cacheDir, "sfx/${cacheKey(prompt, duration)}")
return if (file.exists()) file else null
}
fun saveToCache(prompt: String, duration: Double, data: ByteArray): File {
val dir = File(cacheDir, "sfx").also { it.mkdirs() }
val file = File(dir, cacheKey(prompt, duration))
file.writeBytes(data)
return file
}
}
Обмежуємо розмір кешу — не більше 50 MB, LRU-витіснення старих файлів. При перевищенні ліміту видаляємо найменш використовувані файли.
Як вибрати між ElevenLabs та AudioGen?
ElevenLabs Sound Effects — комерційний сервіс з відмінною якістю для коротких звуків (удар, кроки, клацання). Підходить для quick-time events або звуків інтерфейсу. AudioGen (через Replicate) — open-source модель, ідеальна для ambient-звуків: дощ, ліс, вітер. Нижче таблиця порівняння:
| Критерій | ElevenLabs Sound Effects | AudioGen (Replicate) |
|---|---|---|
| Якість коротких звуків | Відмінна (чистий звук) | Середня (можливі артефакти) |
| Якість ambient | Хороша | Хороша (краще для природи) |
| Ліцензія | Пропрієтарна | Open-source (MIT-like) |
| Час генерації | 2–8 сек | 5–15 сек (polling) |
| API | Прямий POST, бінарна відповідь | Асинхронний, URL на mp3 |
Приклад запиту до AudioGen:
Приклад запиту AudioGen
POST https://api.replicate.com/v1/predictions
{
"version": "<audiogen-medium-hash>",
"input": {
"prompt": "Forest with birds and wind",
"duration": 5,
"top_k": 250
}
}
Коли вибирати AudioGen
Якщо важлива ліцензійна чистота — наприклад, для комерційного ігрового движка або open-source проєкту. AudioGen також краще справляється з довгими ambient-звуками (дощ, вітер). ElevenLabs, однак, генерує звуки в 2-3 рази швидше для коротких ефектів.
Як забезпечити низьку затримку відтворення
Для ігрових додатків звуковий ефект має відтворюватися миттєво. AVAudioPlayer на iOS — латентність 50–100 ms. Для критичних сценаріїв використовуємо AVAudioEngine з AVAudioPlayerNode:
Код iOS з низькою затримкою
let audioEngine = AVAudioEngine()
let playerNode = AVAudioPlayerNode()
audioEngine.attach(playerNode)
audioEngine.connect(playerNode, to: audioEngine.mainMixerNode, format: nil)
try audioEngine.start()
// Завантажуємо файл заздалегідь, відтворюємо миттєво
let audioFile = try AVAudioFile(forReading: soundURL)
playerNode.scheduleFile(audioFile, at: nil)
playerNode.play() // Латентність ~10 ms
На Android для ігрових завдань використовуємо Oboe (C++ NDK бібліотека від Google) або SoundPool для попередньо завантажених ефектів. Порівняння методів:
| Метод | Latency | Складність | Пам'ять |
|---|---|---|---|
| AVAudioPlayer | 50-100ms | Низька | Низька |
| AVAudioEngine + Node | ~10ms | Середня | Середня |
| Oboe (Android) | 5-10ms | Висока | Середня |
| SoundPool (Android) | 15-30ms | Низька | Висока |
Відтворення в фоні та переривання
При згортанні додатка звук має коректно зупинятися або продовжувати грати залежно від сценарію. На iOS обробляємо AVAudioSessionInterruptionNotification, на Android — onPause() та onResume().
Що потрібно для запуску AI-генерації на мобільному пристрої?
Окрім API-ключа та мережевого доступу, важливо налаштувати кешування та вибір провайдера. Для ElevenLabs знадобиться акаунт і ключ, для AudioGen — токен Replicate. Кеш за промптом економить трафік і прискорює повторне використання. Ми готуємо документацію та демо-додаток для швидкого старту.
Процес роботи та терміни під ключ
- Аналіз та вибір провайдера AI (ElevenLabs/AudioGen/кастомна модель).
- Інтеграція API з обробкою відповідей та кешуванням.
- Реалізація відтворення з низькою затримкою.
- Тестування на різних пристроях та версіях ОС.
- Оптимізація під розмір додатка та трафік.
Базова інтеграція ElevenLabs з відтворенням та кешем — 2–3 дні, ціна від 500$. Вартість розраховується індивідуально. З бібліотекою користувацьких звуків, пошуком, тегуванням та інтеграцією у відеоредактор — 1–1.5 тижні., ціна від 1500$.
Що входить в роботу
- Документація з інтеграції та підтримка на етапі впровадження.
- Вихідний код інтеграції з коментарями.
- Тестові сценарії та демо-додаток.
- Рекомендації щодо оптимізації та масштабування.
- Гарантія якості — всі рішення проходять code review.
Наш досвід
Ми розробили понад 15 мобільних додатків з AI-фічами, включаючи генерацію звуків та музики. 5+ років на ринку, експертиза в Swift та Kotlin. Отримайте консультацію щодо вашого проєкту — підберемо оптимальне рішення під ваші задачі. Зв'яжіться з нами для оцінки вашого проєкту.







