Tobias Weise 579b76ebd5
All checks were successful
Gitea Docker Redeploy / Redploy-App-on-self-via-SSH (push) Successful in 19s
added lib folder and model download at start... hope it works
2024-08-20 17:47:33 +02:00

91 lines
2.0 KiB
Python

import os, time
import os.path
from datetime import datetime, date
import pyttsx3
"""
flite -voice slt -t "This example is useful when there is a need to convert the contents of a file to speech. It can simplify tasks such as reading out the contents of a document or generating voiceovers for specific text files."
"""
#espeak -v mb-en1 -s 120 "Hello world"
def text_to_speech(text: str) -> str:
unix_timestamp = datetime.now().timestamp()
txt_file_path = "./public/speech_%s.txt" % unix_timestamp
with open(txt_file_path, "w") as f:
f.write(text)
file_name = f'speech_{unix_timestamp}.wav'
file_path = f'./public/{file_name}'
#os.system('flite -voice slt -o %s -t "%s"' % (file_path, text))
os.system('flite -voice slt -o %s -f %s' % (file_path, txt_file_path))
return file_name
def text_to_speech2(text: str) -> str:
engine = pyttsx3.init()
def get_voice(s):
for v in engine.getProperty("voices"):
if s == v.id:
return v
def set_voice(v):
engine.setProperty("voice", v.id)
def set_volume(n):
engine.setProperty('volume', engine.getProperty('volume') + n)
def set_rate(n):
engine.setProperty('rate', engine.getProperty('rate') + n)
#voices = engine.getProperty('voices')
#engine.setProperty('voice', voices[1].id)
set_voice(get_voice("english"))
set_volume(-5.0)
set_rate(-40)
#espeak -v mb-en1 -s 120 "Hello world"
#sudo apt-get install mbrola mbrola-en1
unix_timestamp = datetime.now().timestamp()
file_name = f'speech_{unix_timestamp}.mp3'
file_path = f'./public/{file_name}'
engine.save_to_file(text, file_path)
engine.runAndWait()
timeout = 10
t = 0
step = 0.1
while not os.path.isfile(file_path):
time.sleep(step)
t += step
if t > timeout:
raise Exception("Timeout(%s s) for creating speech.mp3!" % timeout)
time.sleep(step)
return file_name