Este código fue diseñado para hacer que una gran cantidad de transcripciones Whisper de OpenAI se pueda buscar fácilmente. Entonces uno puede encontrar un pasaje o término particular ocurre y a qué hora de la transcripción. Sin embargo, debería funcionar con cualquier carpeta de archivos .vtt: transcripciones de podcasts de no solo OpenAI.
Utilicé Whisper OpenAI para transcribir el podcast de tecnología accidental, e implementé un sitio web del sitio web de motores de búsqueda en vivo aquí, alimentado por este módulo (específicamente SearchTranscripts ).
Este módulo tiene dos clases:
LoadTranscripts : esto crea una base de datos SQLite y una tabla virtual FTS5 desde una carpeta de archivos de transcripción (archivos .vtt o .json ). Crea fragmentos de texto más largos (aproximadamente 300 palabras cada una) a partir de los breves segmentos de transcripción en el archivo original para hacer que los bloques de texto se puedan buscar. Preserva los segmentos de transcripción individuales en una base de datos separada.
SearchTranscripts : esta es una clase de Python que utiliza la base de datos SQLite para devolver un marcador de datos PANDAS de los resultados principales para la consulta de búsqueda.
Once the sqlite database is created with LoadTranscripts , you can access that database via any sqlite interface you like such as datasette, dbeaver, the command line, SQL alchemy, etc. The SearchTranscripts class is meant to be a simple and convenient way to access the data from python, using the built-in sqlite3 module and pandas, but it is somewhat limited.
Clon y CD en el directorio principal del repositorio, luego ejecute:
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"')
Entonces, antes de darme cuenta de que Whisper crearía un archivo .vtt estándar, estaba usando la API de Python directamente. Genera una lista de diccionarios de Python. Guardar eso como Json parecía lógico en ese momento. Encuentro el JSON mucho más fácilmente legible que .vtt, y se puede convertir fácilmente a VTT, por lo que todavía admito este formato algo extravagante. Parece que sí:
[
{
"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"
},
]