Skip to content

Commit 25e0356

Browse files
committed
Added cli.py module
1 parent f0e0592 commit 25e0356

File tree

2 files changed

+81
-107
lines changed

2 files changed

+81
-107
lines changed

src/cli.py

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
import argparse
2+
from service.commands import EnrollSpeakerCommand, RecognizeSpeakerCommand, ListSpeakersCommand, DeleteSpeakerCommand, CommandHandler
3+
from bst import BinarySearchTree
4+
5+
def main():
6+
"""CLI entry point."""
7+
# Initialize Argument Parser
8+
parser = argparse.ArgumentParser(description="Speaker Recognition CLI Tool")
9+
10+
# Create subparsers for different commands
11+
subparsers = parser.add_subparsers(dest='command')
12+
13+
# Enroll Command with optional parameters for customization
14+
enroll_parser = subparsers.add_parser('enroll', help='Enroll a new speaker')
15+
enroll_parser.add_argument('speaker_name', type=str, help='Name of the speaker')
16+
enroll_parser.add_argument('audio_file', type=str, help='Path to the speaker audio file')
17+
18+
# Optional arguments for speaker enrollment
19+
enroll_parser.add_argument('--sample_rate', type=int, default=16000, help='Sample rate of the audio file')
20+
enroll_parser.add_argument('--num_filters', type=int, default=26, help='Number of Mel filters')
21+
enroll_parser.add_argument('--num_ceps', type=int, default=13, help='Number of MFCC coefficients')
22+
enroll_parser.add_argument('--n_fft', type=int, default=512, help='FFT size for audio processing')
23+
enroll_parser.add_argument('--frame_size', type=float, default=0.025, help='Frame size in seconds')
24+
enroll_parser.add_argument('--frame_step', type=float, default=0.01, help='Frame step (overlap) in seconds')
25+
enroll_parser.add_argument('--n_mixtures', type=int, default=8, help='Number of Gaussian mixtures in GMM')
26+
27+
# Recognize Command
28+
recognize_parser = subparsers.add_parser('recognize', help='Recognize a speaker from an audio file')
29+
recognize_parser.add_argument('audio_file', type=str, help='Path to the audio file')
30+
31+
# List Speakers Command
32+
subparsers.add_parser('list_speakers', help='List all enrolled speakers')
33+
34+
# Delete Speaker Command
35+
delete_parser = subparsers.add_parser('delete_speaker', help='Delete a speaker by name')
36+
delete_parser.add_argument('speaker_name', type=str, help='Name of the speaker to delete')
37+
38+
# Parse the arguments
39+
args = parser.parse_args()
40+
41+
# Initialize the command handler
42+
handler = CommandHandler()
43+
44+
# Binary Search Tree and base directory
45+
bst = BinarySearchTree() # Placeholder for actual binary search tree
46+
base_directory = "models/" # Placeholder for actual base directory
47+
48+
# Process the command based on the parsed arguments
49+
if args.command == 'enroll':
50+
command = EnrollSpeakerCommand(
51+
speaker_name=args.speaker_name,
52+
audio_file=args.audio_file,
53+
bst=bst,
54+
base_directory=base_directory,
55+
sample_rate=args.sample_rate,
56+
num_filters=args.num_filters,
57+
num_ceps=args.num_ceps,
58+
n_fft=args.n_fft,
59+
frame_size=args.frame_size,
60+
frame_step=args.frame_step,
61+
n_mixtures=args.n_mixtures
62+
)
63+
handler.run(command)
64+
65+
elif args.command == 'recognize':
66+
command = RecognizeSpeakerCommand(args.audio_file)
67+
handler.run(command)
68+
69+
elif args.command == 'list_speakers':
70+
command = ListSpeakersCommand()
71+
handler.run(command)
72+
73+
elif args.command == 'delete_speaker':
74+
command = DeleteSpeakerCommand(args.speaker_name)
75+
handler.run(command)
76+
77+
else:
78+
parser.print_help()
79+
80+
if __name__ == "__main__":
81+
main()

tes_main.py

Lines changed: 0 additions & 107 deletions
This file was deleted.

0 commit comments

Comments
 (0)