Перейти к содержимому

Урок 5: Генерация звука — Suno AI и ElevenLabs

Генерация звука: Suno AI и ElevenLabs

Если 2024 год был годом текста и изображений, то 2025–2026 — это эра AI-аудио. Инструменты вроде Suno и ElevenLabs сделали для музыки и голоса то, что ChatGPT сделал для письма.

Для разработчика это открывает огромные возможности:

  • Динамические саундтреки для игр, меняющиеся в зависимости от действий игрока
  • Персонализированные джинглы для маркетинговых кампаний
  • Голосовые интерфейсы для продуктов (приложения, боты, ассистенты)
  • Автоматическое озвучивание контента (новости, статьи, документация)
  • Дубляж и локализация видео на 29+ языках

Suno — лидер в генерации полноценных музыкальных треков с вокалом, инструментами и аранжировкой. С выходом Suno V5 платформа вышла на уровень, при котором результат сложно отличить от профессиональной записи.

  • Вокальная генерация — полноценные песни с текстом, близкие к человеческому исполнению
  • Инструментальный режим — фоновые треки, биты, саундскейпы без вокала
  • Custom Mode — раздельный контроль текста, жанра и настроения
  • Audio Extension — продолжение существующего трека с сохранением темпа и тональности
  • Stem export — экспорт отдельных дорожек (вокал, бас, барабаны) для работы в DAW
ПараметрЗначение
Качество аудио44.1 kHz stereo
ELO-рейтинг1,293 (лучший в классе)
Время генерации20–30 секунд на трек
Первый чанк~10–15 секунд
Точность промпта88% совпадений по жанру
Lyric Hallucinationменее 5%

Правовой контекст: Warner и Universal урегулировали судебные претензии к Suno и Udio — новые модели обучаются на лицензированных данных.

import requests
import time
API_KEY = "your_suno_api_key"
BASE_URL = "https://api.your-suno-provider.com/v1"
def generate_track(prompt: str, style: str = "", lyrics: str = "") -> dict:
"""Генерация музыкального трека через Suno API."""
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
payload = {
"prompt": prompt,
"custom_mode": True,
"style": style, # "Cyberpunk synthwave, 140 BPM, aggressive bass"
"lyrics": lyrics, # Текст песни или пусто для инструментала
"instrumental": not bool(lyrics),
"make_instrumental": not bool(lyrics)
}
# Отправляем запрос на генерацию
response = requests.post(
f"{BASE_URL}/generate",
json=payload,
headers=headers
)
response.raise_for_status()
task = response.json()
task_id = task["task_id"]
# Polling статуса (генерация занимает 20-30 сек)
return poll_task(task_id, headers)
def poll_task(task_id: str, headers: dict, timeout: int = 120) -> dict:
"""Опрашиваем API до готовности трека."""
start = time.time()
while time.time() - start < timeout:
resp = requests.get(
f"{BASE_URL}/task/{task_id}",
headers=headers
)
data = resp.json()
if data["status"] == "completed":
return {
"audio_url": data["audio_url"],
"duration": data["duration"],
"title": data.get("title", "Generated Track")
}
elif data["status"] == "failed":
raise Exception(f"Generation failed: {data.get('error')}")
time.sleep(2) # Ждём 2 секунды между запросами
raise TimeoutError("Track generation timed out")
# Использование
track = generate_track(
prompt="Epic battle theme for a mobile game",
style="Orchestral, dramatic, 120 BPM, strings and brass",
lyrics="" # Инструментал
)
print(f"Трек готов: {track['audio_url']}")

Игровые саундтреки

Динамическая музыка, меняющаяся по биому или интенсивности боя. API принимает параметры состояния игры и генерирует соответствующий трек.

Маркетинговый контент

Персонализированные джинглы и фоновая музыка для видео, рекламы и соцсетей — масштабируемо и быстро.

Подкасты и YouTube

Уникальная интро/аутро музыка для каждого эпизода. Никаких роялти, никаких претензий.

EdTech и e-learning

Адаптивный звуковой фон для обучающих платформ, поддерживающий концентрацию.

ПровайдерЦена за трекConcurrencyНадёжность
Прямая подписка (~$30/мес)~$0.03–0.041 (sequential)Низкая для API
Raw third-party wrapper$0.05–0.10СредняяВариативная
Enterprise API solutions$0.02–0.0550+ запросовВысокая

ElevenLabs — мировой стандарт для Text-to-Speech и Voice Cloning. Поддержка 29+ языков, реалистичные голоса, мгновенное клонирование.

  • Text-to-Speech — гиперреалистичный синтез речи (Multilingual v2, Flash)
  • Voice Cloning — мгновенное и профессиональное клонирование голоса
  • Conversational AI — интерактивные голосовые агенты в реальном времени
  • Speech-to-Text — транскрипция через API и UI
  • Voice Changer — трансформация голоса в реальном времени
  • Voice Isolator — очистка аудио от фонового шума
  • Sound Effects — генерация звуковых эффектов по описанию
  • Dubbing — автоматический дубляж видео с сохранением тембра голоса
