位置: 编程技术 - 正文

python利用不到一百行代码实现一个小siri(python不能用)

编辑:rootadmin

推荐整理分享python利用不到一百行代码实现一个小siri(python不能用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python没有用,python不能用numpy,python不能用numpy,python bunch,python bunch,python不能用,python不能用,python不能用numpy,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

如果想要容易理解核心的特征计算的话建议先去看看我之前的听歌识曲的文章,传送门: Time Warping,动态时间归整。算法解决的问题是将不同发音长短和位置进行最适合的匹配。

算法输入两组音频的特征向量: A:[fp1,fp2,fp3,......,fpM1] B:[fp1,fp2,fp3,fp4,.....fpM2]A组共有M1个特征,B组共有M2个音频。每个特征向量中的元素就是之前我们将每秒切成块之后FFT求模长的向量。计算每对fp之间的代价采用的是欧氏距离。

设D(fpa,fpb)为两个特征的距离代价。

那么我们可以画出下面这样的图

我们需要从(1,1)点走到(M1,M2)点,这会有很多种走法,而每种走法就是一种两个音频位置匹配的方式。但我们的目标是走的总过程中代价最小,这样可以保证这种对齐方式是使我们得到最接近的对齐方式。

python利用不到一百行代码实现一个小siri(python不能用)

我们这样走:首先两个坐标轴上的各个点都是可以直接计算累加代价和求出的。然后对于中间的点来说D(i,j) = Min{D(i-1,j)+D(fpi,fpj) , D(i,j-1)+D(fpi,fpj) , D(i-1,j-1) + 2 * D(fpi,fpj)}

为什么由(i-1,j-1)直接走到(i,j)这个点需要加上两倍的代价呢?因为别人走正方形的两个直角边,它走的是正方形的对角线啊

按照这个原理选择,一直算到D(M1,M2),这就是两个音频的距离。

源代码和注释

事先可以先用这里的record方法录制几段命令词,尝试用不同语气说,不同节奏说,这样可以提高准确度。然后设计好文件名,根据匹配到的最接近音频的文件名就可以知道是哪种命令,进而自定义执行不同的任务

这是一段演示视频:

python中异常捕获方法详解 在Python中处理异常使用的是try-except代码块,try-except代码块放入让python执行的操作,同时告诉python程序如果发生了异常该怎么办,try-except这个功能其实

详解python中requirements.txt的一切 简介Python项目中必须包含一个requirements.txt文件,用于记录所有依赖包及其精确的版本号。以便新环境部署。主要的写法如下所示pipfreezerequirements.txt#生

python开发简易版在线音乐播放器 在线音乐播放器,使用python的Tkinter库做了一个界面,感觉这个库使用起来还是挺方便的,音乐的数据来自网易云音乐的一个接口,通过urllib.urlopen模块

本文链接地址:https://www.jiuchutong.com/biancheng/378644.html 转载请保留说明!

上一篇:Python单例模式实例详解(单例类python)

下一篇:python中异常捕获方法详解(python 异常捕获)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络