whisper / backend /server.py
dauduchieu
fix
804fc17
Raw
History Blame Contribute Delete
1.22 kB
from fastapi import FastAPI, File, UploadFile
from fastapi.middleware.cors import CORSMiddleware
import whisper
import io
import torch
import ffmpeg
import numpy as np
import soundfile as sf
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Load Whisper model
model = whisper.load_model("tiny")
@app.post("/transcribe")
async def transcribe(audio: UploadFile = File(...)):
# Đọc dữ liệu âm thanh vào memory
audio_bytes = await audio.read()
# Convert bytes thành numpy array
with io.BytesIO(audio_bytes) as audio_buffer:
audio_array, sample_rate = sf.read(audio_buffer)
# Whisper yêu cầu sample rate 16000Hz
if sample_rate != 16000:
audio_array = whisper.pad_or_trim(whisper.resample(audio_array, sample_rate, 16000))
# Chuyển numpy array thành tensor
audio_tensor = torch.from_numpy(audio_array).float()
# Chuyển thành Mel Spectrogram
mel = whisper.log_mel_spectrogram(audio_tensor).unsqueeze(0)
# Chạy mô hình để nhận diện giọng nói
result = model.decode(mel)
return {"text": result.text}