from typing import Dict, Any import logging import torch import soundfile as sf from transformers import AutoTokenizer, AutoModelForTextToWaveform import cloudinary.uploader import tkinter as tk from tkinter import ttk import pygame # Configure logging logging.basicConfig(level=logging.DEBUG) # Configure logging logging.basicConfig(level=logging.WARNING) class EndpointHandler(): def __init__(self, path=""): self.tokenizer = AutoTokenizer.from_pretrained("facebook/mms-tts-eng") self.model= AutoModelForTextToWaveform.from_pretrained("facebook/mms-tts-eng") pygame.init() def __call__(self, data: Dict[str, Any]) -> Dict[str, Any]: # Prepare the payload with input data logging.warning(f"------input_data-- {str(data)}") payload = str(data) logging.warning(f"payload----{str(payload)}") # Set headers with API token inputs = self.tokenizer(payload, return_tensors="pt") # Generate the waveform from the input text with torch.no_grad(): outputs = self.model(**inputs) # Save the audio to a file sf.write("StoryAudio.wav", outputs["waveform"][0].numpy(), self.model.config.sampling_rate) uploadGraphFile("StoryAudio.wav") playAudioFile() #return 'StoryAudio.wav' # Check if the request was successful def uploadGraphFile(fileName): # Configure Cloudinary credentials cloudinary.config( cloud_name = "dm9tdqvp6", api_key ="793865869491345", api_secret = "0vhdvBoM35IWcO29NyI04Qj1PMo" ) # Upload a file to Cloudinary result = cloudinary.uploader.upload(fileName, folder="poc-graph", resource_type="raw") return result def play_audio(): pygame.mixer.music.load("StoryAudio.wav") pygame.mixer.music.play() def stop_audio(): pygame.mixer.music.stop() def playAudioFile(): root = tk.Tk() root.title("Audio Player") # Create a play button play_button = tk.Button(root, text="Play", command=play_audio) play_button.pack() # Create a stop button stop_button = tk.Button(root, text="Stop", command=stop_audio) stop_button.pack() # Create a progress bar progress_bar = ttk.Progressbar(root, orient="horizontal", length=200, mode="determinate") progress_bar.pack() root.mainloop()