【Python】音色近似识别软件开发

import numpy as np
import librosa
import os
from sklearn.metrics.pairwise import cosine_similarity

# 1. 设置路径
test_audio_path = "./test_audio.wav"  # 用户上传的音频文件
sound_library_path = "./sound_library/"  # 你的音色库目录

# 2. 加载用户音频并获取 MFCC
y_test, sr_test = librosa.load(test_audio_path, sr=None)
mfcc_test = librosa.feature.mfcc(y=y_test, sr=sr_test, n_mfcc=13).mean(axis=1)  # 将 MFCC 转为一维向量

# 3. 遍历音色库并提取 MFCC,计算相似度
similarities = {}  # 存储每个音色文件的相似度

for filename in os.listdir(sound_library_path):
    if filename.endswith(".wav"):  # 只处理 WAV 文件
        file_path = os.path.join(sound_library_path, filename)
        y_lib, sr_lib = librosa.load(file_path, sr=None)
        # 确保采样率一致(可选)
        if sr_lib != sr_test:
            y_lib = librosa.resample(y_lib, sr_lib, sr_test)
        mfcc_lib = librosa.feature.mfcc(y=y_lib, sr=sr_test, n_mfcc=13).mean(axis=1)
        # 计算余弦相似度
        similarity = cosine_similarity([mfcc_test], [mfcc_lib])[0][0]
        similarities[filename] = similarity

# 4. 输出相似度最高的音色文件
similarities_sorted = sorted(similarities.items(), key=lambda x: x[1], reverse=True)
print("发现相似度最高的音色匹配:")
for name, score in similarities_sorted[:5]:  # 打印前5个最相似的
    print(f"{name}: {score:.4f}")

 

posted on 2025-12-21 12:58  小沙盒工作室  阅读(0)  评论(0)    收藏  举报