VOICE_AI_COUNTRY / utils.py
Sefat33's picture
Update utils.py
6bf08a0 verified
import os
import requests
import tempfile
from transformers import pipeline
# Use a safe writable temporary directory
cache_dir = os.path.join(tempfile.gettempdir(), "hf_cache")
os.environ["HF_HOME"] = cache_dir
os.makedirs(cache_dir, exist_ok=True)
# Load GPT-2 safely into tmp directory
try:
generator = pipeline(
"text-generation",
model="gpt2",
cache_dir=cache_dir,
local_files_only=False
)
except Exception as e:
generator = None
print("⚠️ GPT-2 model loading failed:", e)
def generate_description(country_name):
"""
Generate a simple English description about a country using GPT-2.
"""
if not generator:
return "⚠️ Model unavailable."
try:
prompt = f"Tell me about {country_name}."
result = generator(prompt, max_length=100, do_sample=True)
return result[0]["generated_text"].strip()
except Exception as e:
return f"⚠️ Error: {str(e)}"
def get_country_info(country_name):
"""
Get basic country info using REST Countries API.
"""
try:
url = f"https://restcountries.com/v3.1/name/{country_name}"
response = requests.get(url)
data = response.json()[0]
info = {
"Name": data.get("name", {}).get("common", "N/A"),
"Capital": ", ".join(data.get("capital", ["N/A"])),
"Region": data.get("region", "N/A"),
"Population": f'{data.get("population", 0):,}',
"Languages": ", ".join(data.get("languages", {}).values())
}
return info
except Exception as e:
return {"error": f"⚠️ Failed to retrieve country data."}
def translate_to_bangla(text):
"""
Translate English text to Bangla using LibreTranslate API.
"""
try:
response = requests.post(
"https://libretranslate.com/translate",
headers={"Content-Type": "application/json"},
json={
"q": text,
"source": "en",
"target": "bn",
"format": "text"
}
)
return response.json().get("translatedText", "⚠️ Translation failed.")
except Exception:
return "⚠️ Translation API error."