有没有大神知道,怎样实现卡拉 ok 唱歌打分的功能呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
kowen
V2EX    程序员

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

  •  
  •   kowen 2019-06-24 11:50:44 +08:00 4790 次点击
    这是一个创建于 2332 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    我们当时组里有懂音乐的扒谱,把人声扒出来
    然后就是麦克风输入跟乐谱 notes 对比了
    annoy1309
        15
    annoy1309  
       2019-06-24 19:46:01 +08:00
    @masker 没学过礼仪?
    masker
        16
    masker  
       2019-06-24 19:50:31 +08:00 via Android
    @annoy1309 哇塞,问你一句没去过 KTV 就是没礼貌了呀。那颗玻璃心哟
    niubee1
        17
    niubee1  
       2019-06-24 20:43:49 +08:00
    @gaobh 我是唱吧和全民 K 歌深度用户, 本身唱功也还 OK,属于业余麦霸级别,根据我的使用体验这两基本是符合我对算法的描述的, 因为唱功还行, 所以有的擅长的歌可以非常贴近原唱,能看到实时的音高和基准音高的对比, 节奏和基准的对比,甚至可以故意调整唱的习惯去贴近基准去拿高分。 因为不是专业的所以状态不稳定, 所以录的时候经常出状况, 这种时候 20,30 都有可能, 比如有的时候伴唱的基准数据不对, 你唱得和原唱很贴近也拿不到高分。 这个是能观察出来的, 并非是来个随机值解决问题的。
    murmur
        18
    murmur  
       2019-06-24 21:11:22 +08:00
    你是要严格打分还是要放水打分?
    首先你得有所有的谱子
    然后你要能识别用户的升降调 升降 key 唱歌是允许的
    最后要在正确范围内放水 一个新用户一唱就五六十分你就是垃圾算法
    murmur
        19
    murmur  
       2019-06-24 21:12:01 +08:00
    可以试试任天堂的 joysound 他是 midi 歌曲 精确扒谱
    akira
        20
    akira  
       2019-06-24 21:48:52 +08:00
    接受到唱歌的音频模拟信号,
    转换成数字信号,
    有数字了以后无非就是怎么和 标准 数字 做比较了呗
    996icu
        21
    996icu  
       2019-06-25 08:57:43 +08:00
    商业化的话分数就随机好了,客户大部分都是图个高兴,你识别完给人搞个 1 分,那不心态崩了
    MikeFeng
        22
    MikeFeng  
       2019-06-25 09:42:57 +08:00
    唱歌还行的朋友肯定知道,KTV 的评分并不是随机数
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5729 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 01:54 PVG 09:54 LAX 17:54 JFK 20:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86