| 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 |
| ) |