better model selection cli
This commit is contained in:
@@ -10,6 +10,18 @@ class IgnoreHFWarning(logging.Filter):
|
|||||||
logger = logging.getLogger("huggingface_hub.utils._http")
|
logger = logging.getLogger("huggingface_hub.utils._http")
|
||||||
logger.addFilter(IgnoreHFWarning())
|
logger.addFilter(IgnoreHFWarning())
|
||||||
|
|
||||||
|
class WhisperModel(argparse.Action):
|
||||||
|
def __call__(self, parser, namespace, value, option_string=None):
|
||||||
|
import whisper
|
||||||
|
models = whisper.available_models()
|
||||||
|
|
||||||
|
if value == "?":
|
||||||
|
parser.exit(message="\n".join(models) + "\n")
|
||||||
|
if value not in models:
|
||||||
|
parser.error(f"invalid mode '{value}'\nchoose from:\n {'\n '.join(models)}")
|
||||||
|
|
||||||
|
setattr(namespace, self.dest, value)
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
||||||
parser.add_argument("input")
|
parser.add_argument("input")
|
||||||
@@ -17,28 +29,17 @@ def main():
|
|||||||
help="Output subtitle (SRT) file path")
|
help="Output subtitle (SRT) file path")
|
||||||
parser.add_argument("-s", "--speakers", type=int, default=2,
|
parser.add_argument("-s", "--speakers", type=int, default=2,
|
||||||
help="Number of speakers in the audio")
|
help="Number of speakers in the audio")
|
||||||
parser.add_argument("-m", "--model", default='turbo',
|
parser.add_argument("-m", "--model", default='turbo', action=WhisperModel,
|
||||||
help="Whisper model to use ('?' to see available options)")
|
help="Whisper model to use ('?' to see available options)")
|
||||||
parser.add_argument("--gpu", action="store_true", help="run on GPU if available")
|
parser.add_argument("--gpu", action="store_true", help="run on GPU if available")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
import torch
|
import torch
|
||||||
import whisper
|
|
||||||
|
|
||||||
from .transcribe import transcribe
|
from .transcribe import transcribe
|
||||||
from .diarize import diarize
|
from .diarize import diarize
|
||||||
from .output import write_srt
|
from .output import write_srt
|
||||||
|
|
||||||
models = whisper.available_models()
|
|
||||||
|
|
||||||
if args.model == "?":
|
|
||||||
for model in models:
|
|
||||||
print(model)
|
|
||||||
return
|
|
||||||
|
|
||||||
if args.model not in models:
|
|
||||||
parser.error(f"'{args.model}' is not a valid whisper model")
|
|
||||||
|
|
||||||
has_gpu = torch.cuda.is_available()
|
has_gpu = torch.cuda.is_available()
|
||||||
if args.gpu and not has_gpu:
|
if args.gpu and not has_gpu:
|
||||||
print("GPU not available. Falling back to CPU")
|
print("GPU not available. Falling back to CPU")
|
||||||
|
|||||||
Reference in New Issue
Block a user