Update voice_analysis.py
Browse files- voice_analysis.py +7 -0
voice_analysis.py
CHANGED
@@ -23,7 +23,13 @@ def extract_voice_features(audio_path, segment_duration=1000):
|
|
23 |
|
24 |
return np.array(segments)
|
25 |
|
|
|
|
|
|
|
26 |
def cluster_voices(features):
|
|
|
|
|
|
|
27 |
if len(features) < 2:
|
28 |
print("Not enough voice segments for clustering. Assigning all to one cluster.")
|
29 |
return np.zeros(len(features), dtype=int)
|
@@ -43,6 +49,7 @@ def get_most_frequent_voice(features, clusters):
|
|
43 |
|
44 |
def process_audio(audio_path, segment_duration=1000):
|
45 |
features = extract_voice_features(audio_path, segment_duration)
|
|
|
46 |
clusters = cluster_voices(features)
|
47 |
most_frequent_voice = get_most_frequent_voice(features, clusters)
|
48 |
return most_frequent_voice, features, clusters
|
|
|
23 |
|
24 |
return np.array(segments)
|
25 |
|
26 |
+
def remove_nan_features(features):
|
27 |
+
return features[~np.isnan(features).any(axis=1)]
|
28 |
+
|
29 |
def cluster_voices(features):
|
30 |
+
# Remove NaN values
|
31 |
+
features = remove_nan_features(features)
|
32 |
+
|
33 |
if len(features) < 2:
|
34 |
print("Not enough voice segments for clustering. Assigning all to one cluster.")
|
35 |
return np.zeros(len(features), dtype=int)
|
|
|
49 |
|
50 |
def process_audio(audio_path, segment_duration=1000):
|
51 |
features = extract_voice_features(audio_path, segment_duration)
|
52 |
+
features = remove_nan_features(features)
|
53 |
clusters = cluster_voices(features)
|
54 |
most_frequent_voice = get_most_frequent_voice(features, clusters)
|
55 |
return most_frequent_voice, features, clusters
|