如何利用声纹识别短视频中的背景音乐名

举报
小康不会AI 发表于 2022/10/04 15:44:52 2022/10/04
【摘要】 如何利用声纹识别短视频中的背景音乐名 项目目标由于目前抖音,微视等短视频兴起,有些视频会使用小众歌曲作为背景音乐,小康就经常听到一些好听的背景音乐,但因为过去从未听过,总不能每次都靠歌词来搜索歌曲吧。如果能利用人工智能去识别就好了。下面将是利用声纹识别短视频中的背景音乐名的全部流程了。 环境准备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;

image.png
国庆了,就录入一首我和我的祖国庆祝一下呗。
image.png


最后我们用歌曲来进行识别测试:
image.png


image.png
下面附上我的全部代码,其中数据库部分小康将会在近日注销,想要研究可以自行设立数据库哈~
识别歌曲项目源代码:
链接:https://pan.baidu.com/s/1MWF0JUxEeUvBPc4Lk-8RaA?pwd=2zhy
提取码:2zhy

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。