All checks were successful
Gitea Docker Redeploy / Redploy-App-on-self-via-SSH (push) Successful in 1m18s
89 lines
1.9 KiB
Python
89 lines
1.9 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."
|
|
"""
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|