Shubham0786's picture
Update utils.py
4d1454e verified
import requests
from bs4 import BeautifulSoup
from transformers import pipeline, VitsModel, AutoTokenizer
import torch
import scipy.io.wavfile as wav
import os
# News Extraction
def fetch_news(company_name):
api_key = os.getenv("NEWSAPI_KEY", "14c0c7c5415b48e093fad78a1fd9581b")
url = f"https://newsapi.org/v2/everything?q={company_name}&apiKey={api_key}"
response = requests.get(url)
if response.status_code == 200:
articles = response.json().get("articles", [])
result = []
for article in articles:
try:
page = requests.get(article['url'])
soup = BeautifulSoup(page.content, 'html.parser')
content = ' '.join([p.text for p in soup.find_all('p')])
except:
content = article.get('description', 'No content available')
result.append({
"title": article['title'],
"content": content
})
return result
return []
# Sentiment Analysis
sentiment_analyzer = pipeline("sentiment-analysis")
def analyze_sentiment(text):
result = sentiment_analyzer(text[:512])[0]
label = result['label']
if label == "POSITIVE":
return "Positive"
elif label == "NEGATIVE":
return "Negative"
else:
return "Neutral"
# Text Summarization
summarizer = pipeline("summarization")
def summarize_text(text):
try:
summary = summarizer(text[:1024], max_length=50, min_length=25, do_sample=False)[0]['summary_text']
return summary
except:
return text[:100] + "..."
# Hindi TTS using Hugging Face MMS-TTS
model = VitsModel.from_pretrained("facebook/mms-tts-hin")
tokenizer = AutoTokenizer.from_pretrained("facebook/mms-tts-hin")
def generate_hindi_tts(text):
try:
# Tokenize input text (limit length to avoid model issues)
inputs = tokenizer(text[:200], return_tensors="pt") # Limit to 200 chars for stability
with torch.no_grad():
outputs = model(**inputs).waveform
# Normalize audio data
audio_data = outputs.squeeze().cpu().numpy()
if audio_data.ndim > 1:
audio_data = audio_data[0] # Ensure 1D array
# Save as WAV file
audio_file = "output.wav"
wav.write(audio_file, rate=model.config.sampling_rate, data=audio_data)
return audio_file
except Exception as e:
raise Exception(f"TTS generation failed: {str(e)}")