refactor: tts engines now use toml config
This commit is contained in:
5 files changed
+13
-15
No files matched your search
+2
-2
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
import random
|
||||
import os
|
||||
from utils import settings
|
||||
from gtts import gTTS
|
||||
|
||||
max_chars = 0
|
||||
@@ -12,7 +12,7 @@ class GTTS:
|
||||
self.voices = []
|
||||
|
||||
def run(self, text, filepath):
|
||||
tts = gTTS(text=text, lang=os.getenv("POSTLANG") or "en", slow=False)
|
||||
tts = gTTS(text=text, lang=settings.config["reddit"]["thread"]["post_lang"] or "en", slow=False)
|
||||
tts.save(filepath)
|
||||
|
||||
def randomvoice(self):
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
import base64
|
||||
import os
|
||||
from utils import settings
|
||||
import random
|
||||
import requests
|
||||
from requests.adapters import HTTPAdapter, Retry
|
||||
@@ -75,7 +75,7 @@ class TikTok: # TikTok Text-to-Speech Wrapper
|
||||
voice = (
|
||||
self.randomvoice()
|
||||
if random_voice
|
||||
else (os.getenv("TIKTOK_VOICE") or random.choice(self.voices["human"]))
|
||||
else (settings.config["settings"]["tts"]["tiktok_voice"] or random.choice(self.voices["human"]))
|
||||
)
|
||||
try:
|
||||
r = requests.post(f"{self.URI_BASE}{voice}&req_text={text}&speaker_map_type=0")
|
||||
|
||||
+3
-3
@@ -2,7 +2,7 @@
|
||||
from boto3 import Session
|
||||
from botocore.exceptions import BotoCoreError, ClientError
|
||||
import sys
|
||||
import os
|
||||
from utils import settings
|
||||
import random
|
||||
|
||||
voices = [
|
||||
@@ -35,11 +35,11 @@ class AWSPolly:
|
||||
if random_voice:
|
||||
voice = self.randomvoice()
|
||||
else:
|
||||
if not os.getenv("AWS_VOICE"):
|
||||
if not settings.config["settings"]["tts"]["aws_polly_voice"]:
|
||||
return ValueError(
|
||||
f"Please set the environment variable AWS_VOICE to a valid voice. options are: {voices}"
|
||||
)
|
||||
voice = str(os.getenv("AWS_VOICE")).capitalize()
|
||||
voice = str(settings.config["settings"]["tts"]["aws_polly_voice"]).capitalize()
|
||||
try:
|
||||
# Request speech synthesis
|
||||
response = polly.synthesize_speech(
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
from pathlib import Path
|
||||
from typing import Tuple
|
||||
import re
|
||||
from os import getenv
|
||||
|
||||
# import sox
|
||||
# from mutagen import MutagenError
|
||||
@@ -12,6 +11,7 @@ from rich.progress import track
|
||||
from moviepy.editor import AudioFileClip, CompositeAudioClip, concatenate_audioclips
|
||||
from utils.console import print_step, print_substep
|
||||
from utils.voice import sanitize_text
|
||||
from utils import settings
|
||||
|
||||
DEFUALT_MAX_LENGTH: int = 50 # video length variable
|
||||
|
||||
@@ -56,7 +56,7 @@ class TTSEngine:
|
||||
print_step("Saving Text to MP3 files...")
|
||||
|
||||
self.call_tts("title", self.reddit_object["thread_title"])
|
||||
if self.reddit_object["thread_post"] != "" and getenv("STORYMODE", "").casefold() == "true":
|
||||
if self.reddit_object["thread_post"] != "" and settings.config["settings"]["storymode"] == True:
|
||||
self.call_tts("posttext", self.reddit_object["thread_post"])
|
||||
|
||||
idx = None
|
||||
@@ -109,7 +109,7 @@ class TTSEngine:
|
||||
clip.close()
|
||||
|
||||
def process_text(text: str):
|
||||
lang = getenv("POSTLANG", "")
|
||||
lang = settings.config["reddit"]["thread"]["post_lang"]
|
||||
new_text = sanitize_text(text)
|
||||
if lang:
|
||||
print_substep("Translating Text...")
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import random
|
||||
import os
|
||||
import requests
|
||||
from requests.exceptions import JSONDecodeError
|
||||
from utils import settings
|
||||
|
||||
voices = [
|
||||
"Brian",
|
||||
@@ -35,11 +35,11 @@ class StreamlabsPolly:
|
||||
if random_voice:
|
||||
voice = self.randomvoice()
|
||||
else:
|
||||
if not os.getenv("STREAMLABS_VOICE"):
|
||||
if not settings.config["settings"]["tts"]["streamlabs_polly_voice"]:
|
||||
return ValueError(
|
||||
f"Please set the environment variable STREAMLABS_VOICE to a valid voice. options are: {voices}"
|
||||
)
|
||||
voice = str(os.getenv("STREAMLABS_VOICE")).capitalize()
|
||||
voice = str(settings.config["settings"]["tts"]["streamlabs_polly_voice"]).capitalize()
|
||||
body = {"voice": voice, "text": text, "service": "polly"}
|
||||
response = requests.post(self.url, data=body)
|
||||
try:
|
||||
@@ -56,5 +56,3 @@ class StreamlabsPolly:
|
||||
def randomvoice(self):
|
||||
return random.choice(self.voices)
|
||||
|
||||
|
||||
# StreamlabsPolly().run(text=str('hi hi ' * 92)[1:], filepath='hello.mp3', random_voice=True)
|
||||
Reference in new issue
Block a user