Интеграция OpenAI TTS для синтеза речи
OpenAI TTS API предлагает 6 голосов (alloy, echo, fable, onyx, nova, shimmer) с поддержкой 50+ языков. Качество на английском — лучшее среди облачных решений. На русском — хорошее, с естественной интонацией, но иногда с заметным акцентом.
Доступные модели
- tts-1: оптимизирован для скорости, задержка ~300 мс
- tts-1-hd: высокое качество, задержка ~500–800 мс
Базовая интеграция
from openai import OpenAI
import io
client = OpenAI()
def synthesize_speech(text: str, voice: str = "alloy") -> bytes:
response = client.audio.speech.create(
model="tts-1-hd",
voice=voice, # alloy | echo | fable | onyx | nova | shimmer
input=text,
response_format="mp3", # mp3 | opus | aac | flac | wav | pcm
speed=1.0 # 0.25–4.0
)
return response.content
# Потоковый вывод (для real-time воспроизведения)
with client.audio.speech.with_streaming_response.create(
model="tts-1",
voice="nova",
input="Привет! Как я могу вам помочь?",
) as response:
response.stream_to_file("output.mp3")
Кэширование ответов
TTS-запросы идентичного текста возвращают одинаковое аудио — кэшируем:
import hashlib
import redis
cache = redis.Redis()
def get_speech(text: str, voice: str = "alloy") -> bytes:
cache_key = hashlib.md5(f"{text}:{voice}:tts-1-hd".encode()).hexdigest()
cached = cache.get(cache_key)
if cached:
return cached
audio = synthesize_speech(text, voice)
cache.setex(cache_key, 86400 * 7, audio) # TTL 7 дней
return audio
Стоимость
tts-1: $15/1M символов. tts-1-hd: $30/1M символов. Для типичной фразы в 100 символов: $0.0015 / $0.003.
Интеграция: 1 день.







