Я видел проект за последние два дняReal-Time-Voice-Cloning, который имитирует голос человека через фрагмент голоса. Я все еще нахожу это интересным.
Вот видео о вступлении автора:BV1W4411B7ge. Однако я думаю, что клиентское программное обеспечение, которое он дал, не так просто, как прямая загрузка кода.
Здесь я использую голос Трампа в качестве примера.
Строительство окружающей среды
Сначала клонируйте код
git clone https://github.com/CorentinJ/Real-Time-Voice-Cloning.git
cd Real-Time-Voice-Cloning
Установить зависимости
Окружение здесь относительно просто построить, и в основном ямы не встречаются.Шаги следующие:
- Установите Python3.6 или Python3.7
- установить ffmpeg
- Установите PyTorch (>=1.0.1)
- Наконец установил зависимости через pip:
pip3 install -r requirements.txt
Загрузите предварительно обученную модель
Есть три параметра модели (кодер, синтезатор, вокодер), просто папку save_models положить в соответствующую папку.
Подготовьте аудиоданные
Здесь, чтобы сымитировать голос Трампа, я нашел речь Трампа на YouTube, перехватил короткий абзац и сохранил его в виде файла.
генерировать речь
Далее можно генерировать речь, вот блокнот jupyter.
модель нагрузки
# 导入模型参数
from IPython.display import Audio
from IPython.utils import io
from synthesizer.inference import Synthesizer
from encoder import inference as encoder
from vocoder import inference as vocoder
from pathlib import Path
import numpy as np
import librosa
encoder_weights = Path("encoder/saved_models/pretrained.pt")
vocoder_weights = Path("vocoder/saved_models/pretrained/pretrained.pt")
syn_dir = Path("synthesizer/saved_models/logs-pretrained/taco_pretrained")
encoder.load_model(encoder_weights)
synthesizer = Synthesizer(syn_dir)
vocoder.load_model(vocoder_weights)
Вызвать модель и сгенерировать речь
#@title Deep vocoder
def synth(text):
in_fpath = Path("donald_trump_hosts_medal_presentation_ceremony_-820681363564909524.wav") # 特朗普的一小段声音文件
reprocessed_wav = encoder.preprocess_wav(in_fpath)
original_wav, sampling_rate = librosa.load(in_fpath)
preprocessed_wav = encoder.preprocess_wav(original_wav, sampling_rate)
embed = encoder.embed_utterance(preprocessed_wav)
print("Synthesizing new audio...")
with io.capture_output() as captured:
specs = synthesizer.synthesize_spectrograms([text], [embed])
generated_wav = vocoder.infer_waveform(specs[0])
generated_wav = np.pad(generated_wav, (0, synthesizer.sample_rate), mode="constant")
librosa.output.write_wav("output_trump_voice.wav", generated_wav, synthesizer.sample_rate)
display(Audio(generated_wav, rate=synthesizer.sample_rate))
synth("Chinese government is so powerful, and I love the Republic of China") # 合成语音
Окончательный результат выглядит следующим образом:ты лардо.GitHub.IO/trump_voice…
Полный код: ссылка:disk.baidu.com/yes/1NF TU26GW…Пароль: ezl8
Код этой статьи можно посмотретьdemo_trump_voice_sythesis.ipynb