paint-brush
Verwendung der Whisper- und GPT-3-API von OpenAI zum Erstellen und Bereitstellen einer Transcriber-App – Teil 1von@juanfrank77
8,137 Lesungen
8,137 Lesungen

Verwendung der Whisper- und GPT-3-API von OpenAI zum Erstellen und Bereitstellen einer Transcriber-App – Teil 1

von Juan F. Gonzalez11m2023/09/13
Read on Terminal Reader
Read this story w/o Javascript

Zu lang; Lesen

Der Artikel beschreibt die Entwicklung einer Transkriptions-App unter Verwendung von OpenAIs Whisper und GPT-3.5 Turbo API. Teil 1 behandelt die Einrichtung, einschließlich der Beschaffung von API-Schlüsseln, der Whisper-Installation und der Wahl zwischen lokaler oder Online-Entwicklung. Es erklärt, wie man Audiodateien zur Transkription herunterlädt, demonstriert die Audiotranskription mit Whisper und beschreibt detailliert den Prozess der Erstellung einer Zusammenfassung mit GPT-3. Teil 2 konzentriert sich auf die Bereitstellung der App in der Cloud.

People Mentioned

Mention Thumbnail
featured image - Verwendung der Whisper- und GPT-3-API von OpenAI zum Erstellen und Bereitstellen einer Transcriber-App – Teil 1
Juan F. Gonzalez HackerNoon profile picture
0-item


Als nach der Veröffentlichung von ChatGPT der Hype um KI-Technologien wie Chatbots, Large Language Models (LLMs) und Copiloten begann, tauchten bald viele weitere Anwendungsfälle auf.


Ich spreche nicht von den gängigsten wie Schreibassistenten, Bildgeneratoren oder Chatbots, die auf Ihre Daten trainiert werden. Ich spreche von eher Nischenanwendungsfällen wie realistischen sprechenden Avataren, Videoeditoren oder Sprachsynthese.


In diesem Artikel werden wir einen dieser Anwendungsfälle untersuchen – eine Transkriptions-App, die Sie mit Podcasts oder YouTube -Videos verwenden können. Es wird von großem Wert sein, wenn Sie schon immer die GPT-3-API verwenden oder eine OpenAI Whisper-Demo in Aktion sehen wollten.


Im ersten Teil dieses Tutorials gehen wir alles durch, was wir zum Einrichten und Starten der App-Entwicklung benötigen.


Und dann werden wir in Teil 2 unseren Arbeitscode in die Cloud hochladen und eine Benutzeroberfläche zum Laufen bringen, damit andere die Ergebnisse sehen und mit der App interagieren können.


Jetzt schnallen Sie sich an, denn wir werden uns bei der Erstellung mit etwas Python-Code die Hände schmutzig machen.






Die Bühne vorbereiten

Um dies aufzubauen, werden wir drei Akte durchgehen.


  • Im ersten Teil sehen wir alles, was wir brauchen, um uns auf die bevorstehende Reise vorzubereiten.


  • Im zweiten Schritt bauen wir vor Ort einen Prototypen und finden heraus, welche Tools uns dabei unterstützen können.


  • Und im letzten Teil laden wir alles, was wir erstellt haben, in die Cloud hoch, damit auch andere es ausprobieren können.


Hört sich gut an?


Na gut, dann lasst uns loslegen!






Akt 1: Das Setup (Whisper und GPT-3 API)

Das Wichtigste zuerst: Ein grober Überblick über den Prozess, dem wir folgen werden, besteht darin, die Informationen zu extrahieren, die wir transkribieren möchten, und sie dann weiterzugeben OpenAIs Whisper .


Von dort aus nehmen wir die Ausgabe und führen eine Nachbearbeitung durch, bevor wir sie in einer Front-End-Anwendung anzeigen, damit andere sie sehen und damit interagieren können.


