Реалізація синтезу мовлення з вибором голосу та тембру

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Реалізація синтезу мовлення з вибором голосу та тембру
Простий
від 1 дня до 3 днів
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

Реалізація синтезу мови з вибором голосу та тембру Вибір голосу та тембру — інтерфейс користувача над TTS-системою. Різні голоси для різних контекстів: офіційний для банку, дружній для ритейлу, нейтральний для IVR. ### Каталог голосів та мапінг```python

from dataclasses import dataclass from enum import Enum

class VoiceGender(Enum): MALE = "male" FEMALE = "female"

@dataclass class VoiceProfile: id: str name: str gender: VoiceGender language: str provider: str style: str # formal | friendly | neutral | energetic sample_url: str

VOICE_CATALOG = [ VoiceProfile("alena", "Алёна", VoiceGender.FEMALE, "ru", "yandex", "friendly", "/samples/alena.mp3"), VoiceProfile("filipp", "Филипп", VoiceGender.MALE, "ru", "yandex", "neutral", "/samples/filipp.mp3"), VoiceProfile("sv-svetlana", "Светлана", VoiceGender.FEMALE, "ru", "azure", "formal", "/samples/svetlana.mp3"), VoiceProfile("alloy", "Alloy", VoiceGender.MALE, "en", "openai", "neutral", "/samples/alloy.mp3"), ]

def select_voice(gender: VoiceGender, language: str, style: str = "neutral") -> VoiceProfile: candidates = [v for v in VOICE_CATALOG if v.gender == gender and v.language == language and v.style == style] return candidates[0] if candidates else VOICE_CATALOG[0] ### Параметри тембру (prosody)python @dataclass class VoiceSettings: rate: float = 1.0 # скорость: 0.5–2.0 pitch: float = 0.0 # тональность: -20 до +20 полутонов volume: float = 1.0 # громкость: 0.0–2.0

def apply_voice_settings(text: str, settings: VoiceSettings) -> str: """Оборачиваем текст в SSML с параметрами тембра""" rate_map = {0.5: "x-slow", 0.75: "slow", 1.0: "medium", 1.25: "fast", 1.5: "x-fast"} rate_str = f"{int(settings.rate * 100)}%" pitch_str = f"{settings.pitch:+.0f}st"

return f"""<speak>
{text} """ ```### A/B тестування голосів Для оптимізації голосового бренду за метриками задоволеності:```python import random

def get_voice_for_user(user_id: str, test_name: str) -> str: # Детерминированное распределение по user_id hash_val = hash(f"{user_id}:{test_name}") % 100 if hash_val < 50: return "alena" # control else: return "filipp" # variant