

# Copyright 2023 The HuggingFace Inc. team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import torch

from ..models.speechta import SpeechTaForTextToSpeech, SpeechTaHifiGan, SpeechTaProcessor
from ..utils import is_datasets_available
from .base import PipelineTool


if is_datasets_available():
			from datasets import load_dataset

class 							UpperCAmelCase_						(     __lowercase  ):
							"""simple docstring"""







							UpperCAmelCase__			:		Tuple             =       "microsoft/speecht5_tts"
							UpperCAmelCase__			:		int             =       (
							    "This is a tool that reads an English text out loud. It takes an input named `text` which should contain the "
							    "text to read (in English) and returns a waveform object containing the sound."
							)
							UpperCAmelCase__			:		List[Any]             =       "text_reader"
							UpperCAmelCase__			:		Optional[Any]             =       SpeechTaProcessor
							UpperCAmelCase__			:		Union[str, Any]             =       SpeechTaForTextToSpeech
							UpperCAmelCase__			:		Union[str, Any]             =       SpeechTaHifiGan

							UpperCAmelCase__			:		Dict             =       ["text"]
							UpperCAmelCase__			:		str             =       ["audio"]


							def 							__lowercase							(     self			)       ->       Tuple:
												if self.post_processor is None:
																	_a      :       str   =						'''microsoft/speecht5_hifigan'''
												super().setup()


							def 							__lowercase							(     self			,				_a			,				_a=None			)       ->       Optional[Any]:
												_a      :       Union[str, Any]   =						self.pre_processor(text=_a			,				return_tensors='''pt'''			,				truncation=_a			)

												if speaker_embeddings is None:
																	if not is_datasets_available():
																						raise ImportError('''Datasets needs to be installed if not passing speaker embeddings.'''			)

																	_a      :       Dict   =						load_dataset('''Matthijs/cmu-arctic-xvectors'''			,				split='''validation'''			)
																	_a      :       List[str]   =						torch.tensor(embeddings_dataset[7_3_0_5]['''xvector''']			).unsqueeze(0			)

												return {"input_ids": inputs["input_ids"], "speaker_embeddings": speaker_embeddings}


							def 							__lowercase							(     self			,				_a			)       ->       List[str]:
												with torch.no_grad():
																	return self.model.generate_speech(**_a			)




							def 							__lowercase							(     self			,				_a			)       ->       Tuple:
												with torch.no_grad():
																	return self.post_processor(_a			).cpu().detach()








'''simple docstring'''





# coding=utf-8
# Copyright 2020 The HuggingFace Inc. team.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# this script dumps information about the environment

import os
import sys

import transformers


__a  			=						"3"

print("Python version:", sys.version)
print("transformers version:", transformers.__version__)

try:
       import torch

       print("Torch version:", torch.__version__)
       print("Cuda available:", torch.cuda.is_available())
       print("Cuda version:", torch.version.cuda)
       print("CuDNN version:", torch.backends.cudnn.version())
       print("Number of GPUs available:", torch.cuda.device_count())
       print("NCCL version:", torch.cuda.nccl.version())
except ImportError:
       print("Torch version:", None)

try:
       import deepspeed

       print("DeepSpeed version:", deepspeed.__version__)
except ImportError:
       print("DeepSpeed version:", None)

try:
       import tensorflow as tf

       print("TensorFlow version:", tf.__version__)
       print("TF GPUs available:", bool(tf.config.list_physical_devices("GPU")))
       print("Number of TF GPUs available:", len(tf.config.list_physical_devices("GPU")))
except ImportError:
       print("TensorFlow version:", None)
