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

咨询下大佬们,如何实现用户唱歌后打分的功能呢?

  •  
  •   alifri · 2019-03-24 11:37:17 +08:00 · 5645 次点击
    这是一个创建于 2071 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    之前听说有个 ACRCloud,是否有其他方案呢?

    20 条回复    2019-06-21 10:13:32 +08:00
    oott123
        1
    oott123  
       2019-03-24 11:56:07 +08:00 via Android   ❤️ 12
    生成一个 90~100 的随机数→_→
    shiji
        2
    shiji  
       2019-03-24 12:01:24 +08:00 via iPad
    我猜的
    人声 - 音调 - mod 12 个半音(每个八度) 然后比较
    sobigfish
        3
    sobigfish  
       2019-03-24 12:12:40 +08:00
    音高 节拍 的比对?
    winterbells
        4
    winterbells  
       2019-03-24 12:13:18 +08:00 via Android
    比较波形?
    honeycomb
        6
    honeycomb  
       2019-03-24 13:14:43 +08:00 via Android
    日本有个唱卡拉 OK 的节目,其中的打分差不多就是靠判断音准,检测一下颤音这些依据来实现的
    so898
        7
    so898  
       2019-03-24 14:08:34 +08:00
    早年做 KTV 点歌系统的时候搞过这个功能
    记得当时看了快一个月各种论文……
    现在完全回忆不起来是咋做的了……
    mamahaha
        8
    mamahaha  
       2019-03-24 14:18:35 +08:00
    原理应该不复杂,无非就是比对波形上的采样点,不过就算你知道原理也很难做出来。
    alifri
        9
    alifri  
    OP
       2019-03-24 14:22:41 +08:00
    @sobigfish 谢谢大佬。

    谢谢各位回复,我是希望能找到现成能用的 sdk 或者开源库哈~
    KevZhi
        10
    KevZhi  
       2019-03-24 14:39:19 +08:00 via iPhone
    然而并没有,可以找一个音高识别的模块,将用户声音识别为音高,然后音高与每首歌的预置数据比较
    之前写了个作业,比较简单和这个相关的。你可以参考一下
    https://github.com/KevZhi/SingScoring
    KevZhi
        11
    KevZhi  
       2019-03-24 14:42:32 +08:00 via iPhone
    音高识别原理就是 FFT 而已,没多神秘,只是做好做精确很难
    hakono
        12
    hakono  
       2019-03-24 14:46:25 +08:00 via Android
    关于随机生成分数这点,可以同时开发个点赞或者好友评价系统
    结合好友评价点赞数量大致判断唱歌者的水平,然后随机生成 60 到 100 不同区间的随机数。。。。。。。。。。。
    cshlxm
        13
    cshlxm  
       2019-03-24 20:19:48 +08:00
    把音频数据转到频域去分析
    reticentfat
        14
    reticentfat  
       2019-03-24 20:38:35 +08:00 via iPhone
    和基准计算方差?
    murmur
        15
    murmur  
       2019-03-25 08:07:10 +08:00
    想多了 这绝对不是一个程序员搞得定的
    首先是曲库的打谱,这个你就做不出来,而且现在越来越多的歌有男女对唱、还有说唱部分,日本的 ktv 就是把所有的歌都做成 midi,然后说唱部分单独标注出来不计分

    然后这是个娱乐功能,娱乐功能就是及格容易刷分难,你怎么设计个评分标准呢

    最后,识别音高容易,但是能做到绝对音准的人不多,很多人都是相对音准,一首 F 调的歌,你完整的用 C 调唱下来,也不应该算有问题,按很多人理解的算法这整首歌都是跑调,但实际上整首歌都是降调唱法

    所以问题就来了,别人张嘴开唱了,你识别出他唱的什么调需要多久?
    richieboy
        16
    richieboy  
       2019-03-25 09:19:53 +08:00
    又不是清唱,调当然跟着伴奏走啊,你任性降调就是不在调上,哪怕你在线下比赛也是这样,要不怎么歌手要和乐队说起 key 呢
    darknoll
        17
    darknoll  
       2019-03-25 12:47:01 +08:00
    机器打分多不靠谱
    weixiangzhe
        18
    weixiangzhe  
       2019-03-25 13:01:25 +08:00 via iPhone
    原来家里 dvd 喉的声音越大分越高,
    kowen
        19
    kowen  
       2019-06-21 10:05:30 +08:00
    github 发现一个安卓的 k 歌打分 demo,感觉打分效果还不错,可以参考一下,github 项目名是 SingRate
    kowen
        20
    kowen  
       2019-06-21 10:13:32 +08:00
    发现一个 k 歌评分 sdk,www_traaax_com,把 _ 换成 . 才能访问。V2EX 评论不让发 url,奇了个怪
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   907 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:00 · PVG 06:00 · LAX 14:00 · JFK 17:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.