python - 寻找两个不同人所说的两个音频信号之间的相似性
问题描述
我有一个 14 秒的 master.wav 文件和另一个 221 秒的 child.wav 文件,每个 14 秒分为总共 207 个块。现在我想将每个子块与主文件进行比较,并希望找到它们之间的相似性。假设是具有最高相似性的子块将包含主文件中所说的完全相同或某些相同的单词。我正在使用 pyaudioanalysis 库来提取 .wav 文件的特征(https://github.com/tyiannak/pyAudioAnalysis)
解决方案
您可以从每个块中提取嵌入向量并计算它们的余弦相似度(或其他距离度量,如果需要)。嵌入向量是一个固定维度的向量(它使您能够比较具有不同持续时间的语音样本),它总结了给定语音中的全局信息(例如,说话者身份)。可以使用为分布表示或说话人识别训练的编码器模块来提取嵌入向量。以下是一些流行的嵌入方法:
- i-vector:训练总结给定语音的分布模式
- 基于深度学习的嵌入(例如,x 向量):经过训练以包含说话人判别信息
这些方法对于比较说出不同句子(或单词)的语音样本很有用,因为它们通常针对与文本无关的说话人验证进行了优化。如果您没有任何可用于训练此类模型的大规模训练数据,幸运的是,有一些公开可用的预训练模型:
推荐阅读
- azure-devops - 如何通过 Azure DevOps REST API 获取分叉列表 - Forks - List
- registry - 如何将 HKEY_CURRENT_USER 与 HKEY_USERS 中的子键匹配
- sql - 从查询中执行命令
- html - 我如何摆脱 Form-Group Margin-Left
- .net - 在后台运行的 Fiddler 修复了访问令牌的 HttpPost。也在邮递员工作
- xampp - 脚本头过早结束
- python - 如何使用 pandas 优化此值分配
- java - 加密对象 | 指纹识别和认证
- java - 遍历地图而不是列表
- r - 分层抽样模拟人口分布