This project implements a speaker identification system using Dynamic Time Warping (DTW) algorithms with various optimization techniques. The system compares audio features (MFCC coefficients) to identify speakers from test samples.
- Multiple DTW Implementations:
- Standard DTW with memory optimization
- Pruned DTW for faster computation
- Dijkstra-based DTW approach
- Parallel Processing for efficient user feature loading
- Accuracy Calculation to evaluate system performance
- Modular Design with clear separation of concerns
- DTW_MemoryReduction - O(F²) per comparison
- dtw_pruning - O(F×W) per comparison (W = pruning width)
- DTW_Dijkstra - Priority queue-based approach
| Component | Time Complexity | Space Complexity |
|---|---|---|
| DTW (Standard) | O(F²) | O(F) |
| DTW (Pruned) | O(F×W) | O(F) |
| User Loading | O(M×N×F) | O(M×N×F) |
| Test Loading | O(T×F) | O(T×F) |
Where:
- F = Frames per sequence
- W = Pruning width
- M = Number of users
- N = Sequences per user
- T = Number of tests
Contains all DTW implementations:
DTW_MemoryReduction()dtw_pruning()DTW_Dijkstra()runAlgorithm()- Main driver function
Manages data loading and processing:
loadNextUser()loadNext_N_tests()LoadAllUsers()calcAccuracy()
Handles database operations:
getUsers()SaveUserFeatures()LoadUserFeatures()
-
Memory-Efficient DTW:
- Uses sliding window technique (O(F) space)
- Avoids full matrix allocation
-
Parallel Processing:
- Concurrent user feature loading
- Parallel DTW computations
-
Pruning Techniques:
- Reduces search space with window constraints
- Early termination conditions