ПланЦенаСимволы/месКлонированиеКачество
Free$010k (Multi) / 20k (Flash)Нет128 kbps
Starter$530k / 60kInstant128 kbps
Creator$11100k / 200k1 Pro Clone192 kbps
Pro$99500k / 1M1 Pro Clone192 kbps
Scale$3302M / 4M1 Pro Clone192 kbps
Business$1,32011M / 22M3 PVCs192 kbps + SLA
EnterpriseCustomCustomCustomCustom
from elevenlabs import ElevenLabs, VoiceSettings
client = ElevenLabs(api_key="your_elevenlabs_api_key")
def text_to_speech(
text: str,
voice_id: str = "JBFqnCBsd6RMkjVDRZzb", # George (по умолчанию)
model: str = "eleven_multilingual_v2",
output_path: str = "output.mp3"
) -> str:
"""Конвертация текста в речь."""
audio = client.text_to_speech.convert(
voice_id=voice_id,
text=text,
model_id=model,
voice_settings=VoiceSettings(
stability=0.5, # 0-1, выше = стабильнее
similarity_boost=0.75, # 0-1, близость к оригинальному голосу
style=0.0, # 0-1, стилистическое усиление
use_speaker_boost=True
),
output_format="mp3_44100_128",
)
# Сохраняем аудио в файл
with open(output_path, "wb") as f:
for chunk in audio:
if chunk:
f.write(chunk)
return output_path
# Получение списка доступных голосов
def list_voices():
voices = client.voices.get_all()
for voice in voices.voices:
print(f"{voice.name}: {voice.voice_id} ({voice.labels})")
# Instant Voice Cloning (нужно 1+ минута аудио)
def clone_voice(name: str, sample_files: list[str]) -> str:
voice = client.clone(
name=name,
description="My custom voice clone",
files=sample_files, # Пути к .mp3/.wav файлам
)
return voice.voice_id
# Использование
audio_path = text_to_speech(
text="Привет! Это тест ElevenLabs API на русском языке.",
voice_id="JBFqnCBsd6RMkjVDRZzb",
model="eleven_multilingual_v2",
output_path="hello_russian.mp3"
)
print(f"Аудио готово: {audio_path}")
МодельСкоростьКачествоЯзыкиUse Case
eleven_multilingual_v2МедленнееЛучшее29+Продакшн-контент, нарратив
eleven_flash_v2_5Быстрее (~2x)Отличное29+Real-time, чатботы
eleven_turbo_v2Самый быстрыйХорошееENLow-latency приложения

ElevenLabs предоставляет полноценный фреймворк для голосовых агентов:

from elevenlabs.conversational_ai.conversation import Conversation
from elevenlabs.conversational_ai.default_audio_interface import DefaultAudioInterface
# Конфигурация агента создаётся в ElevenLabs Dashboard
AGENT_ID = "your_agent_id"
conversation = Conversation(
client=client,
agent_id=AGENT_ID,
requires_auth=False,
audio_interface=DefaultAudioInterface(),
callback_agent_response=lambda r: print(f"Агент: {r}"),
callback_user_transcript=lambda t: print(f"Пользователь: {t}"),
)
conversation.start_session()
# ... голосовой диалог в реальном времени
conversation.end_session()

Udio

Сильный конкурент Suno. Лучше для экспериментов и необычных жанров. Урегулировал споры с Universal, переходит на лицензированные данные.

AIVA

Специализируется на классической и оркестровой музыке. Отлично для кино и игр, требующих академического звучания.

Mubert

Генерация бесконечного адаптивного фона. API для стриминга музыки под любое настроение — идеально для приложений.

ElevenLabs Sound Effects

Генерация звуковых эффектов по описанию: “глухой удар металла о камень”, “звук открывающегося портала”.


Соберём всё вместе — бот принимает текст и отвечает голосом через ElevenLabs:

import os
import asyncio
import tempfile
from telegram import Update
from telegram.ext import Application, MessageHandler, filters, ContextTypes
from elevenlabs import ElevenLabs
TELEGRAM_TOKEN = os.environ["TELEGRAM_TOKEN"]
ELEVENLABS_KEY = os.environ["ELEVENLABS_API_KEY"]
VOICE_ID = "JBFqnCBsd6RMkjVDRZzb"
el_client = ElevenLabs(api_key=ELEVENLABS_KEY)
async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
text = update.message.text
# Генерируем голосовое сообщение
audio_stream = el_client.text_to_speech.convert(
voice_id=VOICE_ID,
text=text,
model_id="eleven_flash_v2_5", # Flash для скорости
)
# Сохраняем во временный файл
with tempfile.NamedTemporaryFile(suffix=".mp3", delete=False) as tmp:
for chunk in audio_stream:
if chunk:
tmp.write(chunk)
tmp_path = tmp.name
# Отправляем голосовое сообщение
with open(tmp_path, "rb") as audio:
await update.message.reply_voice(voice=audio)
os.unlink(tmp_path)
def main():
app = Application.builder().token(TELEGRAM_TOKEN).build()
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
app.run_polling()
if __name__ == "__main__":
main()

ЗадачаИнструментМодель/Режим
Музыка для игрыSuno V5 APICustom Mode, instrumental
TTS для бота/ассистентаElevenLabsFlash v2.5, streaming
Клонирование голосаElevenLabsProfessional Voice Clone
Классическая музыкаAIVA
Звуковые эффектыElevenLabsSound Effects endpoint
Бесконечный фонMubertStreaming API
Дубляж видеоElevenLabsDubbing API
Голосовой агентElevenLabsConversational AI

  • Suno AI — генерация музыки из текста
  • ElevenLabs — Text-to-Speech и Voice Cloning
  • ElevenLabs API — API документация

В следующем уроке разберём OpenClaw AI Agent — как автоматизировать повторяющиеся задачи с помощью агентного AI прямо в своём окружении.