如何利用声纹识别短视频中的背景音乐名
【摘要】 如何利用声纹识别短视频中的背景音乐名 项目目标由于目前抖音,微视等短视频兴起,有些视频会使用小众歌曲作为背景音乐,小康就经常听到一些好听的背景音乐,但因为过去从未听过,总不能每次都靠歌词来搜索歌曲吧。如果能利用人工智能去识别就好了。下面将是利用声纹识别短视频中的背景音乐名的全部流程了。 环境准备1.能运行python的pycharm2.wav格式的歌曲素材3.mysql数据库(具体如何准备...
如何利用声纹识别短视频中的背景音乐名
项目目标
由于目前抖音,微视等短视频兴起,有些视频会使用小众歌曲作为背景音乐,小康就经常听到一些好听的背景音乐,但因为过去从未听过,总不能每次都靠歌词来搜索歌曲吧。如果能利用人工智能去识别就好了。下面将是利用声纹识别短视频中的背景音乐名的全部流程了。
环境准备
1.能运行python的pycharm
2.wav格式的歌曲素材
3.mysql数据库
(具体如何准备上述环境材料,小康就不多赘述啦,毕竟很多地方都有讲)
识别具体流程
1.语音识别的核心知识
def fft(self, frames=40):
block = []
fft_blocks = []
self.high_point = []
blocks_size = self.framerate // frames # block_size为每一块的frame数量
blocks_num = self.nframes / blocks_size # 将音频分块的数量
for i in range(0, len(self.wave_data[0]) - blocks_size, blocks_size):
block.append(self.wave_data[0][i:i + blocks_size])
fft_blocks.append(np.abs(np.fft.fft(self.wave_data[0][i:i + blocks_size])))
self.high_point.append((np.argmax(fft_blocks[-1][:40]),
np.argmax(fft_blocks[-1][40:80]) + 40,
np.argmax(fft_blocks[-1][80:120]) + 80,
np.argmax(fft_blocks[-1][120:180]) + 120,
# np.argmax(fft_blocks[-1][180:300]) + 180,
))
利用傅里叶变换,将音乐时域转化成频域,然后根据最大的振幅音频,来作为此音乐每40帧的特征值。
我们将此特征值记录下来,可以存到远程的mysql数据库:
v.loaddata(path)
v.fft()
cur.execute("insert into fingerprint VALUES('%s','%s')" % (basename, v.high_point.__str__()))
我们来看一下数据库的结构:
CREATE TABLE `fingerprint` (
`song_name` varchar(200) NOT NULL,
`fq` longtext
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
国庆了,就录入一首我和我的祖国庆祝一下呗。
最后我们用歌曲来进行识别测试:
下面附上我的全部代码,其中数据库部分小康将会在近日注销,想要研究可以自行设立数据库哈~
识别歌曲项目源代码:
链接:https://pan.baidu.com/s/1MWF0JUxEeUvBPc4Lk-8RaA?pwd=2zhy
提取码:2zhy
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)