Dieser Vorgang würde einige zusätzliche Schritte erfordern, wenn wir ihn manuell durchführen würden. Glücklicherweise wurde OpenAI zur Verfügung gestellt API-Zugriff für Whisper und ChatGPT .


Hier müssen Sie entscheiden, welchen Weg Sie einschlagen möchten.


  • Erstellen Sie dies lokal auf Ihrem Computer (vorausgesetzt, Sie haben Python 3 installiert) oder
  • Erstellen Sie es online mit a Google Colab-Notizbuch .


Wählen Sie zuerst Ihren Weg und dann machen wir weiter.


Als nächstes benötigen wir einen API-Schlüssel von OpenAI, um auf das GPT-3.5 Turbo-Modell zuzugreifen (das im Grunde das Modell ist, das ChatGPT antreibt).


Wenn Sie nicht wissen, wie Sie eines erhalten, gehen Sie folgendermaßen vor:

  • Gehen Sie zur Website der OpenAI-Plattform und melden Sie sich an oder registrieren Sie sich (je nach Fall).


  • Klicken Sie dann oben rechts auf Ihr Profilsymbol, um die Optionen anzuzeigen, und wählen Sie „API-Schlüssel anzeigen“.



  • Auf dieser Seite sehen Sie im Abschnitt „API-Schlüssel“ die Option „Neuen geheimen Schlüssel erstellen“.




  • Es wird ein Popup angezeigt, in dem Ihr geheimer Schlüssel angezeigt wird. Speichern Sie es an einem sicheren Ort, da Sie es nie wieder sehen werden.


Sobald Sie diesen Schlüssel haben, machen wir uns an das nächste Puzzleteil: Whisper.



Sie können die neueste Version von Whisper herunterladen und auf Ihrem Computer installieren, indem Sie den folgenden Befehl ausführen:


 pip install -U openai-whisper


Alternativ können Sie mit diesem Befehl den neuesten Commit von Git mit seinen Abhängigkeiten installieren:


 pip install git+https://github.com/openai/whisper.git


Dadurch haben Sie mehr Kontrolle darüber, welche Version Sie installieren (und es ist der Befehl, den Sie ausführen möchten, wenn Sie dies von einem Colab-Notebook aus versuchen).


Hinweis: Sie müssen „ffmpeg“ installiert haben, wenn Sie Whisper über die Befehlszeile ausführen möchten.


Nachdem Whisper installiert ist, benötigen wir jetzt nur noch die eigentlichen Dateien, die wir transkribieren möchten. Wir können ihm verschiedene Arten von Mediendateien wie „mp3“, „mp4“, „mpeg“, „wav“ und viele mehr zuführen.


Die einzige Einschränkung besteht hier in der Größe der Dateien. Bei einem 10-minütigen Video dauert es deutlich länger als bei einem 20-minütigen Podcast.


Hier ist die nächste Weggabelung.



Sie müssen wählen, ob Sie Video oder Audio transkribieren möchten.


Der Einfachheit halber verwenden wir in diesem Beispiel Audiodateien aus Podcasts.


Und hier könnte Ihnen die Frage durch den Kopf gehen: „ Wo kann ich Podcast-Episoden herunterladen?“ “.


Es gibt zwei Möglichkeiten, die ich kenne.


Die erste besteht darin, eine Website wie ListenNotes zu verwenden, einen beliebigen Podcast auszuwählen und zu den einzelnen Episoden zu gehen.


Bitte beachten Sie, dass Sie ein Konto erstellen müssen, um auf die einzelnen Episoden und die dazugehörigen Audiodateien zugreifen zu können.


Von dort aus müssen Sie auf eine Schaltfläche mit drei Punkten klicken, um eine Registerkarte „Mehr“ zu öffnen. Anschließend wird die Option zum Herunterladen des Audios angezeigt.


So wird das aussehen:





Die zweite Möglichkeit besteht darin, stattdessen Podchaser zu verwenden. Sie folgen einem ähnlichen Prozess: Suchen Sie einen Podcast, gehen Sie die Episodenliste durch und wählen Sie einen bestimmten Podcast aus.


Sobald Sie zur Seite der einzelnen Episode gelangen, sehen Sie auf der rechten Seite eine Spalte mit der Wiedergabeschaltfläche und anderen Optionen darunter.


Wenn Sie nach unten scrollen, sehen Sie Informationen zum Podcast, Optionen zum Teilen in sozialen Netzwerken und einen kleinen Abschnitt mit der Option zum Herunterladen der Audiodatei.


So würde das aussehen:






Wählen Sie die von Ihnen bevorzugte Option und laden Sie einige Episoden unterschiedlicher Länge herunter, damit Sie testen können, wie der Transkriptionsprozess funktioniert.


Meine Empfehlung ist, dass Sie Episoden wählen, die kürzer als 30 Minuten sind.


Der Grund dafür ist, dass Whisper bei der Auswahl einer längeren Version möglicherweise lange für die Verarbeitung benötigt und es zu Zeitüberschreitungsproblemen kommen kann (insbesondere, wenn Sie die Colab-Umgebung verwenden).


Die Transkription einer Episode von 20 bis 30 Minuten kann zwischen 4 und 8 Minuten dauern.


Der größte Engpass hierbei ist die Dauer des Transkriptionsprozesses, bis wir ein Ergebnis erhalten, das wir für die weitere Arbeit verwenden können.


Nun haben wir alle Voraussetzungen erfüllt und die Einrichtung ist abgeschlossen.


Es ist Zeit für uns, zum nächsten Teil der Reise überzugehen.



Akt 2: Die Entwicklung (OpenAI Whisper Demo)

Wir betreten tieferes Programmiergebiet.


Wir werden Whisper über Python verwenden, da das bequemer ist. Und wir müssen für die Transkription nichts Besonderes tun, übergeben Sie einfach die Audiodatei an das Modell und warten Sie auf die Transkription, fertig.


Lassen Sie uns diesen Prozess Zeile für Zeile durchgehen.

 import whisper model = whisper.load_model("base")


Hier laden wir die „Basis“-Version des Whisper-Modells. Es gibt mehrere Versionen (oder „Größen“), die OpenAI veröffentlicht hat, und sie unterscheiden sich in der Anzahl der Parameter, den von ihnen verbrauchten Ressourcen und der Zeit, die für die Durchführung der Transkription benötigt wird.


Hier ist eine praktische Tabelle als Referenz.


Wenn Sie möchten, können Sie sie alle auf ihre Größe hin ausprobieren (Wortspiel beabsichtigt).


Bedenken Sie, dass Sie bei Verwendung eines größeren Modells mehr Ressourcen für dessen Ausführung benötigen (z. B. eine GPU).


Wenn Sie dies also in Colab ausführen, können Sie stattdessen diesen Befehl verwenden.


 model = whisper.load_model('medium', device='cuda')


Sie übergeben den Parameter des Geräts, auf dem dies ausgeführt werden soll.


Nachdem Sie die Größe des Modells ausgewählt haben, können Sie die Audiodatei, die Sie transkribieren möchten, wie folgt übergeben:


 result = model.transcribe(“path-to-where-the-file-is”)


Anschließend können Sie den Inhalt ausdrucken, um zu überprüfen, ob die Transkription funktioniert hat. (Vielleicht möchten Sie jedoch nur einen Blick auf die ersten etwa 1000 Zeichen werfen, anstatt das Ganze auszudrucken.)


 podcast_transcript = result['text'] podcast_transcript[:1000]


Wenn das gut geklappt hat, haben Sie nun die Ergebnisse des Transkriptionsprozesses in einer Variablen gespeichert. Diejenige, die wir für die Nachbearbeitung verwenden werden.


Das ist ganz einfach. Nehmen wir jedoch an, dass wir eine Möglichkeit haben möchten, über das, was wir in der Episodenbeschreibung finden würden, hinaus zu erfahren, was im Podcast besprochen wurde.


