|
|
import gradio as gr |
|
|
import groq |
|
|
import os |
|
|
from config.settings import settings |
|
|
from core.rag_system import EnhancedRAGSystem |
|
|
from core.tts_service import EnhancedTTSService |
|
|
from core.wikipedia_processor import WikipediaProcessor |
|
|
from services.audio_service import AudioService |
|
|
from services.chat_service import ChatService |
|
|
from services.image_service import ImageService |
|
|
from services.streaming_voice_service import StreamingVoiceService |
|
|
from services.voice_coding_service import VoiceCodingService |
|
|
from services.openai_realtime_service import HybridStreamingService |
|
|
from services.sambanova_voice_service import SambanovaVoiceService |
|
|
from ui.components import create_custom_css, create_header |
|
|
from ui.tabs import create_all_tabs |
|
|
|
|
|
def main(): |
|
|
|
|
|
if not settings.GROQ_API_KEY: |
|
|
raise ValueError("Please set the GROQ_API_KEY environment variable.") |
|
|
|
|
|
client = groq.Client(api_key=settings.GROQ_API_KEY) |
|
|
|
|
|
|
|
|
rag_system = EnhancedRAGSystem() |
|
|
tts_service = EnhancedTTSService() |
|
|
wikipedia_processor = WikipediaProcessor() |
|
|
|
|
|
|
|
|
audio_service = AudioService(client, rag_system, tts_service) |
|
|
chat_service = ChatService(client, rag_system, tts_service) |
|
|
image_service = ImageService(client) |
|
|
streaming_voice_service = StreamingVoiceService(client, rag_system, tts_service) |
|
|
voice_coding_service = VoiceCodingService(client) |
|
|
sambanova_voice_service = None |
|
|
if os.environ.get("SAMBANOVA_API_KEY"): |
|
|
sambanova_voice_service = SambanovaVoiceService() |
|
|
print("✅ Sambanova Voice Service initialized") |
|
|
else: |
|
|
print("⚠️ Sambanova API key not found, skipping Sambanova service") |
|
|
|
|
|
hybrid_service = HybridStreamingService( |
|
|
groq_client=client, |
|
|
rag_system=rag_system, |
|
|
tts_service=tts_service, |
|
|
openai_key=os.getenv("OPENAI_API_KEY") |
|
|
) |
|
|
|
|
|
|
|
|
with gr.Blocks( |
|
|
css=create_custom_css(), |
|
|
theme=gr.themes.Soft(primary_hue="orange", neutral_hue="slate") |
|
|
) as demo: |
|
|
create_header() |
|
|
gr.Markdown("### 🌐 Hệ thống Đa ngôn ngữ - Tự động chuyển đổi model theo ngôn ngữ") |
|
|
create_all_tabs( |
|
|
audio_service=audio_service, |
|
|
chat_service=chat_service, |
|
|
image_service=image_service, |
|
|
rag_system=rag_system, |
|
|
tts_service=tts_service, |
|
|
wikipedia_processor=wikipedia_processor, |
|
|
streaming_voice_service=streaming_voice_service, |
|
|
hybrid_service=hybrid_service, |
|
|
voice_coding_service = voice_coding_service, |
|
|
sambanova_voice_service = sambanova_voice_service |
|
|
) |
|
|
|
|
|
return demo |
|
|
|
|
|
if __name__ == "__main__": |
|
|
demo = main() |
|
|
demo.launch( |
|
|
share=True, |
|
|
server_name="0.0.0.0", |
|
|
server_port=7860 |
|
|
) |