2024-02-15 11:23:36 +01:00
import moviepy
2024-02-15 12:27:13 +01:00
import time
import os
2024-02-15 11:23:36 +01:00
from . . import engines
2024-02-15 12:27:13 +01:00
from . . utils . prompting import get_prompt
2024-02-15 11:23:36 +01:00
2024-02-15 17:48:47 +01:00
class GenerationContext :
def __init__ (
self , powerfulllmengine , simplellmengine , scriptengine , ttsengine
) - > None :
self . powerfulllmengine : engines . LLMEngine . BaseLLMEngine = powerfulllmengine
2024-02-15 12:27:13 +01:00
self . powerfulllmengine . ctx = self
2024-02-15 17:48:47 +01:00
self . simplellmengine : engines . LLMEngine . BaseLLMEngine = simplellmengine
2024-02-15 12:27:13 +01:00
self . simplellmengine . ctx = self
2024-02-15 11:23:36 +01:00
2024-02-15 17:48:47 +01:00
self . scriptengine : engines . ScriptEngine . BaseScriptEngine = scriptengine
2024-02-15 11:23:36 +01:00
self . scriptengine . ctx = self
2024-02-15 17:48:47 +01:00
self . ttsengine : engines . TTSEngine . BaseTTSEngine = ttsengine
2024-02-15 11:23:36 +01:00
self . ttsengine . ctx = self
2024-02-15 17:48:47 +01:00
2024-02-15 12:27:13 +01:00
def setup_dir ( self ) :
self . dir = f " output/ { time . time ( ) } "
os . makedirs ( self . dir )
2024-02-15 18:03:09 +01:00
def get_file_path ( self , name : str ) - > str :
return os . path . join ( self . dir , name )
2024-02-15 12:27:13 +01:00
2024-02-15 11:23:36 +01:00
def process ( self ) :
2024-02-15 17:48:47 +01:00
# IMPORTANT NOTE: All methods called here are expected to be defined as abstract methods in the base classes, if not there is an issue with the engine implementation.
2024-02-15 12:27:13 +01:00
self . setup_dir ( )
script = self . scriptengine . generate ( )
2024-02-15 18:03:09 +01:00
timed_script = self . ttsengine . synthesize ( script , self . get_file_path ( " tts.wav " ) )