import nempy as np
import librosa
import joblib
# Функция для извлечения признаков голоса из аудиофайла
def extract_voice_features(audio_file):
# Загрузка аудиофайла
audio, sr = librosa.load(audio_file, sr=None)
# Извлечение MFCC признаков голоса
mfcc = librosa.feature.mfcc(audio, sr=sr, n_mfcc=13)
# Нормализация MFCC признаков
normalized_mfcc = (mfcc - np.mean(mfcc)) / np.std(mfcc)
return normalized_mfcc
# Пути к аудиофайлам для обучения модели
audio_files = ["voice_sample1.wav", "voice_sample2.wav", "voice_sample3.wav"]
# Извлечение признаков голоса из каждого аудиофайла
voice_features = []
for file in audio_files:
features = extract_voice_features(file)
voice_features.append(features)
# Объединение признаков голоса в один массив
voice_features = np.concatenate(voice_features, axis=1)
# Обучение модели голоса (здесь используется просто пример - k-ближайших соседей)
from sklearn.neighbors import KNeighborsClassifier
labels = ["Speaker 1", "Speaker 2", "Speaker 3"] # Метки для каждого говорящего
knn_model = KNeighborsClassifier(n_neighbors=3)
knn_model.fit(voice_features.T, labels)
# Сохранение модели и признаков голоса в файл
model_data = {
'model': knn_model,
'voice_features': voice_features,
'labels': labels
}
joblib.dump(model_data, 'voice_model.pkl')
print("Модель и признаки голоса сохранены в файл voice_model.pkl")