wave_compare.py 1.0 KB

12345678910111213141516171819202122232425262728
  1. from datetime import datetime
  2. import librosa
  3. from matplotlib import pyplot
  4. from librosa.feature import mfcc
  5. import numpy as np
  6. from scipy.spatial.distance import euclidean
  7. def extract_mfcc(filename, num_mfcc=13):
  8. # 取低频维度上的部分值输出,语音能量大多集中在低频域,数值一般取13。
  9. print("start extract_mfcc time:" + filename + str(datetime.now()))
  10. audio, sample_rate = librosa.load(filename)
  11. # pyplot.figure(figsize=(14, 5))
  12. # librosa.display.waveshow(y=audio, sr=sample_rate)
  13. # pyplot.title('Wave Form of ' + filename)
  14. # pyplot.show()
  15. mfcc_result = mfcc(y=audio, sr=sample_rate, n_mfcc=num_mfcc)
  16. mean_mfcc = np.mean(mfcc_result, axis=1)
  17. print("end extract_mfcc time:" + filename + str(datetime.now()))
  18. return mean_mfcc
  19. def compute_similarity(feature_1, feature_2):
  20. print("start compute_similarity time:" + str(datetime.now()))
  21. distance = euclidean(feature_1, feature_2)
  22. result = (100-distance)/100
  23. print("end compute_similarity time:" + str(datetime.now()))
  24. return result