feat: first commit
This commit is contained in:
95
detector_tester.py
Normal file
95
detector_tester.py
Normal file
@@ -0,0 +1,95 @@
|
||||
from src.sample_collector import SampleCollector
|
||||
|
||||
# 初始化样本采集器
|
||||
collector = SampleCollector()
|
||||
|
||||
# 添加猫叫声样本
|
||||
import os
|
||||
# sounds_dir, species = "./data/cat_sounds_2", "cat"
|
||||
sounds_dir, species = "./data/extras/dataset", "cat"
|
||||
# sounds_dir, species = "./data/dog_sounds", "dog"
|
||||
for file in os.listdir(sounds_dir):
|
||||
if file.endswith(".wav") or file.endswith(".WAV"):
|
||||
collector.add_sounds(os.path.join(sounds_dir, file),species)
|
||||
|
||||
# 添加非物种叫声样本
|
||||
non_sounds_dir = "./data/non_sounds"
|
||||
for file in os.listdir(non_sounds_dir):
|
||||
if file.endswith(".wav") or file.endswith(".WAV"):
|
||||
collector.add_non_sounds(os.path.join(non_sounds_dir, file))
|
||||
|
||||
# 查看样本数量
|
||||
print(collector.get_sample_counts())
|
||||
|
||||
# from src.audio_input import AudioInput
|
||||
# from src.audio_processor import AudioProcessor
|
||||
# from src.feature_extractor import FeatureExtractor
|
||||
# from src.cat_intent_classifier_v2 import CatIntentClassifier
|
||||
# import os
|
||||
# import numpy as np
|
||||
#
|
||||
# # 初始化组件
|
||||
# audio_input = AudioInput()
|
||||
# audio_processor = AudioProcessor()
|
||||
# feature_extractor = FeatureExtractor()
|
||||
#
|
||||
# # 提取情感类别特征
|
||||
# emotions_dir = "./cat_intents/emotions"
|
||||
# emotion_embeddings = []
|
||||
# emotion_labels = []
|
||||
#
|
||||
# for emotion in os.listdir(emotions_dir):
|
||||
# emotion_path = os.path.join(emotions_dir, emotion)
|
||||
# if os.path.isdir(emotion_path):
|
||||
# for file in os.listdir(emotion_path):
|
||||
# if file.endswith(".wav") or file.endswith(".WAV"):
|
||||
# file_path = os.path.join(emotion_path, file)
|
||||
# print(f"处理情感样本: {file_path}")
|
||||
#
|
||||
# # 加载音频
|
||||
# audio_data, sample_rate = audio_input.load_from_file(file_path)
|
||||
#
|
||||
# # 预处理音频
|
||||
# processed_audio = audio_processor.preprocess(audio_data)
|
||||
#
|
||||
# # 准备YAMNet输入
|
||||
# yamnet_input = audio_processor.prepare_yamnet_input(processed_audio)
|
||||
#
|
||||
# # 提取特征
|
||||
# features = feature_extractor.process_audio(yamnet_input)
|
||||
#
|
||||
# # 使用平均嵌入向量
|
||||
# embedding_mean = np.mean(features["embeddings"], axis=0)
|
||||
#
|
||||
# # 添加到训练数据
|
||||
# emotion_embeddings.append(embedding_mean)
|
||||
# emotion_labels.append(emotion)
|
||||
#
|
||||
# # 训练情感分类器
|
||||
# print(f"训练情感分类器,样本数: {len(emotion_embeddings)}")
|
||||
# emotion_classifier = CatIntentClassifier()
|
||||
# emotion_history = emotion_classifier.train(
|
||||
# np.array(emotion_embeddings),
|
||||
# emotion_labels,
|
||||
# epochs=100,
|
||||
# batch_size=16
|
||||
# )
|
||||
#
|
||||
# # 保存情感分类器
|
||||
# os.makedirs("./models", exist_ok=True)
|
||||
# emotion_paths = emotion_classifier.save_model("./models", "emotions")
|
||||
# # phrases_paths = emotion_classifier.save_model("./models", "phrases")
|
||||
# print(f"情感分类器已保存: {emotion_paths}")
|
||||
|
||||
# 类似地,训练短语分类器
|
||||
# ...(重复上述过程,但使用phrases目录)
|
||||
|
||||
# aa = "F_BAC01_MC_MN_SIM01_101.wav, F_BAC01_MC_MN_SIM01_102.wav, F_BAC01_MC_MN_SIM01_103.wav, F_BAC01_MC_MN_SIM01_104.wav, F_BAC01_MC_MN_SIM01_105.wav, F_BAC01_MC_MN_SIM01_201.wav, F_BAC01_MC_MN_SIM01_202.wav, F_BAC01_MC_MN_SIM01_203.wav, F_BAC01_MC_MN_SIM01_301.wav, F_BAC01_MC_MN_SIM01_302.wav, F_BAC01_MC_MN_SIM01_303.wav, F_BAC01_MC_MN_SIM01_304.wav, F_BLE01_EU_FN_DEL01_101.wav, F_BLE01_EU_FN_DEL01_102.wav, F_BLE01_EU_FN_DEL01_103.wav, F_BRA01_MC_MN_SIM01_301.wav, F_BRA01_MC_MN_SIM01_302.wav, F_BRI01_MC_FI_SIM01_101.wav, F_BRI01_MC_FI_SIM01_102.wav, F_BRI01_MC_FI_SIM01_103.wav, F_BRI01_MC_FI_SIM01_104.wav, F_BRI01_MC_FI_SIM01_105.wav, F_BRI01_MC_FI_SIM01_106.wav, F_BRI01_MC_FI_SIM01_201.wav, F_BRI01_MC_FI_SIM01_202.wav, F_CAN01_EU_FN_GIA01_201.wav, F_CAN01_EU_FN_GIA01_202.wav, F_DAK01_MC_FN_SIM01_301.wav, F_DAK01_MC_FN_SIM01_302.wav, F_DAK01_MC_FN_SIM01_303.wav, F_DAK01_MC_FN_SIM01_304.wav, F_IND01_EU_FN_ELI01_101.wav, F_IND01_EU_FN_ELI01_102.wav, F_IND01_EU_FN_ELI01_103.wav, F_IND01_EU_FN_ELI01_104.wav, F_IND01_EU_FN_ELI01_201.wav, F_IND01_EU_FN_ELI01_202.wav, F_IND01_EU_FN_ELI01_203.wav, F_IND01_EU_FN_ELI01_301.wav, F_IND01_EU_FN_ELI01_302.wav, F_IND01_EU_FN_ELI01_304.wav, F_LEO01_EU_MI_RIT01_101.wav, F_LEO01_EU_MI_RIT01_102.wav, F_LEO01_EU_MI_RIT01_103.wav, F_LEO01_EU_MI_RIT01_104.wav, F_LEO01_EU_MI_RIT01_105.wav, F_MAG01_EU_FN_FED01_101.wav, F_MAG01_EU_FN_FED01_102.wav, F_MAG01_EU_FN_FED01_103.wav, F_MAG01_EU_FN_FED01_104.wav, F_MAG01_EU_FN_FED01_105.wav, F_MAG01_EU_FN_FED01_106.wav, F_MAG01_EU_FN_FED01_201.wav, F_MAG01_EU_FN_FED01_202.wav, F_MAG01_EU_FN_FED01_203.wav, F_MAG01_EU_FN_FED01_301.wav, F_MAG01_EU_FN_FED01_302.wav, F_MAG01_EU_FN_FED01_303.wav, F_MAG01_EU_FN_FED01_304.wav, F_MAG01_EU_FN_FED01_305.wav, F_MAT01_EU_FN_RIT01_101.wav, F_MAT01_EU_FN_RIT01_102.wav, F_MAT01_EU_FN_RIT01_103.wav, F_MAT01_EU_FN_RIT01_301.wav, F_MAT01_EU_FN_RIT01_302.wav, F_MAT01_EU_FN_RIT01_303.wav, F_MEG01_MC_FI_SIM01_301.wav, F_MEG01_MC_FI_SIM01_302.wav, F_MEG01_MC_FI_SIM01_303.wav, F_MEG01_MC_FI_SIM01_304.wav, F_MIN01_EU_FN_BEN01_101.wav, F_MIN01_EU_FN_BEN01_102.wav, F_MIN01_EU_FN_BEN01_103.wav, F_MIN01_EU_FN_BEN01_104.wav, F_REG01_EU_FN_GIO01_201.wav, F_SPI01_EU_MN_NAI01_101.wav, F_SPI01_EU_MN_NAI01_102.wav, F_SPI01_EU_MN_NAI01_103.wav, F_SPI01_EU_MN_NAI01_104.wav, F_SPI01_EU_MN_NAI01_201.wav, F_SPI01_EU_MN_NAI01_202.wav, F_SPI01_EU_MN_NAI01_203.wav, F_SPI01_EU_MN_NAI01_301.wav, F_WHO01_MC_FI_SIM01_101.wav, F_WHO01_MC_FI_SIM01_102.wav, F_WHO01_MC_FI_SIM01_103.wav, F_WHO01_MC_FI_SIM01_301.wav, F_WHO01_MC_FI_SIM01_302.wav, F_WHO01_MC_FI_SIM01_303.wav, F_WHO01_MC_FI_SIM01_304.wav, F_WHO01_MC_FI_SIM01_306.wav, F_WHO01_MC_FI_SIM01_307.wav"
|
||||
#
|
||||
#
|
||||
#
|
||||
# print(
|
||||
# [{
|
||||
# "path": f"./data/is_cat_sound_true/{dd}", "intent": "等待喂食"
|
||||
# } for dd in aa.split(", ")]
|
||||
# )
|
||||
Reference in New Issue
Block a user