更改内容
本次更新已发布的内容
- 和声分析现在会比较大调与小调的调性模板。
- 分析结果现在可以直接返回小调。
- 排名靠前的候选结果现在包含调式、分数和置信度,便于排查相近结果。
- 基准测试脚本可以在未来发布调性检测改动前,测试已知调性的文件。
反馈足够具体,可以着手修复
一位用户喜欢分析器,但指出了实际问题:两首歌曲返回了错误的调性。这种反馈值得采取行动。如果和声部分判断错了调性,其余音乐建议就建立在不可靠的基础上。
旧方法过于粗略。它把chroma中最强的音高类别当作调性主音。这可能适用于简单素材,却忽略了明显的音乐差异:C大调与A小调使用相同的音高类别,但不会让人感觉是同一个调。
分析器有哪些改变
当前和声分析器现在会将chroma结果与大调、小调模板比较。它仍使用音轨的音频证据,但提出了更合适的问题:哪种调性和调式最能解释完整的音高类别模式?
- 大调与小调模板分别评分。
- 主音和五度音的支持有助于区分相近候选。
- 结果现在可以返回如下小调: Am.
- 排名靠前的候选包含调性、调式、分数和置信度,而不是简单的字符串列表。
这并不让调性检测成为完美的音乐学家。歌曲可能转调、使用借用和弦、保持某种调式或避免明确主音。这次改动使默认估计不再那么简单化,也更容易排查。
发布前如何测试
我们针对调性检测器和和声分析输出增加了专门的单元测试。还加入了用于已知调性音频文件的小型基准测试脚本,今后的调整可以通过文件夹或CSV检查,而不必逐个手动上传。
首次基础测试中,我们生成了覆盖全部12个主音的清晰大调与小调进行。内部检测器在24个受控案例中的24个都返回了预期调性。这证明新逻辑能处理基本的大调与小调区分,不代表所有真实歌曲都已解决。
为什么不立即全面改用大型外部引擎?
我们考察了开源调性检测工具。Essentia有较强的调性提取器,已经接入为受控测试的可选后端。但生产环境许可、打包和运行成本仍需审慎考虑,因此还未加入默认Web依赖。
默认路径保持小巧且可检查。这是本次版本合适的取舍:修复明确的错误类型,保持输出可排查,并在投入运行前,用真实歌曲比较更强的引擎。
结果可以期待什么
和声部分现在应能更好地区分关系大小调。如果歌曲明显是A小调,分析器无需仅因音高类别重合就将其简化为C。
如果结果看起来仍然有误,最有用的错误报告是确切的歌曲或报告,加上预期调性。这样可以比较检测调性、靠前候选、chroma证据与音乐上的特殊情况,而不是凭记忆猜测。
常见问题
这能保证每首歌曲的调性都正确吗?
不能。它改善默认估计,尤其是大小调歧义,但真实歌曲可能改变调性或避免稳定的主音。
你们验证了报告的那两首歌曲吗?
没有。修复期间无法取得对应文件。因此我们使用已知调性的受控音频验证检测器,并增加了针对已标注真实歌曲的基准测试路径。
Mix Analyzer会使用Essentia检测调性吗?
可能。可选后端已可测试,但默认版本会保留内部检测器,直到许可、打包和真实歌曲的基准结果足以支持切换。