Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -8,7 +8,7 @@ import soundfile as sf
|
|
8 |
from pydub import AudioSegment
|
9 |
from telegram import Update
|
10 |
from telegram.ext import ApplicationBuilder, MessageHandler, filters, CommandHandler
|
11 |
-
from transformers import pipeline, AutoTokenizer,
|
12 |
from huggingface_hub import login
|
13 |
import asyncio
|
14 |
from collections import defaultdict
|
@@ -33,12 +33,8 @@ try:
|
|
33 |
)
|
34 |
|
35 |
# 2. نموذج توليف الصوت (نموذج بديل)
|
36 |
-
|
37 |
-
"
|
38 |
-
token=os.getenv("HF_TOKEN")
|
39 |
-
)
|
40 |
-
tts_model = VitsModel.from_pretrained(
|
41 |
-
"tts_models/arabic/arabic_tts",
|
42 |
token=os.getenv("HF_TOKEN")
|
43 |
)
|
44 |
|
@@ -98,10 +94,10 @@ async def generate_response(text: str, user_id: str) -> str:
|
|
98 |
|
99 |
async def text_to_speech(text: str) -> None:
|
100 |
try:
|
101 |
-
inputs =
|
102 |
with torch.no_grad():
|
103 |
-
output = tts_model(**inputs
|
104 |
-
waveform = output
|
105 |
sf.write("bot_response.wav", waveform, tts_model.config.sampling_rate)
|
106 |
except Exception as e:
|
107 |
logger.error(f"فشل تحويل النص إلى صوت: {str(e)}")
|
@@ -118,7 +114,7 @@ async def process_voice(update: Update, context):
|
|
118 |
|
119 |
user_text = await speech_to_text("user_voice.ogg")
|
120 |
if not user_text:
|
121 |
-
await update.message.reply_text("لم أتمكن من فهم الصوت. يرجى المحاولة مرة أخرى.")
|
122 |
return
|
123 |
|
124 |
bot_response = await generate_response(user_text, str(user_id))
|
|
|
8 |
from pydub import AudioSegment
|
9 |
from telegram import Update
|
10 |
from telegram.ext import ApplicationBuilder, MessageHandler, filters, CommandHandler
|
11 |
+
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
|
12 |
from huggingface_hub import login
|
13 |
import asyncio
|
14 |
from collections import defaultdict
|
|
|
33 |
)
|
34 |
|
35 |
# 2. نموذج توليف الصوت (نموذج بديل)
|
36 |
+
tts_model = AutoModelForCausalLM.from_pretrained(
|
37 |
+
"coqui/tts-arabic",
|
|
|
|
|
|
|
|
|
38 |
token=os.getenv("HF_TOKEN")
|
39 |
)
|
40 |
|
|
|
94 |
|
95 |
async def text_to_speech(text: str) -> None:
|
96 |
try:
|
97 |
+
inputs = tts_model(text, return_tensors="pt")
|
98 |
with torch.no_grad():
|
99 |
+
output = tts_model.generate(**inputs)
|
100 |
+
waveform = output[0].numpy()
|
101 |
sf.write("bot_response.wav", waveform, tts_model.config.sampling_rate)
|
102 |
except Exception as e:
|
103 |
logger.error(f"فشل تحويل النص إلى صوت: {str(e)}")
|
|
|
114 |
|
115 |
user_text = await speech_to_text("user_voice.ogg")
|
116 |
if not user_text:
|
117 |
+
await update.message.reply_text(" لم أتمكن من فهم الصوت. يرجى المحاولة مرة أخرى.")
|
118 |
return
|
119 |
|
120 |
bot_response = await generate_response(user_text, str(user_id))
|