mirror of
https://github.com/alphacep/vosk-api.git
synced 2026-01-19 03:43:09 +08:00
90 lines
2.6 KiB
Python
90 lines
2.6 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import argparse
|
|
import logging
|
|
import sys
|
|
import os
|
|
|
|
from pathlib import Path
|
|
from vosk import list_models, list_languages
|
|
from vosk.transcriber.transcriber import Transcriber
|
|
|
|
parser = argparse.ArgumentParser(
|
|
description = "Transcribe audio file and save result in selected format")
|
|
parser.add_argument(
|
|
"--model", "-m", type=str,
|
|
help="model path")
|
|
parser.add_argument(
|
|
"--server", "-s", type=str,
|
|
help="use server for recognition. For example ws://localhost:2700")
|
|
parser.add_argument(
|
|
"--list-models", default=False, action="store_true",
|
|
help="list available models")
|
|
parser.add_argument(
|
|
"--list-languages", default=False, action="store_true",
|
|
help="list available languages")
|
|
parser.add_argument(
|
|
"--model-name", "-n", type=str,
|
|
help="select model by name")
|
|
parser.add_argument(
|
|
"--lang", "-l", default="en-us", type=str,
|
|
help="select model by language")
|
|
parser.add_argument(
|
|
"--input", "-i", type=str,
|
|
help="audiofile")
|
|
parser.add_argument(
|
|
"--output", "-o", default="", type=str,
|
|
help="optional output filename path")
|
|
parser.add_argument(
|
|
"--output-type", "-t", default="txt", type=str,
|
|
help="optional arg output data type")
|
|
parser.add_argument(
|
|
"--tasks", "-ts", default=10, type=int,
|
|
help="number of parallel recognition tasks")
|
|
parser.add_argument(
|
|
"--log-level", default="INFO",
|
|
help="logging level")
|
|
|
|
def main():
|
|
|
|
args = parser.parse_args()
|
|
log_level = args.log_level.upper()
|
|
logging.getLogger().setLevel(log_level)
|
|
|
|
if args.list_models is True:
|
|
list_models()
|
|
return
|
|
|
|
if args.list_languages is True:
|
|
list_languages()
|
|
return
|
|
|
|
if not args.input:
|
|
logging.info("Please specify input file or directory")
|
|
sys.exit(1)
|
|
|
|
if not Path(args.input).exists():
|
|
logging.info("File/folder {args.input} does not exist, "\
|
|
"please specify an existing file/directory")
|
|
sys.exit(1)
|
|
|
|
transcriber = Transcriber(args)
|
|
|
|
if Path(args.input).is_dir():
|
|
task_list = [(Path(args.input, fn),
|
|
Path(args.output,
|
|
Path(fn).stem).with_suffix("." + args.output_type)) for fn in os.listdir(args.input)]
|
|
elif Path(args.input).is_file():
|
|
if args.output == "":
|
|
task_list = [(Path(args.input), args.output)]
|
|
else:
|
|
task_list = [(Path(args.input), Path(args.output))]
|
|
else:
|
|
logging.info("Wrong arguments")
|
|
sys.exit(1)
|
|
|
|
transcriber.process_task_list(task_list)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|