首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

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

  •  
  •   kowen · 85 天前 · 2128 次点击
    这是一个创建于 85 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    我们当时组里有懂音乐的扒谱,把人声扒出来
    然后就是麦克风输入跟乐谱 notes 对比了
        15
    annoy1309   85 天前
    @masker 没学过礼仪?
        16
    masker   85 天前 via Android
    @annoy1309 哇塞,问你一句没去过 KTV 就是没礼貌了呀。那颗玻璃心哟
        17
    niubee1   85 天前
    @gaobh 我是唱吧和全民 K 歌深度用户, 本身唱功也还 OK,属于业余麦霸级别,根据我的使用体验这两基本是符合我对算法的描述的, 因为唱功还行, 所以有的擅长的歌可以非常贴近原唱,能看到实时的音高和基准音高的对比, 节奏和基准的对比,甚至可以故意调整唱的习惯去贴近基准去拿高分。 因为不是专业的所以状态不稳定, 所以录的时候经常出状况, 这种时候 20,30 都有可能, 比如有的时候伴唱的基准数据不对, 你唱得和原唱很贴近也拿不到高分。 这个是能观察出来的, 并非是来个随机值解决问题的。
        18
    murmur   85 天前
    你是要严格打分还是要放水打分?
    首先你得有所有的谱子
    然后你要能识别用户的升降调 升降 key 唱歌是允许的
    最后要在正确范围内放水 一个新用户一唱就五六十分你就是垃圾算法
        19
    murmur   85 天前
    可以试试任天堂的 joysound 他是 midi 歌曲 精确扒谱
        20
    akira   85 天前
    接受到唱歌的音频模拟信号,
    转换成数字信号,
    有数字了以后无非就是怎么和 标准 数字 做比较了呗
        21
    996icu   84 天前
    商业化的话分数就随机好了,客户大部分都是图个高兴,你识别完给人搞个 1 分,那不心态崩了
        22
    MikeFeng   84 天前
    唱歌还行的朋友肯定知道,KTV 的评分并不是随机数
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   828 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 20ms · UTC 21:39 · PVG 05:39 · LAX 14:39 · JFK 17:39
    ♥ Do have faith in what you're doing.