Feature request: added huggingface functionality checking for token

This commit is contained in:
Izaya Orihara
2023-10-09 12:12:02 +02:00
parent 162711ebeb
commit d6da26607e
4 changed files with 68 additions and 4 deletions
+3
View File
@@ -11,3 +11,6 @@ __pycache__/
env/
venv/
ENV/
# Large files
data/models # local storage of transcriber models
+54 -2
View File
@@ -4,10 +4,61 @@
Transcriber code
## Setup
Before running this script, make sure to install the necessary python packages using the following command:
```bash
pip install -r requirements.txt
```
## Running the script
To generate transcripts create a new job with your specifications (see jobs section below).
<br/>
If you need to download the transcriber model (not saved in `data/models`yet) set your huggingface token:
On Linux/Mac:
```bash
export HF_TOKEN="your-token-here"
```
On Windows (Command prompt):
```cmd
set HF_TOKEN="your-token-here"
```
Then run the following command to generate your transcript:
```bash
main.py --job {name}
```
where name is the name of your job.
## Jobs
Jobs specify tasks for transcript creation. A job contains the following information.
- `name`: string: The name of the job
- `source`: List[string]: The sources of the videos (paths, YouTube links, TibAV links)
- `modelpath`: Optional[string]: The path to the model if already saved locally (will be downloaded temporarily if not)
- `language`: Optional[string]: The language of the video (If not specified employs auto-detection)
## to-do
- seperate data production form code
- seperate huggingface (hf) token out
- remember to accept the conditions on diarization if you use huggingface
- do a config json
- do option to have models already stored and point to them (is this necessary?)
- also for single language models
- check warnings
- downloader for tib-av
- more optional setting
## Structure
```
project_root/
@@ -23,6 +74,7 @@ project_root/
│ └── test_transcript_generator.py
├── data/
│ ├── audio/ # downloaded mp4 and output wav files
│ ├── models/ # models used for transcripts (are ignored by git and not necessarily)
│ └── transcripts/ # JSON and text transcript files
└── README.md
```
@@ -37,4 +89,4 @@ project_root/
- **tests/**: This directory contains all your test scripts corresponding to your source files.
- **data/**: This directory contains all the data needed for your code. For simplicity, I categorize the files into
separate directories for audio and transcript files.
separate directories for audio, model and transcript files.
+7
View File
@@ -1,3 +1,5 @@
import os
from src.transcript_generator import TranscriptGenerator
@@ -7,6 +9,11 @@ def main():
'https://www.youtube.com/watch?v=BVVo1BaL6JA'
]
hf_token = os.environ.get('HF_TOKEN')
if not hf_token:
hf_token = input("Please enter your HF_TOKEN: ")
os.environ['HF_TOKEN'] = hf_token
transcript_generator = TranscriptGenerator()
transcript_generator.generate(input_sources)
+3 -1
View File
@@ -1,6 +1,7 @@
import gc
import json
import logging
import os
import torch
import whisperx
@@ -30,6 +31,7 @@ class Transcriber:
logger.exception("Failed to initialize models: %s", e)
raise
self.transcript_output = None
self.hf_token = os.environ.get('HF_TOKEN')
def transcribe(self, wav_filename: str, batch_size: int = 16) -> dict:
"""
@@ -53,7 +55,7 @@ class Transcriber:
self._clear_memory()
# Run Diarization
diarize_model = whisperx.DiarizationPipeline(use_auth_token='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',
diarize_model = whisperx.DiarizationPipeline(use_auth_token=self.hf_token,
device=self.device)
diarize_segments = diarize_model(audio)
result = whisperx.assign_word_speakers(diarize_segments, result)