Heim >Backend-Entwicklung >Python-Tutorial >Erstellen eines kostenlosen KI-Sprach-zu-Text-Transkriptionsprogramms mit Whisper
Im letzten Meta Connect erwähnte Mark Zuckerberg
Ich denke, dass Sprache eine viel natürlichere Art der Interaktion mit KI sein wird als Text.
Ich stimme dem voll und ganz zu und es geht auch viel schneller, als Ihre Frage einzutippen, insbesondere wenn die meisten KI-Lösungen heutzutage über eine Art Chat verfügen.
In diesem Blog erstellen wir eine API und eine einfache Website, die Ihre Aufnahme mithilfe des Whisper-Modells von OpenAI in Text umwandelt.
Lasst uns anfangen!
Zuerst müssen wir die API erstellen. Es wird nur eine Methode enthalten, die wir transcribe_audio
nennenLassen Sie uns die folgenden Module installieren
pip install fastapi uvicorn python-multipart
Der Code für die Blaupause sieht folgendermaßen aus:
from fastapi import FastAPI, File, UploadFile from fastapi.responses import JSONResponse app = FastAPI() @app.post("/transcribe-audio/") async def transcribe_audio(file: UploadFile = File(...)): try: transcribed_text = "Call Whisper here" return JSONResponse(content={"lang": "en", "transcribed_text": transcribed_text}) except Exception as e: return JSONResponse(content={"error": str(e)}, status_code=500)
Ich habe mich dafür entschieden, die CUDA-spezifische Version von PyTorch zusammen mit Torchaudio herunterzuladen
pip install torch==1.11.0+cu113 torchaudio===0.11.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
Beachten Sie außerdem, dass Sie, wenn Sie über eine Nvidia-GPU verfügen, CUDA-Treiber installieren müssen, damit diese Anwendung Ihre GPU nutzen kann. Andernfalls wird die CPU zur Ausführung herangezogen und Sie erhalten langsamere Ergebnisse.
Als nächstes installieren wir FASTAPI sowie Transformer, Accelerate und Numpy<2; Der Grund, warum wir eine niedrigere Version von Numpy verwenden möchten, besteht darin, Warnungen beim Ausführen mit Torch zu vermeiden.
pip install transformers accelerate "numpy<2"
Zuletzt laden wir Whisper von Git herunter. Ich fand, dass dies die einfachere Methode zur Installation des Modells ist:
pip install git+https://github.com/openai/whisper.git
Nachdem alles installiert ist, richten wir nun das Flüstermodell ein
from fastapi import FastAPI, File, UploadFile from fastapi.responses import JSONResponse import torch import whisper from pathlib import Path import os # Directory to save uploaded files UPLOAD_DIR = Path("./uploaded_audios") UPLOAD_DIR.mkdir(parents=True, exist_ok=True) # check if the device is a cuda device, else use CPU device = "cuda:0" if torch.cuda.is_available() else "cpu" print(f"Using Device: {device}") # for a full list of models see https://github.com/openai/whisper?tab=readme-ov-file#available-models-and-languages model = whisper.load_model("medium", device=device) app = FastAPI()
Wenn Sie nun die Anwendung mit uvicorn main:app --reload ausführen, wird das Modell erfolgreich geladen (es kann je nach ausgewähltem Modell eine Weile dauern). Wenn Sie außerdem CUDA-Treiber installiert haben, wird in den Protokollen „Using Device: cuda:0“ angezeigt
Wir werden die Methode transcribe_audio bearbeiten, um die Transkription mithilfe des Modells durchzuführen
@app.post("/transcribe-audio/") async def transcribe_audio(file: UploadFile = File(...)): try: # Path to save the file file_path = f"{UPLOAD_DIR}/{file.filename}" # Save the uploaded audio file to the specified path with open(file_path, "wb") as f: f.write(await file.read()) # transcribe the audio using whisper model result = model.transcribe(file_path) # Extract the transcription text from the result transcribed_text = result['text'] return JSONResponse(content={"lang": result["language"], "transcribed_text": transcribed_text}) except Exception as e: print(e.__cause__) return JSONResponse(content={"error": str(e)}, status_code=500) finally: # Optionally, remove the saved file after transcription os.remove(file_path)
Wenn Sie nun die API ausführen und eine POST-Anfrage an /trancribe-audio mit einer Audiodatei in den Formulardaten durchführen, erhalten Sie Folgendes:
pip install fastapi uvicorn python-multipart
Der Grund, warum ich „mittel“ gewählt habe, ist, dass es eine gute Interpunktion leistet. Im folgenden Beispiel wird ein Komma hinzugefügt
from fastapi import FastAPI, File, UploadFile from fastapi.responses import JSONResponse app = FastAPI() @app.post("/transcribe-audio/") async def transcribe_audio(file: UploadFile = File(...)): try: transcribed_text = "Call Whisper here" return JSONResponse(content={"lang": "en", "transcribed_text": transcribed_text}) except Exception as e: return JSONResponse(content={"error": str(e)}, status_code=500)
Es kann auch verschiedene Sprachen verstehen
pip install torch==1.11.0+cu113 torchaudio===0.11.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
KI ist wunderbar. Ich habe es gerade darum gebeten, eine einfache Website zu erstellen, auf der ich diese API testen kann, und es hat eine Menge Code hervorgebracht, der mir hilft. Danke ChatGPT.
Den Code finden Sie auf meinem GitHub, aber so wird das Endprodukt aussehen:
Weggelassenes GIF eines langen Textes:
Ich versuche Spanisch:
Die Verwendung vorab trainierter Modelle ist sehr einfach zu implementieren, wenn Sie über die entsprechende Hardware verfügen. Ich hatte eine Intel 14700K-CPU und eine GTX 1080ti-GPU. Auch wenn die GPU schon etwas älter ist, habe ich dennoch beeindruckende Ergebnisse erzielt. Es ging viel schneller, als ich erwartet hatte; Transkribieren von 30 Sekunden Audio in etwa 4–5 Sekunden.
Bei der Meta Connect-Veranstaltung stellte Mark Zuckerberg seine neue KI-gestützte Datenbrille vor, indem er ein Gespräch mit einem Spanisch sprechenden Menschen führte und die Brille für jede Person Untertitel in ihrer jeweiligen Sprache anzeigte. Ziemlich cool! Dies ist mit Whisper möglich, jedoch nur mit dem großen Modell. Alternativ können wir externe Bibliotheken wie DeepL verwenden, um die Übersetzung nach der Transkription für uns durchzuführen.
Wie passen wir das nun in die Brille? ?
Ein schönes Projekt, dem man dies hinzufügen könnte, wäre ein Dienst, der auf Ihrem Betriebssystem installiert wird und auf einen Makro-Tastendruck oder etwas Ähnliches hört, um bei Bedarf ein Textfeld mit einer Audioaufnahme auszufüllen. Könnte das ein nettes Nebenprojekt sein? Whisper Medium ist nicht sehr groß, aber Sie können es auch durch Whisper „Turbo“ oder „Tiny“ ersetzen. Ich kann mir vorstellen, dass diese sogar auf mobilen Geräten laufen können. Hah, noch ein Nebenprojekt?
Wenn Ihnen dieser Blog gefallen hat, stellen Sie sicher, dass Sie ihn liken und kommentieren. Ich werde mich mehr mit der lokalen Ausführung von KI-Modellen befassen, um zu sehen, welche Möglichkeiten es gibt.
Sag Hallo? für mich auf LinkedIn!
Das obige ist der detaillierte Inhalt vonErstellen eines kostenlosen KI-Sprach-zu-Text-Transkriptionsprogramms mit Whisper. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!