DeepVoiceChat / app.py
imadehermanto's picture
Create app.py
7734284 verified
import gradio as gr
from openai import OpenAI
import torch
from models import build_model
from kokoro import generate
# Fungsi untuk menginisialisasi model Kokoro-82M
def init_kokoro_model():
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model = build_model('kokoro-v0_19.pth', device)
voice_name = 'af' # Default voice
voicepack = torch.load(f'voices/{voice_name}.pt', weights_only=True).to(device)
return model, voicepack, voice_name
# Inisialisasi model Kokoro-82M
MODEL, VOICEPACK, VOICE_NAME = init_kokoro_model()
# Fungsi untuk menghasilkan respons dari Deepseek
def get_deepseek_response(api_key, user_input):
client = OpenAI(api_key=api_key, base_url="https://api.deepseek.com")
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": user_input},
],
max_tokens=1024,
temperature=0.7,
stream=False
)
return response.choices[0].message.content
# Fungsi untuk mengubah teks menjadi suara menggunakan Kokoro-82M
def text_to_speech(text):
audio, _ = generate(MODEL, text, VOICEPACK, lang=VOICE_NAME[0])
return (24000, audio)
# Fungsi utama yang akan dipanggil oleh Gradio
def chat_with_ai(api_key, user_input):
# Mendapatkan respons dari Deepseek
response_text = get_deepseek_response(api_key, user_input)
# Mengubah respons teks menjadi suara
audio_output = text_to_speech(response_text)
return response_text, audio_output
# Membuat antarmuka Gradio
with gr.Blocks() as demo:
gr.Markdown("# AI Chatbot with Deepseek and Kokoro-82M")
with gr.Row():
api_key_input = gr.Textbox(label="Deepseek API Key", placeholder="Masukkan API Key Anda di sini")
user_input = gr.Textbox(label="Input Anda", placeholder="Ketik pesan Anda di sini")
with gr.Row():
text_output = gr.Textbox(label="Respons AI", interactive=False)
audio_output = gr.Audio(label="Suara AI")
submit_button = gr.Button("Kirim")
submit_button.click(
fn=chat_with_ai,
inputs=[api_key_input, user_input],
outputs=[text_output, audio_output]
)
# Menjalankan aplikasi Gradio
demo.launch()