init
This commit is contained in:
20
Dockerfile
Normal file
20
Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
FROM python:3.10-slim
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
build-essential \
|
||||||
|
ffmpeg \
|
||||||
|
curl \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Install Python dependencies
|
||||||
|
WORKDIR /app
|
||||||
|
COPY requirements.txt .
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
# Copy app and download model
|
||||||
|
COPY app ./app
|
||||||
|
COPY download-model.sh .
|
||||||
|
RUN chmod +x download-model.sh && ./download-model.sh
|
||||||
|
|
||||||
|
EXPOSE 4002
|
||||||
|
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "4002"]
|
||||||
19
app/main.py
Normal file
19
app/main.py
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
from fastapi import FastAPI, File, UploadFile
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
from whispercpp import Whisper
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
|
|
||||||
|
model_path = "./app/model/ggml-base.en.bin"
|
||||||
|
whisper = Whisper(model_path)
|
||||||
|
|
||||||
|
@app.post("/transcribe")
|
||||||
|
async def transcribe_audio(audio: UploadFile = File(...)):
|
||||||
|
temp_file = f"temp_{audio.filename}"
|
||||||
|
with open(temp_file, "wb") as buffer:
|
||||||
|
shutil.copyfileobj(audio.file, buffer)
|
||||||
|
|
||||||
|
text = whisper.transcribe(temp_file)
|
||||||
|
os.remove(temp_file)
|
||||||
|
return {"text": text}
|
||||||
14
download-model.sh
Executable file
14
download-model.sh
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
mkdir -p app/model
|
||||||
|
cd app/model
|
||||||
|
|
||||||
|
# You can choose other sizes too: tiny.en, base.en, etc.
|
||||||
|
MODEL_NAME="ggml-base.en.bin"
|
||||||
|
MODEL_URL="https://huggingface.co/ggerganov/whisper.cpp/resolve/main/$MODEL_NAME"
|
||||||
|
|
||||||
|
if [ ! -f "$MODEL_NAME" ]; then
|
||||||
|
echo "Downloading $MODEL_NAME..."
|
||||||
|
curl -L -o $MODEL_NAME $MODEL_URL
|
||||||
|
else
|
||||||
|
echo "$MODEL_NAME already exists."
|
||||||
|
fi
|
||||||
7
files.cli
Normal file
7
files.cli
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
whisper_cpp_api/
|
||||||
|
├── app/
|
||||||
|
│ ├── main.py
|
||||||
|
│ └── model/
|
||||||
|
├── Dockerfile
|
||||||
|
├── requirements.txt
|
||||||
|
└── download-model.sh
|
||||||
4
requirements.txt
Normal file
4
requirements.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
fastapi
|
||||||
|
uvicorn
|
||||||
|
python-multipart
|
||||||
|
whispercpp
|
||||||
Reference in New Issue
Block a user