Advertisement
Guest User

Untitled

a guest
Jul 30th, 2023
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. import edge_tts
  2. import asyncio
  3. import librosa
  4. import soundfile
  5. import io
  6. import sounddevice as sd
  7. import argparse
  8.  
  9. from inference.infer_tool import Svc
  10.  
  11. def text2tts(text, voice, output_file):
  12. asyncio.run(edge_tts.Communicate(text, voice).save(output_file))
  13. audio, sr = librosa.load(output_file, sr=16000, mono=True)
  14. raw_path = io.BytesIO()
  15. soundfile.write(raw_path, audio, 16000, format="wav")
  16. raw_path.seek(0)
  17. return raw_path
  18.  
  19. def tts2herta(raw_path, model):
  20. out_audio, out_sr = model.infer('speaker0', 0, raw_path, auto_predict_f0=True)
  21. outsound = out_audio.cpu().numpy()
  22. return outsound
  23.  
  24. def main(text, output_file):
  25. voice = "ru-RU-SvetlanaNeural"
  26. model = Svc("Herta-Svc/G_10000.pth", "Herta-Svc/config.json", device='cpu')
  27.  
  28. raw_path = text2tts(text, voice, output_file)
  29. out = tts2herta(raw_path, model)
  30. soundfile.write('out_audio.wav', out, 44100)
  31.  
  32. if __name__ == "__main__":
  33. parser = argparse.ArgumentParser(description="Text-to-Speech using Herta-Svc")
  34. parser.add_argument("-text", type=str, required=True, help="The text to convert to speech")
  35. parser.add_argument("-file_name", type=str, default="output.wav", help="The output file name")
  36. args = parser.parse_args()
  37.  
  38. main(args.text, args.file_name)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement