有没有大神知道,怎样实现卡拉 ok 唱歌打分的功能呢?

2019-06-24 11:50:44 +08:00
 kowen

类似全民 K 歌里,用户唱完后会打出一个分数。有没有音视频相关的大神,有没有什么 sdk 或开源库推荐呢?多谢!

之前听说有个 k 歌云 traaax.com ,是否还有其他方案呢?

4200 次点击
所在节点    程序员
22 条回复
annoy1309
2019-06-24 12:28:36 +08:00
如果你是搞学术,等楼下回复
如果是搞产品,根据人气加权,根据礼物加权,加点新用户权重啊,加点实名用户权重啊,简单判断唱了没,然后返回一个 90-99 的伪随机结果就行了,肯定比用 sdk 强
客户唱的不行,你返回个 40 分,你这产品用户就全流失了
lzj307077687
2019-06-24 13:49:55 +08:00
@annoy1309 #1 这个我认为看使用场景
像卡拉 OK 这种同一批用户在同一段时间内重复使用该功能的情况下
很容易就能察觉到返回的是随机数 这个功能我觉得要有出现低分的情况 不过可以人为的控制下限
如果像是那种刷脸测相似度的小游戏,一般只会玩一次图个乐的话倒是可以给随机数
jiejiss
2019-06-24 13:58:22 +08:00
傅里叶
moodasmood
2019-06-24 14:00:53 +08:00
卧槽,我觉得一楼很有道理
opengps
2019-06-24 16:36:58 +08:00
我也觉得是随机数
tankren
2019-06-24 16:39:36 +08:00
@annoy1309 每唱一句都打分的咋整?
jinliming2
2019-06-24 16:54:15 +08:00
@annoy1309 如果全程都没唱,或者唱了一半累了后面一半没唱,你还给打高分的话,那肯定就是有问题了
janxin
2019-06-24 16:58:35 +08:00
1. 通过所述麦克采 集用户声音模拟信号;
2. 将所述用户声音模拟信号转换成用户声音数字信号;
3. 计算所述用户声音数字信号和原唱声音数字信号的差值;
4. 根据所述差值计算分数;
shawndev
2019-06-24 16:59:15 +08:00
李永乐有一期短视频讲傅立叶变换。从时域转换为频域,然后比较重合的百分比。
niubee1
2019-06-24 17:10:41 +08:00
两个维度, 一个是音准,一个是节奏。 你唱的部分作为输入,通过一定的采样率获取声音的频率(音高)。歌曲根据曲谱按照同样的采样率生成基准数据。然后把两组数据一对比就能计算分数了, 比如按照每 500ms 采样一次,0 表示停顿(就是不唱),基准数据是 0000CCCCGGGGAAAAGGGG, 输入数据是 00CCCCGGGGAAA-A-GGGG, 那么一对比就发现, 抢拍了一秒, 然后有个音唱低了半度跑调了。那么简单的话, 只需要对比两组数字的相似率就行了,80%的相似率就是 80 分。复杂一点的算法就是分段后,进行对齐, 如果需要对齐就是抢拍了, 按照一个规则规定抢拍的或者拖拍的扣多少分一次, 然后再每一段算音准的相似度。
annoy1309
2019-06-24 18:55:24 +08:00
@jinliming2 你肯定没看仔细,我有一句 [简单判断用户是否唱歌了] 当然我这些都是嘴上说说,具体要看产品经理怎么要求了
gaobh
2019-06-24 19:00:36 +08:00
商业产品和 1 楼差不多,学术就参考 10 楼
masker
2019-06-24 19:14:28 +08:00
@annoy1309 没去过 KTV ?
ETiV
2019-06-24 19:17:26 +08:00
#10 +1

我们当时组里有懂音乐的扒谱,把人声扒出来
然后就是麦克风输入跟乐谱 notes 对比了
annoy1309
2019-06-24 19:46:01 +08:00
@masker 没学过礼仪?
masker
2019-06-24 19:50:31 +08:00
@annoy1309 哇塞,问你一句没去过 KTV 就是没礼貌了呀。那颗玻璃心哟
niubee1
2019-06-24 20:43:49 +08:00
@gaobh 我是唱吧和全民 K 歌深度用户, 本身唱功也还 OK,属于业余麦霸级别,根据我的使用体验这两基本是符合我对算法的描述的, 因为唱功还行, 所以有的擅长的歌可以非常贴近原唱,能看到实时的音高和基准音高的对比, 节奏和基准的对比,甚至可以故意调整唱的习惯去贴近基准去拿高分。 因为不是专业的所以状态不稳定, 所以录的时候经常出状况, 这种时候 20,30 都有可能, 比如有的时候伴唱的基准数据不对, 你唱得和原唱很贴近也拿不到高分。 这个是能观察出来的, 并非是来个随机值解决问题的。
murmur
2019-06-24 21:11:22 +08:00
你是要严格打分还是要放水打分?
首先你得有所有的谱子
然后你要能识别用户的升降调 升降 key 唱歌是允许的
最后要在正确范围内放水 一个新用户一唱就五六十分你就是垃圾算法
murmur
2019-06-24 21:12:01 +08:00
可以试试任天堂的 joysound 他是 midi 歌曲 精确扒谱
akira
2019-06-24 21:48:52 +08:00
接受到唱歌的音频模拟信号,
转换成数字信号,
有数字了以后无非就是怎么和 标准 数字 做比较了呗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/576861

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX