Dieser Code wurde so konzipiert, dass eine große Anzahl von OpenAIs Whisper -Transkripten leicht durchsuchbar ist. So kann man eine bestimmte Passage oder einen bestimmten Term finden und zu welcher Zeit im Transkript. Es sollte jedoch mit einem Ordner von .vtt -Dateien funktionieren: Nicht -OpenAI -Transkripte von Podcasts.
Ich habe Whisper OpenAI verwendet, um den Podcast für versehentliche Tech zu transkribieren, und habe hier eine Live -Suchmaschinen -Website vor dem Front -End bereitgestellt, das von diesem Modul betrieben wird (speziell SearchTranscripts ).
Dieses Modul hat zwei Klassen:
LoadTranscripts : Dadurch wird eine virtuelle SQLite -Datenbank und eine FTS5 -Tabelle aus einem Ordner von Transkript -Dateien ( .vtt oder .json -Dateien) erstellt. Es erstellt längere Textbrocken (jeweils etwa 300 Wörter) aus den kurzen Transkript -Segmenten in der Originaldatei, um die Textblöcke durchsuchbar zu machen. Es bewahrt die einzelnen Transkript -Segmente in einer separaten Datenbank.
SearchTranscripts : Dies ist eine Python -Klasse, die die SQLite -Datenbank verwendet, um einen Pandas -Datenfreame der Top -Ergebnisse für die Suchabfrage zurückzugeben.
Sobald die SQLite-Datenbank mit LoadTranscripts erstellt wurde, können Sie über eine beliebige SQLite-Schnittstelle auf diese Datenbank SearchTranscripts .
Klon und CD in das Hauptverzeichnis des Repos, dann laufen:
pip install .
from search_transcripts import LoadTranscripts, SearchTranscripts
l = LoadTranscripts('transcripts') ## will create main.db and bm25.pickle
s = SearchTranscripts()
## Returns a pandas dataframe of the top scoring transcript sections, across all transcripts.
s.search('starship enterprise')
##find the exact phrase
s.search('"starship enterprise"')
Bevor ich feststellte, dass Whisper eine Standard -VTT -Datei erstellen würde, habe ich die Python -API direkt verwendet. Es erzeugt eine Liste von Python -Wörterbüchern. Das Speichern, wie JSON zu der Zeit logisch schien. Ich finde den JSON viel leichter lesbar als .vtt und kann leicht in VTT konvertiert werden, daher unterstütze ich dieses etwas skurrile Format immer noch. Es sieht so aus:
[
{
"start": 606.1800000000001,
"end": 610.74,
"text": " It's important to have a goal to work toward and accomplish rather than just randomly learning and half building things"
},
{
"start": 610.74,
"end": 613.0600000000001,
"text": " Having a specific thing you want to build is a good substitute"
},
{
"start": 613.38,
"end": 619.78,
"text": " Keep making things until you've made something you're proud enough a proud of enough to show off in an interview by the time you've built a few"
},
{
"start": 619.78,
"end": 624.26,
"text": " Things you'll start developing the taste you need to make that determination of what's quote unquote good enough"
},
]