Реалізація Speech-to-Speech зі збереженням голосу мовця

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

Реалізація Speech-to-Speech із збереженням голосу мовника Speech-to-Speech із збереженням голосу (Voice Preservation S2S) перекладає мову іншою мовою, зберігаючи тембр, акцент і характеристики голосу оригінального мовця. Це принципово складніше за стандартний S2S, де використовується фіксований TTS-голос. ### Компоненти voice preservation pipeline```

Source Audio ↓ [1] Speaker Encoder → Speaker Embedding (d-vector) ↓ [2] STT → Transcript (source language) ↓ [3] Machine Translation → Transcript (target language) ↓ [4] TTS with Voice Conversion → Output Audio (использует speaker embedding из шага 1) ### Вилучення speaker embeddingpython from speechbrain.pretrained import EncoderClassifier import torchaudio import torch

encoder = EncoderClassifier.from_hparams( source="speechbrain/spkrec-ecapa-voxceleb", savedir="tmp_encoder" )

def extract_speaker_embedding(audio_path: str) -> torch.Tensor: signal, sr = torchaudio.load(audio_path) if sr != 16000: signal = torchaudio.functional.resample(signal, sr, 16000) embedding = encoder.encode_batch(signal) return embedding.squeeze() # (192,) вектор ### Zero-shot TTS з conditioning на embedding XTTS v2 приймає референсне аудіо і кондиціонується на нього при синтезі:python from TTS.api import TTS

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

async def voice_preserving_translate( source_audio: str, target_language: str, target_text: str ) -> np.ndarray: # XTTS использует source_audio для извлечения голосовых характеристик wav = tts.tts( text=target_text, speaker_wav=source_audio, # исходное аудио как референс голоса language=target_language ) return np.array(wav) ### SeamlessM4T (Meta) — end-to-end підхід Meta SeamlessM4T підтримує S2ST з частковим збереженням просодики:python from transformers import SeamlessM4Tv2ForSpeechToSpeech, AutoProcessor import torchaudio

processor = AutoProcessor.from_pretrained("facebook/seamless-m4t-v2-large") model = SeamlessM4Tv2ForSpeechToSpeech.from_pretrained( "facebook/seamless-m4t-v2-large" ).to("cuda")

audio, sr = torchaudio.load("source.wav") inputs = processor(audios=audio, src_lang="rus", return_tensors="pt").to("cuda")

with torch.no_grad(): output = model.generate(**inputs, tgt_lang="eng")

translated_audio = output[0].cpu().numpy().squeeze()