File size: 1,477 Bytes
6feeeab 8b984d0 6feeeab |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import datasets.arrow_dataset
import numpy as np
import torch
import transformers.pipelines.text_to_audio
from datasets import load_dataset
from transformers import pipeline
def load_model() -> transformers.pipelines.text_to_audio.TextToAudioPipeline:
"""
Подгрузка модели преобразования текста в речь
:return: class TextToAudioPipeline
"""
return pipeline("text-to-speech", "microsoft/speecht5_tts")
def load_speaker_dataset() -> datasets.arrow_dataset.Dataset:
"""
Подгрузка датасета для озвучивания текста
:return: class Dataset
"""
return load_dataset("Matthijs/cmu-arctic-xvectors", split="validation")
def text_to_speech(
text: str,
synthesiser: transformers.pipelines.text_to_audio.TextToAudioPipeline,
embeddings_dataset: datasets.arrow_dataset.Dataset
) -> (np.ndarray, int):
"""
Преобразование текста в речь
:param text: Текст
:param synthesiser: pipeline для озвучивания текста
:param embeddings_dataset: dataset для озвучивания текста
:return: tuple (audio data, sampling rate)
"""
speaker_embedding = torch.tensor(embeddings_dataset[7306]["xvector"]).unsqueeze(0)
speech = synthesiser(text, forward_params={"speaker_embeddings": speaker_embedding})
return speech['audio'], speech['sampling_rate']
|