voicebot / app.py
datbkpro's picture
Update app.py
08754c1 verified
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():
# Initialize clients and services
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)
# Initialize core systems
rag_system = EnhancedRAGSystem()
tts_service = EnhancedTTSService()
wikipedia_processor = WikipediaProcessor()
# Initialize services
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")
# FIXED: Sử dụng client thay vì groq_client
hybrid_service = HybridStreamingService(
groq_client=client, # Sửa thành client
rag_system=rag_system,
tts_service=tts_service,
openai_key=os.getenv("OPENAI_API_KEY") # Có thể là None
)
# Create Gradio interface
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
)