KTV评分系统实现总结

    KTV唱歌评分系统也不是什么新产品了,但是要把它做好,也不是很容易的事情。

比较有名的浙江卫视的评分软件、手机软件“唱吧”、网页端在线“爱吼网”、酷我提供了K歌,但还没有评分功能。

      刚开始接手项目时,初步制定三个月完成一个demo。

两个月过去了,一切还比较顺利,KTV评分算法和整个框架总算是初步完成了。

自己将这个项目分为五个阶段,类似的,开发其它产品基本上也是这个套路。

1.第一阶段:

    预调研,分析国内外该产品的现状。

    算法调研,多看看论文,分析总结吸收其中的优秀做法。

    matlab仿真各个模块算法效果

2.第二阶段:

    将功能型模块算法改成C代码,封装成dll

3.第三阶段:

    完成软件框架的设计,梳理各个模块之间的逻辑关系,将功能性模块嵌入其中。

4.第四阶段:

    调试查找这个软件的bug。

5.第五阶段:

    优化算法性能,减小搜索范围和内存,提高用户的体验感。

 

带上韵律图

 

针对KTV评分系统。

核心模块:

    从歌曲中提取出人声

    节奏、音调等旋律特征提取

    音乐的节奏是指音乐运动中音的长短和强弱。音乐的节奏常被比喻为音乐家的骨架。节拍是音乐中的重拍和弱拍周期性地有规律地重复进行。我国传统音乐称节拍为“板眼”,“板”相当于强拍,“眼”相当于强拍(中眼)或弱拍。

    旋律(Melody)指经过艺术构思而形成的若干乐音的有组织、有节奏的和谐运动。它建立在一定的调式和节拍的基础上,按一定的音高、时值和音量构成的、具有逻辑因素的单声部进行。亦称曲调。它可以是单声部音乐的整体,也可以是多声部音乐的主要声部。在音乐作品中,曲调是表情达意的主要手段,也是一种反映人们内心感受的艺术语言。通常认为,曲调是音乐的灵魂和基础。

    模型匹配算法

 

外围模块:

    常见语音和音频读写等其它处理模块

    底层录音和播放功能模块

    歌词解析和显示、同步调整模块

    实时显示wav波形模块

    各个模块之间逻辑关系

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
以下是KTV系统C#实现的一些关键点: 1. SongPlayState枚举类型定义了曲的播放状态,包括未播放、播放、重播和切。 2. Song类包含了曲的名称、手、时长、播放状态等属性,以及一些方法,如播放、暂停、停止等。 3. KTV系统需要与数据库进行交互,可以使用ADO.NET技术实现。可以使用SqlConnection类连接数据库,使用SqlCommand类执行SQL语句,使用SqlDataReader类读取查询结果等。 4. KTV系统需要有一个用户界面,可以使用Windows窗体应用程序实现。可以使用Visual Studio等开发工具进行开发,使用C#语言编写代码。 下面是一个简单的KTV系统C#实现的例子: ```csharp // SongPlayState枚举类型定义 public enum SongPlayState { unplayed, // 未播放 played, // 播放 again, // 重播 cut // 切 } // Song类定义 public class Song { public string SongName { get; set; } // 曲名称 public string Singer { get; set; } // 手 public int Duration { get; set; } // 时长(秒) public SongPlayState PlayState { get; set; } // 播放状态 public void Play() { // 播放曲 } public void Pause() { // 暂停曲 } public void Stop() { // 停止曲 } } // 数据库交互示例 SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=KTV;Integrated Security=True"); conn.Open(); SqlCommand cmd = new SqlCommand("SELECT * FROM Song", conn); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { string songName = reader.GetString(0); string singer = reader.GetString(1); int duration = reader.GetInt32(2); // ... } reader.Close(); cmd.Dispose(); conn.Close(); // 窗体应用程序示例 public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private void btnPlay_Click(object sender, EventArgs e) { // 播放曲 } private void btnPause_Click(object sender, EventArgs e) { // 暂停曲 } private void btnStop_Click(object sender, EventArgs e) { // 停止曲 } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值