Ce code a été conçu pour rendre un grand nombre de transcriptions de chuchotements d'Openai facilement consultables. On peut donc trouver un passage ou un terme particulier et à quelle heure dans la transcription. Cependant, cela devrait fonctionner avec n'importe quel dossier de fichiers .vtt: les transcriptions non openai des podcasts.
J'ai utilisé Whisper Openai pour transcrire le podcast technologique accidentel, et j'ai déployé un site Web de moteur de recherche en direct ici, alimenté par ce module (en particulier SearchTranscripts ).
Ce module a deux classes:
LoadTranscripts : cela crée une base de données SQLite et une table virtuelle FTS5 à partir d'un dossier de fichiers de transcription (fichiers .vtt ou .json ). Il crée des morceaux de texte plus longs (environ 300 mots chacun) à partir des segments de transcription courts dans le fichier d'origine afin de rendre les blocs de texte consultables. Il préserve les segments de transcription individuels dans une base de données distincte.
SearchTranscripts : il s'agit d'une classe Python qui utilise la base de données SQLite pour renvoyer un Pandas DataFrame des résultats les plus élevés pour la requête de recherche.
Une fois que la base de données SQLite est créée avec LoadTranscripts , vous pouvez accéder à cette base de données via n'importe quelle interface SQLite que vous aimez telle que Datasette, DBEAaver, la ligne de commande, SQL Alchemy, etc. La classe SearchTranscripts est censée être un moyen simple et pratique d'accéder aux données de Python, en utilisant le module SQLite3 intégré et les Pandas, mais c'est quelque chose.
Clone et CD dans le répertoire principal du repo, puis exécutez:
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"')
Donc, avant de réaliser que Whisper créerait un fichier .vtt standard, j'utilisais directement l'API Python. Il génère une liste de dictionnaires Python. Sauver cela comme JSON semblait logique à l'époque. Je trouve le JSON beaucoup plus facilement lisible à la machine que .vtt, et je peux facilement être converti en VTT, donc je prends toujours en charge ce format quelque peu excentrique. Il y a ainsi:
[
{
"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"
},
]