forked from prasannals/audio-transcription
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcmd_interface.py
55 lines (47 loc) · 1.75 KB
/
cmd_interface.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# Command line interface for audio transcription
import argparse
from pathlib import Path
from audio_transcription.ml.model import AudioTranscriptionModel
def main():
parser = argparse.ArgumentParser(description="Transcribe audio files")
parser.add_argument(
"--audio_file",
type=str,
help="The path to the audio file to transcribe",
default=None,
)
parser.add_argument(
"--audio_directory",
type=str,
help="The path to the directory containing the audio files",
default=None,
)
parser.add_argument(
"--output_directory",
type=str,
help="The path to the directory to save the transcriptions",
required=True,
)
args = parser.parse_args()
audio_file, audio_directory = args.audio_file, args.audio_directory
output_directory = Path(args.output_directory)
output_directory.mkdir(parents=True, exist_ok=True)
if audio_file is None and audio_directory is None:
raise ValueError("Either --audio_file or --audio_directory must be provided")
if audio_file and audio_directory:
raise ValueError(
"Only one of --audio_file or --audio_directory can be provided"
)
model = AudioTranscriptionModel()
if audio_file:
model.transcribe(audio_file, output_directory)
print(
f"Transcription for {audio_file} saved to {output_directory / Path(audio_file).name.split('.')[0]}.txt"
)
else:
model.transcribe_files_in_directory(audio_directory, output_directory)
print(
f"Transcriptions for files in {audio_directory} saved to {output_directory}"
)
if __name__ == "__main__":
main()