2506minecraft commited on
Commit
5180e89
·
verified ·
1 Parent(s): eb07f0e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +7 -11
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, VitsModel
12
  from huggingface_hub import login
13
  import asyncio
14
  from collections import defaultdict
@@ -33,12 +33,8 @@ try:
33
  )
34
 
35
  # 2. نموذج توليف الصوت (نموذج بديل)
36
- tts_tokenizer = AutoTokenizer.from_pretrained(
37
- "tts_models/arabic/arabic_tts",
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 = tts_tokenizer(text, return_tensors="pt")
102
  with torch.no_grad():
103
- output = tts_model(**inputs, speaker_id=0) # اختيار الصوت الأنثوي
104
- waveform = output.waveform[0].numpy()
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))