RISC-V MCU 基于嵌入式的歌曲识别

目录

前言

一、主要技术算法

二、硬件部分

1.ES8388

2.LCD

3.FLASH

4.按键

三、软件部分

 四、实现过程

训练模板

识别歌曲



 全国嵌入式芯片与系统设计比赛

题目:基于嵌入式的歌曲识别

开发板:沁恒CH32V307

github:q986035044/SongRecgnition: 全国嵌入式比赛开源文件 (github.com)

前言

歌曲识别实际上是语音识别的一种。语音识别技术起始于上世纪 50 年代, 经过几十年的发展和不断完善,中小词汇量非特定人语音识别系统识别精度己经 达到 98%以上。这些技术己经能够满足通常应用的要求。

在应用研究方面,从实际需求出发,如用于 KTV 的歌曲检索系统,用于歌 曲旋律识别的音乐认证系统等,不断扩宽歌曲研究和应用的领域。而且也可以拓 展到如今的智能家居和车载智能交互系统上,帮助人们快速识别、检索所需要的 歌曲。


一、主要技术算法

  • 话音激活检测(VAD):其目的是检测当前语音信号中是否包含话音信号存在, 即对输入信号进行判断,将话音信号与各种背景噪声信号区分出来,分别对两种 信号采用不同的处理方法。
  • DTW 算法:即分配两个 N×M 的矩阵,分别为积累距离矩阵 D 和帧匹配距 离矩阵 d,其中帧匹配距离矩阵 d(i,j)的值为测试模板的第 i 帧与参考模板的 第 j 帧间的距离。D(N,M)即为最佳匹配路径所对应的匹配距离。
  • 梅尔频率倒谱:梅尔频率倒谱的频带划分是在梅尔刻度上等距划分的,它比 用于正常的对数倒频谱中的线性间隔的频带更能近似人类的听觉系统。这样的非 线性表示,可以在多个领域中使声音信号有更好的表示。

二、硬件部分

1.ES8388

使用CH32V307自带ES8388模块进行录入声音。

2.LCD

使用CH32V307自带LCD屏幕显示当前交互界面,可以显示识别成功的歌曲。

3.FLASH

使用FLASH存储每首歌曲的模板,进行歌曲识别时读取FLASH的模板进行比较。

4.按键

使用板载按键提供交互功能的实现,五向按键向下为模板训练,SW1按键为歌曲识别。

三、软件部分

  1. VAD 语音激活检测:录入一段连续语音时,会进行 VAD 语音激活检测来 检测语音静音片段。当有效语音较短时,VAD 即可检测到静音片段,提取 出一段连续语音中的有效部分。当一段语音全为静音时,经 VAD 检测则 认为该段语音为无效语音。

    void active_segment_detect( uint16_t *data , uint16_t d_len, vr_act_seg *act_seg, 
    vr_dtg_para *dtg_para);
    
  2. MFCC 参数计算: Mel 频率倒谱系数( Mel Frequency Cepstrum Coefficient,MFCC)的缩写。Mel 频率是基于人耳听觉特性提出来的,它与 Hz 频率成非线性对应关系。Mel 频率倒谱系数(MFCC)则是利用它们之间 的这种关系,计算得到的 Hz 频谱特征。经过 VAD 提取的有效语音进行 MFCC 参数计算,并存入 flash。

    void calc_mfcc_chara_para(vr_act_seg *act_seg, vr_chara_para *chara_para, 
    vr_dtg_para *dtg_para);

  3. DTW 匹配计算:Dynamic Time Warping,动态时间归整。语音识别中,最 为简单有效的方法是采用 DTW 算法,该算法基于动态规划(DP)的思想, 解决了发音长短不一的模板匹配问题,是语音识别中出现较早、较为经典 的一种算法。在歌曲识别过程中,每录入一段语音进行 MFCC 参数计算, 并遍历 flash 中的模板,进行 DTW 计算匹配,当匹配成功即在 LCD 屏幕 显示结果。

    uint32_t calc_chara_para_match_dis(vr_chara_para *chara_para_src, vr_chara_para 
    *chara_para_mdl);

 四、实现过程

训练模板

播放歌曲进行模板训练,当录入歌曲有效部分时,串口打印输出成功信息,串口打印输出 xxxx practice success,song3_part_III 为第三首歌的第 三个模板信息。当所有模板训练完成,串口打印输出 practice end。

识别歌曲

此歌曲存在模板之内,当播放该歌曲时,即可匹配识别成功并且将歌名显示 在 lcd 屏幕上。

 


总结

主要是利用了连续进行孤立词的录入和识别的技巧,简易实现了歌曲识别。

最后感谢沁恒提供了CH32V307开发板作为比赛使用,陶工和其他工作人员都很耐心帮解决问题。

2022 / 01/ 30: 新版esptool 刷micropython固件指令不是 esptool.py cmd... 而是 esptool cmd... 即可;另外rshell 在 >= python 3.10 的时候出错解决方法可以查看:  已于2022年发布的: 第二章:修复rshell在python3.10出错 免费内容: https://edu.csdn.net/course/detail/29666 micropython语法和python3一样,编写起来非常方便。如果你快速入门单片机玩物联网而且像轻松实现各种功能,那绝力推荐使用micropython。方便易懂易学。 同时如果你懂C语音,也可以用C写好函数并编译进micropython固件里然后进入micropython调用(非必须)。 能通过WIFI联网(2.1章),也能通过sim卡使用2G/3G/4G/5G联网(4.5章)。 为实现语音控制,本教程会教大家使用tensorflow利用神经网络训练自己的语音模型并应用。为实现通过网页控制,本教程会教大家linux(debian10 nginx->uwsgi->python3->postgresql)网站前后台入门。为记录单片机传输过来的数据, 本教程会教大家入门数据库。  本教程会通过通俗易懂的比喻来讲解各种原理与思路,并手把手编写程序来实现各项功能。 本教程micropython版本是 2019年6月发布的1.11; 更多内容请看视频列表。  学习这门课程之前你需要至少掌握: 1: python3基础(变量, 循环, 函数, 常用库, 常用方法)。 本视频使用到的零件与淘宝上大致价格:     1: 超声波传感器(3)     2: MAX9814麦克风放大模块(8)     3: DHT22(15)     4: LED(0.1)     5: 8路5V低电平触发继电器(12)     6: HX1838红外接收模块(2)     7:红外发射管(0.1),HX1838红外接收板(1)     other: 电表, 排线, 面包板(2)*2,ESP32(28)  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值