本帖最后由 马黑黑 于 2025-11-19 12:50 编辑
关于 lrc2hc.js 模块提供的 lrc2HC() 函数:
lrc2HC() 函数在此前类似功能模块的基础之上使用统计学四分位数方法均衡原生lrc歌词时间信息中歌句演唱用时异常高值者,用此算法替原先换手动加入系数参数的均摊方案,以期获的更为接近预期的歌句真实演唱用时的效果。
关于统计学的分位数,指将一组有序数据划分为若干等分的数值点,这里以四分位数为例简单说明一下。先将原始有序数据按从小到大排序,然后将数据划分为四段,每段占 25%;设计三个数值点,Q1 为 25%,Q2 占 50%,Q3 占 25%,其中,Q1 对应第一段排序后的数据,Q2 对应第二、三段的数据,Q3 对应第四段数据。这样取得的数据有利于分析其分布特征和离散程度等有用信息,为处理数据比如数据中的异常低值和高值提供依据。
lrc歌词模拟逐字同步需要处理的是歌句演唱用时的异常高值,使用四分位数方法相对恰当:避免了复杂度并能获得较佳的效果。用四分位数处理歌句演唱用时过程中加入一些相关算法、做适当处理,在确保 75% 歌句使用原始差值的基础上,均衡一下异常高值用时的歌句,大体上比手动加入的系数相对可靠。当然,由于不是手动截取歌句的演示用时,不确定因素依然存在,lrc2HC() 函数不能确保歌词逐字同步的精准度,将就用用就好。
函数封装为ES6模块,像本帖公开的代码中导入模块然后应用函数即可。函数对原始lrc歌词的处理机制有一定的能力,但还是尽可能做些整理工作以减少函数处理环节的出错几率,建议使用 LRC歌词整理 过滤一下歌词。
|