Spaces:
Sleeping
Sleeping
import torch | |
import requests | |
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline | |
from datasets import load_dataset | |
from pydantic import BaseModel | |
from fastapi import FastAPI | |
class URLPayload(BaseModel): | |
url: str | |
app = FastAPI() | |
def process_audio(url: str): | |
response = requests.get(url) | |
with open("/data/audio.mp3", mode="wb") as file: | |
file.write(response.content) | |
device = "cuda" | |
model_id = "openai/whisper-large-v3" | |
model = AutoModelForSpeechSeq2Seq.from_pretrained( | |
model_id, torch_dtype=torch.float16, low_cpu_mem_usage=True, use_safetensors=True | |
) | |
model.to(device) | |
processor = AutoProcessor.from_pretrained(model_id) | |
pipe = pipeline( | |
"automatic-speech-recognition", | |
model=model, | |
tokenizer=processor.tokenizer, | |
feature_extractor=processor.feature_extractor, | |
max_new_tokens=8192, | |
chunk_length_s=30, | |
batch_size=16, | |
return_timestamps=True, | |
torch_dtype=torch.float16, | |
device=device | |
) | |
dataset = load_dataset("distil-whisper/librispeech_long", "clean", split="validation") | |
whisper_result = pipe("/data/audio.mp3", generate_kwargs={"language": "polish"}) | |
return whisper_result | |
async def process_audio_endpoint(payload: URLPayload): | |
result = process_audio(payload.url) | |
return result | |