Реалізація Multi-Speaker TTS (кілька голосів в одній системі)

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Реалізація Multi-Speaker TTS (кілька голосів в одній системі)
Середній
від 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

Реалізація Multi-Speaker TTS (кілька голосів в одній системі) Multi-Speaker TTS — система, де кілька голосів співіснують в рамках однієї архітектури. Необхідна для аудіокниг із кількома персонажами, діалогових сценаріїв, IVR з різними ролями. ### Архітектура multi-speaker системи```python

from dataclasses import dataclass from enum import Enum

class SpeakerRole(Enum): ASSISTANT = "assistant" NARRATOR = "narrator" CHARACTER_1 = "character_1" CHARACTER_2 = "character_2"

@dataclass class Speaker: role: SpeakerRole name: str voice_config: dict reference_audio: str | None = None

class MultiSpeakerTTS: def init(self, speakers: list[Speaker]): self.speakers = {s.role: s for s in speakers} self._init_engines()

def synthesize(self, text: str, role: SpeakerRole) -> bytes:
    speaker = self.speakers[role]
    return self._synthesize_with_config(text, speaker.voice_config)

### Реалізація на XTTS v2python from TTS.api import TTS

tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to("cuda")

Предзагружаем speaker latents для скорости

SPEAKERS = { "narrator": "voices/narrator.wav", "alice": "voices/alice.wav", "bob": "voices/bob.wav", }

def synthesize_dialog(dialog: list[dict]) -> list[bytes]: """ dialog: [{"speaker": "alice", "text": "Привет!"}, {"speaker": "bob", "text": "Здравствуй!"}] """ results = [] for line in dialog: speaker_wav = SPEAKERS[line["speaker"]] wav = tts.tts( text=line["text"], speaker_wav=speaker_wav, language="ru" ) results.append(wav) return results ### Хмарний multi-speaker через Azure Azure Neural TTS підтримує кілька голосів в одному SSML-документі:xml Добрый день! Это Дмитрий. Привет! А это Светлана. ### Монтаж діалогуpython from pydub import AudioSegment

def assemble_dialog(audio_clips: list[bytes], pause_ms: int = 300) -> bytes: combined = AudioSegment.empty() silence = AudioSegment.silent(duration=pause_ms)

for i, clip in enumerate(audio_clips):
    segment = AudioSegment.from_wav(io.BytesIO(clip))
    combined += segment
    if i < len(audio_clips) - 1:
        combined += silence

output = io.BytesIO()
combined.export(output, format="mp3")
return output.getvalue()