Nioi's picture
merging and fixing audio transcribing tool
5a0465b
from smolagents import tool
import whisper
import urllib
import pandas as pd
MODEL = whisper.load_model("tiny")
FILES_URL = "https://agents-course-unit4-scoring.hf.space/files/"
def download_file_from_url(url: str) -> str:
"""
Download a file from a URL and save it to a temporary location.
Args:
url: the URL of the file to download.
"""
file_path = None
try:
result = urllib.request.urlretrieve(url)
file_path = result[0]
except Exception as e:
return f"Error downloading file: {str(e)}"
return file_path
@tool
def csv_reader(task_id: str) -> str:
"""
Extract CSV file content and return it in a json format. Supported file extensions: .csv
Args:
task_id: the question TASK_ID.
"""
file_path = download_file_from_url(FILES_URL+task_id)
try:
df = pd.read_csv(file_path)
return df.to_json()
except Exception as e:
return f"Error analyzing CSV file: {str(e)}"
@tool
def excel_reader(task_id: str) -> str:
"""
Extract Excel file content and return it in a json format. Supported file extensions: .xls, .xlsx, .xlsb, .xlsm, .odf, .ods, .odt
Args:
task_id: the question TASK_ID.
"""
file_path = download_file_from_url(FILES_URL+task_id)
try:
df = pd.read_excel(file_path)
return df.to_json()
except Exception as e:
return f"Error analyzing Excel file: {str(e)}"
@tool
def transcribe_audio(task_id: str) -> str:
"""
Extract MP3 file content and return it as text. Supported file extensions: .mp3
Args:
task_id: the question TASK_ID.
"""
file_path = download_file_from_url(FILES_URL+task_id)
result = None
try:
result = MODEL.transcribe(file_path)
except Exception as e:
return f"Error transcribing file: {str(e)}"
return result['text']