2025-12-01
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import logging
|
||||
import argparse
|
||||
|
||||
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(
|
||||
'--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(
|
||||
'--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 == True:
|
||||
list_models()
|
||||
return
|
||||
|
||||
if args.list_languages == True:
|
||||
list_languages()
|
||||
return
|
||||
|
||||
if not args.input:
|
||||
logging.info('Please specify input file or directory')
|
||||
exit(1)
|
||||
|
||||
if not Path(args.input).exists():
|
||||
logging.info('File %s does not exist, please specify an existing file/directory' % (args.input))
|
||||
exit(1)
|
||||
|
||||
if args.output !='' and not Path(args.output).exists():
|
||||
logging.info('Output %s does not exist, please specify an existing file' % (args.output))
|
||||
exit(1)
|
||||
|
||||
transcriber = Transcriber(args)
|
||||
|
||||
if Path(args.input).is_dir() and Path(args.output).is_dir():
|
||||
transcriber.process_dir(args)
|
||||
return
|
||||
elif Path(args.input).is_file() and (args.output=='' or Path(args.output).is_file()):
|
||||
transcriber.process_file(args)
|
||||
else:
|
||||
logging.info('Wrong arguments, input and output must be same type')
|
||||
exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user