commit 788b2ea705eb4128e2e4369aeb0b3272bbf5177d Author: Kar l5 Date: Sat Jun 14 20:43:59 2025 +0530 init diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..65126ef --- /dev/null +++ b/Dockerfile @@ -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"] diff --git a/app/main.py b/app/main.py new file mode 100644 index 0000000..7394f1a --- /dev/null +++ b/app/main.py @@ -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} diff --git a/download-model.sh b/download-model.sh new file mode 100755 index 0000000..cb07f94 --- /dev/null +++ b/download-model.sh @@ -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 diff --git a/files.cli b/files.cli new file mode 100644 index 0000000..c544a1e --- /dev/null +++ b/files.cli @@ -0,0 +1,7 @@ +whisper_cpp_api/ +├── app/ +│ ├── main.py +│ └── model/ +├── Dockerfile +├── requirements.txt +└── download-model.sh diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..04fab71 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +fastapi +uvicorn +python-multipart +whispercpp