| | import os |
| | import platform |
| | import subprocess |
| |
|
| | import gradio as gr |
| |
|
| | from shortGPT.api_utils.eleven_api import ElevenLabsAPI |
| | from shortGPT.config.api_db import ApiKeyManager |
| | from shortGPT.config.asset_db import AssetDatabase |
| |
|
| |
|
| | class AssetComponentsUtils: |
| | EDGE_TTS = "Free EdgeTTS (lower quality)" |
| | COQUI_TTS = "Free CoquiTTS (needs a powerful GPU)" |
| | ELEVEN_TTS = "ElevenLabs(Very High Quality)" |
| |
|
| | COQUI_TTS_VOICES = [ |
| | "Claribel Dervla", |
| | "Daisy Studious", |
| | "Gracie Wise", |
| | "Tammie Ema", |
| | "Alison Dietlinde", |
| | "Ana Florence", |
| | "Annmarie Nele", |
| | "Asya Anara", |
| | "Brenda Stern", |
| | "Gitta Nikolina", |
| | "Henriette Usha", |
| | "Sofia Hellen", |
| | "Tammy Grit", |
| | "Tanja Adelina", |
| | "Vjollca Johnnie", |
| | "Andrew Chipper", |
| | "Badr Odhiambo", |
| | "Dionisio Schuyler", |
| | "Royston Min", |
| | "Viktor Eka", |
| | "Abrahan Mack", |
| | "Adde Michal", |
| | "Baldur Sanjin", |
| | "Craig Gutsy", |
| | "Damien Black", |
| | "Gilberto Mathias", |
| | "Ilkin Urbano", |
| | "Kazuhiko Atallah", |
| | "Ludvig Milivoj", |
| | "Suad Qasim", |
| | "Torcull Diarmuid", |
| | "Viktor Menelaos", |
| | "Zacharie Aimilios", |
| | "Nova Hogarth", |
| | "Maja Ruoho", |
| | "Uta Obando", |
| | "Lidiya Szekeres", |
| | "Chandra MacFarland", |
| | "Szofi Granger", |
| | "Camilla Holmström", |
| | "Lilya Stainthorpe", |
| | "Zofija Kendrick", |
| | "Narelle Moon", |
| | "Barbora MacLean", |
| | "Alexandra Hisakawa", |
| | "Alma María", |
| | "Rosemary Okafor", |
| | "Ige Behringer", |
| | "Filip Traverse", |
| | "Damjan Chapman", |
| | "Wulf Carlevaro", |
| | "Aaron Dreschner", |
| | "Kumar Dahl", |
| | "Eugenio Mataracı", |
| | "Ferran Simen", |
| | "Xavier Hayasaka", |
| | "Luis Moray", |
| | "Marcos Rudaski", |
| | ] |
| |
|
| | instance_background_video_checkbox = None |
| | instance_background_music_checkbox = None |
| | instance_voiceChoice: dict[gr.Radio] = {} |
| | instance_voiceChoiceTranslation: dict[gr.Radio] = {} |
| |
|
| | @classmethod |
| | def getBackgroundVideoChoices(cls): |
| | df = AssetDatabase.get_df() |
| | choices = list(df.loc["background video" == df["type"]]["name"])[:20] |
| | return choices |
| |
|
| | @classmethod |
| | def getBackgroundMusicChoices(cls): |
| | df = AssetDatabase.get_df() |
| | choices = list(df.loc["background music" == df["type"]]["name"])[:20] |
| | return choices |
| |
|
| | @classmethod |
| | def getElevenlabsVoices(cls): |
| | api_key = ApiKeyManager.get_api_key("ELEVEN LABS") |
| | voices = list(reversed(ElevenLabsAPI(api_key).get_voices().keys())) |
| | return voices |
| |
|
| | @classmethod |
| | def start_file(cls, path): |
| | if platform.system() == "Windows": |
| | os.startfile(path) |
| | elif platform.system() == "Darwin": |
| | subprocess.Popen(["open", path]) |
| | else: |
| | subprocess.Popen(["xdg-open", path]) |
| |
|
| | @classmethod |
| | def background_video_checkbox(cls): |
| | if cls.instance_background_video_checkbox is None: |
| | cls.instance_background_video_checkbox = gr.CheckboxGroup( |
| | choices=cls.getBackgroundVideoChoices(), |
| | interactive=True, |
| | label="Choose background video", |
| | ) |
| | return cls.instance_background_video_checkbox |
| |
|
| | @classmethod |
| | def background_music_checkbox(cls): |
| | if cls.instance_background_music_checkbox is None: |
| | cls.instance_background_music_checkbox = gr.CheckboxGroup( |
| | choices=cls.getBackgroundMusicChoices(), |
| | interactive=True, |
| | label="Choose background music", |
| | ) |
| | return cls.instance_background_music_checkbox |
| |
|
| | @classmethod |
| | def voiceChoice(cls, provider: str = None): |
| | if provider == None: |
| | provider = cls.ELEVEN_TTS |
| | if cls.instance_voiceChoice.get(provider, None) is None: |
| | if provider == cls.ELEVEN_TTS: |
| | print("getting eleven voices") |
| | cls.instance_voiceChoice[provider] = gr.Radio( |
| | cls.getElevenlabsVoices(), |
| | label="Elevenlabs voice", |
| | value="Antoni", |
| | interactive=True, |
| | ) |
| | elif provider == cls.COQUI_TTS: |
| | print("getting coqui voices") |
| | cls.instance_voiceChoice[provider] = gr.Dropdown( |
| | cls.COQUI_TTS_VOICES, |
| | label="CoquiTTS voice", |
| | value="Ana Florence", |
| | interactive=True, |
| | ) |
| | return cls.instance_voiceChoice[provider] |
| |
|
| | @classmethod |
| | def voiceChoiceTranslation(cls, provider: str = None): |
| | if provider == None: |
| | provider = cls.ELEVEN_TTS |
| | if cls.instance_voiceChoiceTranslation.get(provider, None) is None: |
| | if provider == cls.ELEVEN_TTS: |
| | cls.instance_voiceChoiceTranslation[provider] = gr.Radio( |
| | cls.getElevenlabsVoices(), |
| | label="Elevenlabs voice", |
| | value="Antoni", |
| | interactive=True, |
| | ) |
| | elif provider == cls.COQUI_TTS: |
| | cls.instance_voiceChoiceTranslation[provider] = gr.Radio( |
| | cls.COQUI_TTS_VOICES, |
| | label="CoquiTTS voice", |
| | value="Ana Florence", |
| | interactive=True, |
| | ) |
| | return cls.instance_voiceChoiceTranslation[provider] |
| |
|