Wir können eine Funktion erstellen, die das gesamte Transkript aufnimmt und uns eine „Zusammenfassung“ liefert. Eine Zusammenfassung, die wir auch mit vielbeschäftigten Menschen teilen können, die nicht die Zeit haben, das Ganze durchzugehen und zu sehen, ob es ihre Zeit wert ist oder nicht.


Lasst uns weitermachen und das tun.


Irgendwelche Vermutungen, was wir für die Zusammenfassung verwenden werden?


Hinweis: Wir haben bereits einen API-Schlüssel dafür.


Ja, du hast es verstanden.


Wir verwenden das „get-3.5-turbo“-Modell, um diese Zusammenfassung zu erstellen, indem wir ihr das Transkript des Podcasts zur Verfügung stellen.



Wir könnten die Aufrufe direkt an die API durchführen, aber es ist viel bequemer, dafür das OpenAI-Paket zu verwenden (das treffend „openai“ heißt 😆).


Wir benötigen außerdem die Tokenizer-Bibliothek von OpenAI, um zu wissen, wie viele Token wir an das Modell senden werden.


Und wir können beides installieren, indem wir Folgendes ausführen:


 pip install openai pip install tiktoken


Jetzt müssen wir den API-Schlüssel irgendwo speichern, bevor wir GPT-3 aufrufen.


Sie können es als Umgebungsvariable speichern und es dann wie folgt im Code verwenden.


 openai.api_key = os.environ["OPENAI"]


Wenn Sie die Colab-Umgebung verwenden, können Sie auch Folgendes tun.


 import openai from getpass import getpass openai.api_key = getpass("Enter your key here: ")


Wenn Sie dann diesen Befehl ausführen, wird eine Eingabezelle angezeigt, in die Sie den Schlüssel einfügen können.


