Spaces:
Runtime error
Runtime error
| from fastapi import FastAPI, UploadFile, Form, HTTPException, APIRouter, Depends | |
| from fastapi.responses import JSONResponse | |
| import uvicorn | |
| from typing import List | |
| import torch | |
| import soundfile as sf | |
| from transformers import Wav2Vec2Processor, Wav2Vec2ForCTC | |
| import re | |
| import numpy as np | |
| import cmudict | |
| from io import BytesIO | |
| import logging | |
| from joblib import Memory | |
| from difflib import SequenceMatcher | |
| import eng_to_ipa as ipa_conv | |
| import copy | |
| from IPython.display import HTML, display | |
| from transformers import AutoProcessor, AutoModelForSpeechSeq2Seq | |
| from pydub import AudioSegment | |
| from Bio import pairwise2 | |
| from Bio.pairwise2 import format_alignment | |
| import asyncio | |
| from cachetools import TTLCache | |
| import time | |
| import os | |
| from tempfile import NamedTemporaryFile | |
| import subprocess | |
| import librosa | |
| # package imports | |
| from services.transcribe import TranscriptionService | |
| from utils.general_utils import clean_text | |
| router = APIRouter() | |
| service = TranscriptionService() | |
| async def transcribe(audio: UploadFile): | |
| """ | |
| Transcribe the uploaded audio and return the transcript. | |
| Args: | |
| audio (UploadFile): Uploaded audio file. | |
| Returns: | |
| JSONResponse: Contains the transcript. | |
| """ | |
| try: | |
| # Call the service to process and transcribe the audio | |
| transcript = await service.transcribe_audio(audio) | |
| transcript = clean_text(transcript).strip() | |
| response = {'transcript': transcript} | |
| return JSONResponse(content=response) | |
| except ValueError as ve: | |
| logging.error(f"Validation error: {ve}") | |
| raise HTTPException(status_code=400, detail=str(ve)) | |
| except Exception as e: | |
| logging.error(f"Error during transcription: {e}") | |
| raise HTTPException(status_code=500, detail="An error occurred during processing.") |