当前位置: 首页 > news >正文

基于librosa的MFCC的音色相似度检测程序

基于librosa的MFCC的音色相似度检测程序

https://gitee.com/h128/sound-color-similar-detect

import numpy as np
import librosa
import os
import sys
from sklearn.metrics.pairwise import cosine_similarity# 1. 设置路径
test_audio_path = sys.argv[1]  # 用户上传的音频文件
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. 输出相似度最高的音色文件 范围[-1, 1]
"""
1:两个向量方向完全相同(即非常相似)
0:两个向量正交(无相似)
-1:两个向量方向完全相反(非常不相似)
"""
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}")if score >= 0.95:print(f"{name} 和{sys.argv[1]} 非常相似")elif score >= 0.5:print(f"{name} 和{sys.argv[1]} 中等相似")elif score == 0.3:print(f"{name} 和{sys.argv[1]} 有一定不相似性")elif socre == 0:print(f"{name} 和{sys.argv[1]} 完全不相似")

 

image

 

http://www.jsqmd.com/news/120126/

相关文章:

  • Flutter官方拒绝适配鸿蒙的真相:不是技术问题,而是...
  • 【Java-JMM】Happens-before原则
  • 请教软件和业务问题,引发的思考
  • Docker容器总结 - 十里
  • 基础模型向通用智能
  • 我天,Java 已沦为老四。。
  • 写在最前面
  • Java毕设选题推荐:基于springboot的汽车租赁买卖管理系统的设计与实现汽车知识科普,租赁管理,热门汽车推荐【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 2004-基于多目标粒子群(MOPSO)算法的多阈值图像分割(Otsu 法 + 最小交叉熵)(中文核心、SCI 四区可选)
  • .net 8使用autofac以及.net core自带的注入
  • 完整教程:零基础入门C语言之C语言实现数据结构之单链表
  • Hive 3.x 建表指定分桶,但load data后失效的原因
  • GSoC 成果公布!印度开发者为 DolphinScheduler 引入通用 OIDC 认证,实现无缝安全访问
  • 【python大数据毕设实战】哮喘患者症状数据可视化分析系统、Hadoop、计算机毕业设计、包括数据爬取、数据分析、数据可视化、机器学习
  • 【01-02】
  • 【开题答辩全过程】以 基于微信小程序的糖尿病居家健康管理实用的系统为例,包含答辩的问题和答案
  • Qt 源码阅读随笔
  • 2025 我用 Sysinternals 打通 Windows 排障“证据链”:开机慢 / 安装失败 / 磁盘暴涨(三个真实案例复盘)
  • 基于java的SpringBoot/SSM+Vue+uniapp的宠物综合服务平台的详细设计和实现(源码+lw+部署文档+讲解等)
  • [20251219]测试sql语句子光标的执行性能2(21c).txt
  • 面向轻量级智能体的模型蒸馏方法研究-大规模预训练模型知识迁移机制分析
  • 非遗万象图前端开发
  • 不同场景 Linux 性能调优参数配置模板
  • Redis 零基础到进阶,Redis 哨兵监控,笔记63-73
  • 大学生必备:8个免费AI论文工具,告别熬夜搞定论文效率飙升100% - 麟书学长
  • 9 个降AI率工具,MBA 必备避坑指南
  • 用 .NET MAUI 10 + VS Copilot 从 0 开发一个签到 App(三)
  • 上海埃飞电子科技有限公司:探寻国内顶尖狭缝涂布机加工厂的卓越之道 - 五色鹿五色鹿
  • Redis多实例部署与主从架构
  • 【linux内核】Linux内核的同步机制