Spaces:
Sleeping
Sleeping
File size: 1,801 Bytes
25681f6 7fc6e29 1b41e6d 7fc6e29 25681f6 7fc6e29 25681f6 7fc6e29 37a2817 7fc6e29 7877a4f 7fc6e29 1b41e6d 7fc6e29 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
import gradio as gr
from transformers import pipeline
import edge_tts
import numpy as np
# بارگذاری مدل تبدیل گفتار به متن (Whisper small برای فارسی)
stt = pipeline("automatic-speech-recognition", model="openai/whisper-small")
# بارگذاری مدل چتبات (GPT2 تنظیمشده برای فارسی)
chatbot = pipeline("text-generation", model="HooshvareLab/gpt2-fa")
# تابع تبدیل متن به گفتار با استفاده از edge-tts
def tts(text, voice="fa-IR-FaridNeural"):
communicate = edge_tts.Communicate(text, voice)
audio_data = b"".join([chunk["data"] for chunk in communicate.stream() if chunk["type"] == "audio"])
audio_array = np.frombuffer(audio_data, dtype=np.int16)
sample_rate = 24000 # طبق مستندات edge-tts
return sample_rate, audio_array
# تابع اصلی: خط لوله صوتی به صوتی
def audio_to_audio(audio_input):
sample_rate_in, data_in = audio_input
audio = {"array": data_in, "sampling_rate": sample_rate_in}
# مرحله 1: تبدیل گفتار به متن
text = stt(audio)["text"]
# مرحله 2: تولید پاسخ چتبات
response = chatbot(text, max_length=50, num_return_sequences=1)[0]["generated_text"]
# مرحله 3: تبدیل متن به گفتار
sample_rate_out, data_out = tts(response)
return (sample_rate_out, data_out)
# رابط کاربری Gradio
demo = gr.Interface(
fn=audio_to_audio,
inputs=gr.Audio(source="microphone", type="numpy"),
outputs=gr.Audio(type="numpy"),
title="چتبات صوتی فارسی",
description="به فارسی صحبت کنید و برنامه به فارسی پاسخ میدهد."
)
# اجرای برنامه
demo.launch() |