Jetzt können Sie bestätigen, dass der Schlüssel funktioniert, indem Sie die derzeit mit diesem Codeteil verfügbaren Modelle auflisten.


 models = openai.Model.list() for model in models['data]: print(model['root'])


Wenn unser Schlüssel ordnungsgemäß funktioniert, können wir mit dem Aufruf der GPT-3-API fortfahren.


Aber es gibt etwas Wichtiges, das wir zuerst berücksichtigen müssen. Und das hängt mit dem zusammen, was ich zuvor über „Token“ erwähnt habe.


Da die Idee darin besteht, das Podcast-Transkript an das KI-Modell zu übergeben und eine Zusammenfassung davon zurückzuerhalten, müssen wir wissen, wie viele „Tokens“ es akzeptieren kann.


Die KI zählt keine Wörter oder Zeichen, sondern verwendet Token. Aus diesem Grund gibt es das Konzept des „Kontextfensters“.


Wenn wir die Länge des Kontextfensters überschreiten, kann unser Transkript abgeschnitten werden und wir erhalten eine Zusammenfassung unvollständiger Daten. (Ein weiterer Grund, sich für eine Podcast-Folge zu entscheiden, die nicht zu lang ist.)

Glücklicherweise gibt es zwei Versionen des GPT-3-Modells. Das traditionelle und das andere mit einem erweiterten Kontextfenster.


Wenn Sie die OpenAI-Dokumente überprüfen, können Sie den Unterschied zwischen diesen erkennen.



Und dafür gibt es die „tiktoken“-Bibliothek. Dadurch erfahren wir, wie viele Token das Transkript enthält, und wissen so, welches Modell wir für die Zusammenfassung verwenden sollen.


Wir können diese Berechnung mit dem folgenden Code durchführen.


 import tiktoken enc = tiktoken.encoding_for_model(“gpt-3.5-turbo”) print(“Number of tokens in the input ”, len(enc.encode(podcast_transcript)))


Wenn die Anzahl der Token im Ergebnis größer als 4.097 ist, müssen wir die „16.000“-Version des Modells verwenden.



Nachdem wir dies wissen, können wir endlich die API aufrufen und dabei das richtige Modell für die Situation verwenden.


Speichern wir zunächst die Eingabeaufforderung, die wir an das Modell senden, in einer Variablen. Sie können mit Ihrer eigenen Eingabeaufforderung experimentieren, aber hier ist ein Beispiel:


 prompt = """ You are an expert marketer responsible for the growth of several popular podcasts. You are now tasked with summarizing an episode in a way that is concise and covers the main points of the episode for others to understand. The transcript of the episode is provided below. """ request = prompt + podcast_transcript



Lassen Sie uns nun die API mit dem folgenden Code aufrufen.


 chatOutput = openai.ChatCompletion.create(model="gpt-3.5-turbo-16k",    messages=[{"role": "system", "content": "You are a helpful assistant."},                        {"role": "user", "content": request}                        ]    )


Und dann überprüfen wir die Antwort der API.


 chatOutput.choices[0].messages.content


Hier hast du es! Eine Zusammenfassung der Podcast-Episode basierend auf dem Transkript, das wir mit Whisper erstellt haben.


Mit demselben Verfahren können Sie die wichtigsten Highlights der Episode extrahieren. Eine Art Möglichkeit, dem potenziellen Zuhörer einen Einblick in das Gespräch zu gewähren.


Die Vorgehensweise hierfür ist sehr ähnlich. Der einzige Teil, der sich ändert, ist die Eingabeaufforderung, die das Modell erhält. Anstatt eine Zusammenfassung anzufordern, können Sie darum bitten, die wichtigsten Punkte in einem Listenformat zu extrahieren. Die Ergebnisse hängen von Ihrer Kreativität bei den Eingabeaufforderungen ab.



Da wir nun wissen, dass dies funktioniert, können wir den gesamten Code in eine Funktion einfügen, um ihn lokal auszuführen.


Machen wir also weiter und erstellen diese Funktion.


 def transcribe_podcast(file_path):    print("Starting podcast transcription")    # Load the Whisper model    import os    import Whisper    print("Loading the Whisper model")    model = whisper.load_model("medium")    print(model.device)    # Do the transcription    print("Starting the transcription")    result = model.transcribe(file_path)       # Return the transcribed text     print("Transcription completed, returning results...")    return result


Sie können diese Funktion aufrufen, ihr den Pfad einer Audiodatei senden und im Gegenzug eine Transkription erhalten.


Hier ist ein Beispiel dafür, wie Sie das tun würden.


 output = transcribe_podcast('path_to_audio_file')


Und werfen Sie dann einen Blick auf den Inhalt des Transkripts.


 output[text][:1000]


Alles klar, soweit so gut.


Da dies nun lokal funktioniert, wäre es großartig, es in die Cloud hochzuladen, damit Sie es anderen zeigen und Freunde und Familie mit Ihren l33t h4xx0r-Programmierkenntnissen beeindrucken können. 😆


Aber nein, wirklich, es ist eine gute Wahl, es in einem Online-Dienst bereitzustellen, damit andere es ausprobieren können.


Und das werden wir in Teil 2 tun. Eine Cloud-Funktion erstellen, die Anfragen annehmen kann, und ein schnelles Frontend erstellen, um die Ergebnisse dieser Funktion zu visualisieren (wie die Zusammenfassung und Highlights der Podcast-Episoden).



Fortgesetzt werden…

Dabei belassen wir es vorerst.


Bisher funktioniert die App lokal und Sie können sie mit Episoden unterschiedlicher Länge testen und sehen, wie lange Whisper durchschnittlich für die Transkription benötigt.


Vielen Dank, dass Sie bis hierher gelesen haben.


Und ich hoffe, wir sehen uns im zweiten Teil wieder.

Vergessen Sie nicht, mich auf Hackernoon zu abonnieren , damit Sie die kommenden Artikel nicht verpassen.