ArchiveAds's picture
Update utils.py
a8c15c7 verified
Raw
History Blame Contribute Delete
1.98 kB
import gdown
import os
import re
from docx import Document
from datetime import datetime
def format_timestamp(seconds):
if seconds is None: return "00:00"
td = int(seconds)
minutes = td // 60
secs = td % 60
return f"{minutes:02d}:{secs:02d}"
def download_from_gdrive(url):
try:
if not os.path.exists("temp_downloads"): os.makedirs("temp_downloads")
output_path = f"temp_downloads/drive_audio_{datetime.now().strftime('%Y%m%d_%H%M%S')}.mp3"
return gdown.download(url, output_path, quiet=False, fuzzy=True)
except Exception as e:
print(f"Error: {e}")
return None
def clean_text(text):
"""
Uses Regex to find and remove repeating phrases like 'कर दो कर दो कर दो'.
"""
# Removes repetitions of 3 or more identical words
text = re.sub(r'(\b\w+\b)( \1){2,}', r'\1', text)
return text
def save_as_docx(transcripts):
doc = Document()
doc.add_heading('Hindi Transcription Report (Cleaned)', 0)
for entry in transcripts:
doc.add_heading(f"File: {entry['filename']}", level=1)
content = entry['text']
if isinstance(content, list):
last_text = ""
for chunk in content:
text = clean_text(chunk['text'])
# Skip if it's a hallucination (very high repetition in small chunk)
if text == last_text or len(text) < 2:
continue
ts = chunk.get('timestamp', (0, 0))
p = doc.add_paragraph()
p.add_run(f"[{format_timestamp(ts[0])}] ").bold = True
p.add_run(text)
last_text = text
else:
doc.add_paragraph(clean_text(content))
doc.add_page_break()
report_name = f"Transcripts_Cleaned_{datetime.now().strftime('%Y%m%d_%H%M%S')}.docx"
doc.save(report_name)
return report_name