juliandreykorn commited on
Commit
a9dae97
1 Parent(s): 8b65bcb

Adds speaker_wav capability

Browse files
Files changed (1) hide show
  1. handler.py +14 -6
handler.py CHANGED
@@ -16,26 +16,34 @@ class EndpointHandler:
16
  self.tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to(device)
17
 
18
  def __call__(self, data: Dict[str, Any]) -> List[Dict[str, Any]]:
 
19
  text = data['inputs']
20
  if text == 'url':
21
  response = requests.get(data.get('url'))
22
  text = response.text
23
  speaker = data.get('speaker', None)
24
- speaker_wav = data.get('speaker_wav', None)
25
  language = data.get('language', 'en')
 
 
26
  if speaker is not None:
27
  if speaker in available_speakers:
28
- #speaker_wav = f"/path/to/{speaker}.wav"
29
- timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
30
- output_file = f"/tmp/TTS_{timestamp}.wav"
31
- self.tts.tts_to_file(text=text, file_path=output_file, speaker=speaker, language="en")
32
  # Save or process the outputs as needed
33
  result = self.upload_file_and_get_url(output_file)
34
  os.remove(output_file)
35
  return result
36
  else:
37
  return "Invalid speaker specified."
38
-
 
 
 
 
 
 
 
 
39
  return "No speaker specified."
40
 
41
  def upload_file_and_get_url(self, file_path):
 
16
  self.tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to(device)
17
 
18
  def __call__(self, data: Dict[str, Any]) -> List[Dict[str, Any]]:
19
+ speaker_path = "/tmp/speaker.wav"
20
  text = data['inputs']
21
  if text == 'url':
22
  response = requests.get(data.get('url'))
23
  text = response.text
24
  speaker = data.get('speaker', None)
25
+ speaker_wav_url = data.get('speaker_wav_url', None)
26
  language = data.get('language', 'en')
27
+ timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
28
+ output_file = f"/tmp/TTS_{timestamp}.wav"
29
  if speaker is not None:
30
  if speaker in available_speakers:
31
+ self.tts.tts_to_file(text=text, file_path=output_file, speaker=speaker, language=language)
 
 
 
32
  # Save or process the outputs as needed
33
  result = self.upload_file_and_get_url(output_file)
34
  os.remove(output_file)
35
  return result
36
  else:
37
  return "Invalid speaker specified."
38
+ elif speaker_wav_url is not None:
39
+ with open(speaker_path, 'wb') as file:
40
+ file.write(requests.get(speaker_wav_url).content)
41
+ self.tts.tts_to_file(text=text, file_path=output_file, speaker_wav=speaker_path, language=language)
42
+ # Save or process the outputs as needed
43
+ result = self.upload_file_and_get_url(output_file)
44
+ os.remove(output_file)
45
+ os.remove(speaker_path)
46
+ return result
47
  return "No speaker specified."
48
 
49
  def upload_file_and_get_url(self, file_path):