Jees 7 сар өмнө
parent
commit
2bcb637a9c
2 өөрчлөгдсөн 14 нэмэгдсэн , 18 устгасан
  1. 8 17
      main.py
  2. 6 1
      wave_compare.py

+ 8 - 17
main.py

@@ -1,31 +1,22 @@
-# 这是一个示例 Python 脚本。
-
-# 按 Shift+F10 执行或将其替换为您的代码。
-# 按 双击 Shift 在所有地方搜索类、文件、工具窗口、操作和设置。
 from wave_compare import extract_mfcc, compute_similarity
 from datetime import datetime
-import pickle
-
-
-def print_hi(name):
-    # 在下面的代码行中使用断点来调试脚本。
-    print(f'Hi, {name}')  # 按 Ctrl+F8 切换断点。
-
+# import pickle
 
 # 按间距中的绿色按钮以运行脚本。
 if __name__ == '__main__':
     # print_hi('Program Start')
     print("start time:" + str(datetime.now()))
     sound_wave_1 = "D://Users//Jees//Documents//coding//PuppyVoiceProcessing//wave_files//puppy4a.wav"
-    sound_wave_2 = "D://Users//Jees//Documents//coding//PuppyVoiceProcessing//wave_files//puppy3b.wav"
+    sound_wave_2 = "D://Users//Jees//Documents//coding//PuppyVoiceProcessing//wave_files//puppy1b.wav"
 
     mfcc_1 = extract_mfcc(sound_wave_1)
-    # string_mfcc_1, shape_mfcc_1 = nparray_to_str(mfcc_1)
-    # mfcc_1_reverse = str_to_nparray(string_mfcc_1, shape_mfcc_1)
-    a = pickle.dumps(mfcc_1)
-    b = pickle.loads(a)
     mfcc_2 = extract_mfcc(sound_wave_2)
+
+    # 一下两行代码展示将mfcc数据dump成二进制,用于保存在数据库。需要同时import pickle
+    # a = pickle.dumps(mfcc_1)
+    # b = pickle.loads(a)
+
     similarity = compute_similarity(mfcc_2, mfcc_1)
     print('similarity result:' + str(similarity))
     print("end time:" + str(datetime.now()))
-# 访问 https://www.jetbrains.com/help/pycharm/ 获取 PyCharm 帮助
+

+ 6 - 1
wave_compare.py

@@ -1,6 +1,6 @@
 from datetime import datetime
 import librosa
-from matplotlib import pyplot
+# from matplotlib import pyplot
 from librosa.feature import mfcc
 import numpy as np
 from scipy.spatial.distance import euclidean
@@ -24,5 +24,10 @@ def compute_similarity(feature_1, feature_2):
     print("start compute_similarity time:" + str(datetime.now()))
     distance = euclidean(feature_1, feature_2)
     result = (100-distance)/100
+    # 以下2种弃用的计算方式
+    # result = 1-(distance*distance / 10000)
+    # result = 1 - np.square((100-distance)/100)
+    if result < 0:
+        result = 0
     print("end compute_similarity time:" + str(datetime.now()))
     return result